ডিপ্লয়মেন্ট সংক্রান্ত সমস্যা কনফিগারেশন করা যায়নি

আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন দেখুন।
তথ্য

সমস্যার উপসর্গ

Edge UI বা ম্যানেজমেন্ট API-এর মাধ্যমে API প্রক্সি বা শেয়ার করা ফ্লো রিভিশন ডেপ্লয় করা গেলে কনফিগারেশন ব্যর্থ হয়েছে সমস্যা হয়।

ত্রুটি বার্তা

আপনি Edge UI-তে নিচে দেখানো সমস্যার মেসেজটি দেখতে পাবেন:

The revision is deployed, but traffic cannot flow.
com.apigee.kernel.exceptions.spi.UncheckedException{ code = application.bootstrap.FailedToConfigure, message = Configuration failed, associated contexts = []}

Edge UI-তে দেখা গেছে এমন একটি সমস্যার মেসেজের নমুনা স্ক্রিনশট এখানে দেওয়া হল:

সম্ভাব্য কারণ

বিভিন্ন কারণে "কনফিগারেশন করা যায়নি" সমস্যার মেসেজ সহ API প্রক্সি ডেপ্লয়মেন্ট ব্যর্থ হতে পারে। নিচের সারণীতে এই সমস্যার কিছু সাধারণ কারণ উল্লেখ করা হল :

কারণ বিবরণ সমস্যা সমাধানের নির্দেশাবলী এগুলির জন্য প্রযোজ্য
JavaCallout নীতিতে Java ক্লাস নেই JavaCallout নীতি দ্বারা রেফারেন্স করা JAR ফাইলে একটি Java ক্লাস নেই। Edge Private Cloud ব্যবহারকারী
কন্ডিশন ফ্লোতে কন্ডিশনে ভুল অপার‍্যান্ড ব্যবহার করা হয়েছে কন্ডিশনে অপারেটরের এক বা উভয় দিকে ব্যবহৃত অপার‍্যান্ড/এক্সপ্রেশন সঠিক নয়।
মেসেজ লগিং নীতিতে ভুল হোস্টনেম MessageLogging নীতিতে ব্যবহৃত হোস্টনেম রিসলভ করা যাচ্ছে না বা এতে কিছু অবাঞ্ছিত বিশেষ অক্ষর থাকতে পারে।
KeyValueMap-এর ভুল নাম API প্রক্সিতে KeyValueMapOperations নীতিতে KeyValueMap ভুল বা খালি আছে।

সমস্যার সমাধান সংক্রান্ত সাধারণ ধাপ

  1. আপনি যে API প্রক্সিটির জন্য ডিপ্লয়মেন্ট সংক্রান্ত সমস্যা লক্ষ্য করছেন, নিচে উল্লেখ করা API ব্যবহার করে সেটির নির্দিষ্ট রিভিশনের ডিপ্লয়মেন্ট স্ট্যাটাস পান:

    curl -v <management-server-host>:<port#>/v1/runtime/organizations/<org-name>/environments/<env-name>/apis/<apiproxy-name>/revisions/deployments -u <user>
    
  2. উপরের API থেকে পাওয়া আউটপুটের একটি উদাহরণ এখানে দেওয়া হল;

    "server" : [ { 
    "error" : "com.apigee.kernel.exceptions.spi.UncheckedException{ code = application.bootstrap.FailedToConfigure, message = Configuration failed, associated contexts = []}", 
    "status" : "error", 
    "type" : [ "message-processor" ], 
    "uUID" : "0a20926c-f4bf-401b-af84-05fd84b9f492" 
    }, { 
    "error" : "com.apigee.kernel.exceptions.spi.UncheckedException{ code = application.bootstrap.FailedToConfigure, message = Configuration failed, associated contexts = []}", 
    "status" : "error", 
    "type" : [ "message-processor" ], 
    "uUID" : "f2ee6ab4-a108-4465-a7ba-b56530d8e3fc" 
    }, { 
    "error" : "com.apigee.kernel.exceptions.spi.UncheckedException{ code = application.bootstrap.FailedToConfigure, message = Configuration failed, associated contexts = []}", 
    "status" : "error", 
    "type" : [ "message-processor" ], 
    "uUID" : "0f41991e-b310-4e77-aac5-5fdb150ef9f6" 
    },
    
  3. আপনি ডিপ্লয়মেন্ট স্ট্যাটাস আউটপুটে প্রতিটি মেসেজ প্রসেসরের মধ্যে "কনফিগারেশন করা যায়নি" সমস্যার মেসেজ দেখতে পাবেন।

  4. মেসেজ প্রসেসরগুলির মধ্যে একটিতে লগ-ইন করুন এবং লগ /opt/apigee/var/log/edge-message-processor/logs/system.log চেক করুন। API প্রক্সি ডেপ্লয় করার সময় কোনও সমস্যা হয়েছে কিনা দেখুন।

  5. মেসেজ প্রসেসর লগে দেখা ত্রুটি/ব্যতিক্রমের উপর নির্ভর করে, আপনাকে সমস্যার জন্য উপযুক্ত সমস্যা সমাধানের ধাপ ও সমাধান অনুসরণ করতে হবে।

  6. নিচের বিভাগে, প্রায়শই দেখা যায় এমন কিছু ব্যতিক্রম দেওয়া আছে যেগুলি "কনফিগারেশন করা যায়নি" ডিপ্লয়মেন্ট সংক্রান্ত সমস্যার কারণ হয় এবং সেগুলি সমাধান করার জন্য ধাপ দেওয়া আছে।

কারণ: JavaCallout নীতিতে Java ক্লাস নেই

ডায়াগনসিস

  1. নিচে দেখানো API প্রক্সি (DeployEvent) ডিপ্লয় করার সময় মেসেজ প্রসেসর লগে, "Failed to instantiate the JavaCallout Class" মেসেজ সহ কোনও ব্যতিক্রম দেখতে পেলে, ধাপ #২-এ যান। না হলে, কন্ডিশন ফ্লোতে কন্ডিশনে ভুল অপারেটর ব্যবহার করা হয়েছে বিকল্পে যান।
  2. API প্রক্সি ডিপ্লয় করার সময় মেসেজ প্রসেসর নিম্নলিখিত ব্যতিক্রম দেখায়:

    2017-10-10 05:02:42,330 Apigee-Main-5 ERROR MESSAGING.CONFIGURATION - MessageProcessorServiceImpl.configure() : error configuring config events [DeployEvent{organization='myorg', application='oauth2', applicationRevision='14', deploymentSpec=basepath=/;env=dev;, deploymentID=null}] 
    com.apigee.kernel.exceptions.spi.UncheckedException: Failed to instantiate the JavaCallout Class com.something.apigee.callout.crypto.main.SecretCallout 
    at com.apigee.steps.javacallout.JavaCalloutStepDefinition.newInstance(JavaCalloutStepDefinition.java:89) ~[javacallout-1.0.0.jar:na] 
    at com.apigee.messaging.runtime.StepDefinition.getStepDefinitionExecution(StepDefinition.java:230) ~[message-processor-1.0.0.jar:na] 
    …
    <snipped>
    
  3. উপরের ব্যতিক্রমের ত্রুটি মেসেজ থেকে বোঝা যায় যে JavaCallout ক্লাস com.something.apigee.callout.crypto.main.SecretCallout ইনস্ট্যানশিয়েট করা যায়নি। JavaCallout নীতিতে নির্দিষ্ট করা JAR ফাইল বা এর কোনও নির্ভরশীল JAR ফাইলে নির্দিষ্ট ক্লাস উপলভ্য না থাকলে সাধারণত এই সমস্যা হয়।

  4. প্যাকেজ com.something.apigee.callout.crypto.main সম্পর্কিত সব ক্লাস আছে এমন JAR ফাইল চেক করুন এবং নিশ্চিত করুন যে নির্দিষ্ট ক্লাস com.something.apigee.callout.crypto.main.SecretCallout অনুপস্থিত।

রেজোলিউশন

  1. নির্দিষ্ট JAR ফাইলে বাদ পড়ে যাওয়া ক্লাস যোগ করুন এবং JAR ফাইল আপলোড করুন।
  2. API প্রক্সি আবার ডেপ্লয় করুন।
  3. উপরের উদাহরণে, আমরা এগুলির মাধ্যমে সমস্যার সমাধান করেছি:
    1. JAR ফাইলে অনুপস্থিত ক্লাস com.something.apigee.callout.crypto.main.SecretCallout যোগ করা।
    2. আপডেট করা JAR ফাইল আপলোড করা এবং API প্রক্সি আবার ডেপ্লয় করা।

কারণ: কন্ডিশন ফ্লোতে অপারেটরের সাথে ভুল অপার‍্যান্ড ব্যবহার করা হয়েছে

ডায়াগনসিস

  1. নিচে দেওয়া উদাহরণ মেসেজে দেখানো API প্রক্সি বা শেয়ার করা ফ্লো ডেপ্লয় করার সময় মেসেজ প্রসেসর লগে com.apigee.expressions.parser.ParseException দেখতে পেলে, ধাপ #২-এ যান। তা না হলে, মেসেজ লগিং নীতিতে ভুল হোস্টনেম সংক্রান্ত পরবর্তী কারণে যান।

    সমস্যার মেসেজের উদাহরণ

    com.apigee.expressions.parser.ParseException: Both the operands for EQUALS expression should be data expressions
    
    
  2. এই সমস্যা কীভাবে নির্ণয় করতে হয় তা বুঝতে একটি উদাহরণ দেখা যাক।

    উদাহরণ : <Operator> এক্সপ্রেশনের জন্য অপার‍্যান্ড ডেটা এক্সপ্রেশন হতে হবে

  3. শেয়ার করা ফ্লো ডিপ্লয় করার সময় মেসেজ প্রসেসর নিম্নলিখিত ব্যতিক্রম দেখায়:

    2017-11-23 09:11:04,498  Apigee-Main-6 ERROR MESSAGING.RUNTIME - AbstractConfigurator.loadXMLConfigurations() : Unable to Load default for path /organizations/myorg/apiproxies/Introspection/revisions/12/sharedflows/default
    2017-11-23 09:11:04,499  Apigee-Main-6 ERROR MESSAGING.RUNTIME - Application.sync() :  sync error for Introspection and revision 12
    2017-11-23 09:11:04,499  Apigee-Main-6 ERROR MESSAGING.RUNTIME - Application.sync() :  Actual Error
    com.apigee.expressions.parser.ParseException: Both the operands for EQUALS expression should be data expressions
        at com.apigee.expressions.parser.ExpressionParser.buildExpressionTree(ExpressionParser.java:337) ~[expressions-1.0.0.jar:na]
        at com.apigee.expressions.parser.ExpressionParser.parse(ExpressionParser.java:24) ~[expressions-1.0.0.jar:na]
        at com.apigee.expressions.parser.ExpressionParser.parseLogicExpression(ExpressionParser.java:28) ~[expressions-1.0.0.jar:na]
        at com.apigee.messaging.runtime.Step.getExpression(Step.java:67) ~[message-processor-1.0.0.jar:na]
        at com.apigee.messaging.runtime.Step.handleAdd(Step.java:58) ~[message-processor-1.0.0.jar:na]
        at com.apigee.messaging.runtime.SharedFlowRuntime.addStep(SharedFlowRuntime.java:81) ~[message-processor-1.0.0.jar:na] … <snipped>
    
  4. ParseException-এ থাকা সমস্যার মেসেজ - "Both the operands for EQUALS expression should be data expressions" থেকে বোঝা যায় যে সমান (=), সমান নয় (!=) বা (=|) অপারেটর সহ Stats-এর কোনও কন্ডিশনে সমস্যা রয়েছে।

  5. সমস্যার মেসেজে উল্লেখ করা নির্দিষ্ট অপারেটরকে নিয়ে তৈরি সব কন্ডিশন ফ্লোতে কন্ডিশনগুলি দেখুন এবং নিম্নলিখিত সমস্যাগুলির মধ্যে কোনওটি আছে কিনা দেখুন:

    1. অপারেটরের দু'দিকে থাকা এক্সপ্রেশন একই ধরনের। যেমন, অপারেটরের বাঁদিকে কোনও স্ট্রিং ভেরিয়েবল থাকলে, ডানদিকেও কোনও স্ট্রিং ভেরিয়েবল বা স্ট্রিং ভ্যালু থাকতে হবে।
    2. অপারেটরদের মধ্যে সঠিক ভেরিয়েবল ব্যবহার করা হয়।
    3. অপারেটর ও প্রতিটি এক্সপ্রেশনের মধ্যে একটি স্পেস থাকে।

  6. উপরে উল্লেখ করা কোনও শর্ত পূরণ না হলে, আপনি ParseException - "Both the operands for EQUALS expression should be data expressions" পাবেন।

  7. এই সমস্যাটি বোঝার জন্য একটি উদাহরণ দেখা যাক। এখানে একটি নমুনা সমস্যার অবস্থা দেওয়া হল যা

    <Condition>
               (fault.name = "invalid_access_token") or(fault.name = "ApiKeyNotApproved")
    </Condition>
    
  8. এই উদাহরণে, আপনি দেখতে পাবেন যে "or" অপারেটর এবং তারপরে পরবর্তী শর্তের মধ্যে কোনও স্পেস নেই। তাই, দ্বিতীয় কন্ডিশন পার্স করার সময়, EQUALS অপারেটরের জন্য প্রথম এক্সপ্রেশনকে "or(fault.name" হিসেবে ধরা হয়। এটি সঠিক ভেরিয়েবেল নাম নয়, তাই এটিকে সঠিক ডেটা এক্সপ্রেশন হিসেবে বিবেচনা করা হয় না। এর ফলে আপনি এই ব্যতিক্রম পাবেন:

    com.apigee.expressions.parser.ParseException: Both the operands for EQUALS expression should be data expressions
    
    

রেজোলিউশন

  1. অপারেটরের দুই দিকেই যেন সবসময় সঠিক ডেটা এক্সপ্রেশন থাকে তা নিশ্চিত করুন।
  2. উপরে আলোচনা করা উদাহরণে, কোড স্নিপেটে যেভাবে বর্ণনা করা হয়েছে, সেই অনুযায়ী "or" অপারেটরের পরে স্পেস আছে কিনা তা নিশ্চিত করার মাধ্যমে সমস্যার সমাধান করা হয়েছে:

    <Condition>
               (fault.name = "invalid_access_token") or (fault.name = "ApiKeyNotApproved")
    </Condition>
    
    

MessageLogging নীতিতে ভুল হোস্ট নেম

ডায়াগনসিস

  1. নিচে দেখানো API প্রক্সি বা শেয়ার করা ফ্লো ডিপ্লয় করার সময় মেসেজ প্রসেসর লগে "ভুল হোস্টনেম" সহ কোনও ব্যতিক্রম দেখতে পেলে, ধাপ #২-এ যান। তা না হলে, Invalid KeyValueMap Name-এর পরবর্তী কারণে যান।

    com.apigee.rest.framework.ValidationException: Invalid syslog config: Invalid HostName 'splunkprod.myorg.com/' for Syslog handler
    
  2. এই সমস্যার সমাধান কীভাবে করবেন তা বুঝতে নিচে দেওয়া দুটি উদাহরণ দেখুন।

উদাহরণ ১: HostName-এ অবাঞ্ছিত বিশেষ অক্ষর আছে

  1. API প্রক্সি ডিপ্লয় করার সময় মেসেজ প্রসেসর নিম্নলিখিত ব্যতিক্রম দেখায়:

      2018-01-20 02:12:13,535 Apigee-Main-3 ERROR MESSAGING.CONFIGURATION - MessageProcessorServiceImpl.configure() : error configuring config events [DeployEvent{organization='myorg', application='providersearch', applicationRevision='4', deploymentSpec=basepath=/;env=prod;, deploymentID=null}] 
      com.apigee.rest.framework.ValidationException: Invalid syslog config: Invalid HostName 'splunkprod.myorg.com/' for Syslog handler 
      at com.apigee.messaging.runtime.destinations.SyslogDestination.<init>(SyslogDestination.java:44) ~[message-processor-1.0.0.jar:na] 
      at com.apigee.messaging.runtime.destinations.SysLoggerFactory.getInstance(SysLoggerFactory.java:39) ~[message-processor-1.0.0.jar:na]
      at com.apigee.messaging.runtime.destinations.DestinationRegistry.newDestination(DestinationRegistry.java:44) ~[message-processor-1.0.0.jar:na] 
      ...<snipped>
    
  2. উপরের ব্যতিক্রম থেকে দেখা যাচ্ছে যে "Syslog হ্যান্ডলারের জন্য ভুল হোস্টনেম '<hostname>'"-এর কারণে ডেপ্লয়মেন্ট ব্যর্থ হচ্ছে। এর থেকে বোঝা যায় যে MessageLogging নীতিতে ব্যবহৃত HostName হল একটি ভুল HostName।

  3. Message Processor লগে ব্যতিক্রমটি ভালভাবে পরীক্ষা করে দেখা গেছে যে HostName 'splunkprod.myorg.com/'.-এর শেষে একটি অবাঞ্ছিত বিশেষ অক্ষর "/" আছে

  4. এই অবাঞ্ছিত বিশেষ অক্ষরটি ডিপ্লয়মেন্ট সংক্রান্ত সমস্যার কারণ।

রেজোলিউশন

  1. সমস্যার সমাধান করতে, MessageLogging নীতিতে পরিবর্তন করে কোনও অবাঞ্ছিত বিশেষ অক্ষর সরিয়ে দিন।
  2. উপরের উদাহরণে, MessageLogging নীতি থেকে বিশেষ অক্ষর "/" সরিয়ে দেওয়া হয়েছে। এর ফলে সমস্যার সমাধান হয়ে গেছে।

উদাহরণ ২: সমাধান করা যায় না এমন হোস্ট নেম

  1. মেসেজ প্রসেসর লগে কয়েকটি লাইন ছিল যা API প্রক্সি ডিপ্লয়মেন্ট ইভেন্ট ট্রিগার হওয়ার বিষয়টি দেখায়। এর পরে API প্রক্সি ডিপ্লয়মেন্টের সময় একটি ব্যতিক্রম ঘটে:

    2017-12-22 00:13:49,057 Apigee-Main-87446 INFO MESSAGING.CONFIGURATION - MessageProcessorServiceImpl.configure() : configuring [DeployEvent{organization='myorg', application='myapi', applicationRevision='42', deploymentSpec=basepath=/;env=dev;, deploymentID=null}] 
    
    2017-12-22 00:13:49,318 Apigee-Main-87446 ERROR c.a.p.h.d.DNSCachedAddress - DNSCachedAddress.refresh() : Unable to resolve host : input-prd.cloud.splunk.com: Name or service not known 
    
    2017-12-22 00:13:49,323 Apigee-Main-87446 ERROR MESSAGING.RUNTIME - AbstractConfigurator.handleUpdate() : Fatal error deploying proxy: {} 
    com.apigee.rest.framework.ValidationException: Invalid syslog config: Invalid HostName 'input-prd.cloud.splunk.com' for Syslog handler 
    at com.apigee.messaging.runtime.destinations.SyslogDestination.<init>(SyslogDestination.java:44) ~[message-processor-1.0.0.jar:na] 
    at com.apigee.messaging.runtime.destinations.SysLoggerFactory.getInstance(SysLoggerFactory.java:39) ~[message-processor-1.0.0.jar:na] 
    at com.apigee.messaging.runtime.destinations.DestinationRegistry.newDestination(DestinationRegistry.java:44) ~[message-processor-1.0.0.jar:na] 
    at com.apigee.steps.messagelogging.MessageLoggingStepDefinition.populateDestinations(MessageLoggingStepDefinition.java:118) ~[message-logging-1.0.0.jar:na] 
    at com.apigee.steps.messagelogging.MessageLoggingStepDefinition.handleAdd(MessageLoggingStepDefinition.java:99) ~[message-logging-1.0.0.jar:na] 
    …
    <snipped> 
    
  2. উপরের ব্যতিক্রম থেকে দেখা যাচ্ছে যে "Syslog হ্যান্ডলারের জন্য ভুল হোস্টনেম '<hostname>'"-এর কারণে ডেপ্লয়মেন্ট ব্যর্থ হচ্ছে।

  3. ব্যতিক্রমের উপরে লেখা লাইনটি পড়লে, আপনি দেখতে পাবেন যে MessageLogging নীতিতে দেওয়া 'input-prd.cloud.splunk.com' হোস্টনেমটি মেসেজ প্রসেসর রিসলভ করতে পারছে না।

  4. এটি কনফার্ম করতে, মেসেজ লগিং নীতিতে ব্যবহৃত হোস্টনেম ও পোর্ট # ব্যবহার করে টেলনেট করার চেষ্টা করতে পারেন।

    1. API প্রক্সির নির্দিষ্ট রিভিশনে MessageLogging নীতি চেক করুন এবং ব্যবহৃত হোস্টনেম ও পোর্ট # যাচাই করুন। উপরের উদাহরণে, API প্রক্সি নাম: myapi, রিভিশন: 42.

      MessageLogging নীতি

        <MessageLogging async="false" continueOnError="false" enabled="true" name="Log-To-Splunk">
            <DisplayName>Log-To-Splunk</DisplayName>
            <Syslog>
                <Message>Message.id = {request.header.id}</Message>
                <Host>input-prd.cloud.splunk.com</Host>
                <Port>2900</Port>
                <Protocol>TCP</Protocol>
                <SSLInfo>
                    <Enabled>true</Enabled>
                </SSLInfo>
            </Syslog>
        </MessageLogging>
      
    2. নির্দিষ্ট পোর্ট সহ হোস্টের সাথে Telnet করুন। এই উদাহরণের জন্য, আমরা টেলনেট ব্যবহার করে দেখেছি এবং মেসেজ প্রসেসর লগে যে সমস্যাটি দেখা গেছে সেটিই এখানেও দেখা গেছে:

      telnet input-prd.cloud.splunk.com 2900 
      telnet: input-prd.cloud.splunk.com: Name or service not known 
      input-prd.cloud.splunk.com: Host name lookup failure
      
  5. এটি স্পষ্টভাবে প্রমাণ করে যে হোস্টনেম রিসলভ করা যাবে না।

রেজোলিউশন

  1. সঠিক হোস্টনেম ব্যবহার করতে MessageLogging নীতি পরিবর্তন করুন।

সমস্যাটি এখনও থেকে গেলে, অবশ্যই সংগ্রহ করতে হবে এমন ডায়াগনস্টিক তথ্য দেখুন।

কারণ: ভুল KeyValueMap নাম

ডায়াগনসিস

  1. নিচে দেখানো API Proxy বা Shared Flow ডেপ্লয় করার সময় Message Processor লগে "KeyValueMap name is invalid" মেসেজ সহ ব্যতিক্রম দেখতে পেলে, ধাপ #২-এ যান। না হলে, অবশ্যই সংগ্রহ করতে হবে এমন ডায়াগনস্টিক তথ্য দেখুন।

    com.apigee.rest.framework.ValidationException: Invalid syslog config: Invalid HostName 'splunkprod.myorg.com/' for Syslog handler
    
  2. এই সমস্যার সমাধান কীভাবে করবেন তা বুঝতে একটি উদাহরণ দেখা যাক।

  3. API প্রক্সি ডেপ্লয়মেন্টের সময় "KeyValueMap নাম ভুল" মেসেজ সহ ব্যতিক্রম দেখায় এমন মেসেজ প্রসেসর লগ সংক্রান্ত উদাহরণ

    2018-02-27 14:14:50,318  Apigee-Main-6 ERROR MESSAGING.RUNTIME - AbstractConfigurator.handleUpdate() : Fatal error deploying proxy: {}
    com.apigee.keyvaluemap.KeyValueMapApiException: KeyValueMap name  is invalid
            at com.apigee.keyvaluemap.service.legacy.KeyValueMapServiceImpl.validateMapName(KeyValueMapServiceImpl.java:125) ~[keyvaluemap-1.0.0.jar:na]
            at com.apigee.keyvaluemap.service.legacy.KeyValueMapServiceImpl.createOrUpdateKeyValueMap(KeyValueMapServiceImpl.java:185) ~[keyvaluemap-1.0.0.jar:na]
            at com.apigee.steps.keyvaluemapoperations.KeyValueMapOperationsStepDefinition.digest(KeyValueMapOperationsStepDefinition.java:180) ~[keyvaluemap-operations-1.0.0.jar:na]
            at com.apigee.steps.keyvaluemapoperations.KeyValueMapOperationsStepDefinition.handleAdd(KeyValueMapOperationsStepDefinition.java:197) ~[keyvaluemap-operations-1.0.0.jar:na]
            at com.apigee.entities.AbstractConfigurator.handleUpdate(AbstractConfigurator.java:130) [config-entities-1.0.0.jar:na]
            at com.apigee.messaging.runtime.Application.handleUpdate(Application.java:229) [message-processor-1.0.0.jar:na]
    
    2018-02-27 14:14:50,344  Apigee-Main-6 ERROR BOOTSTRAP - RuntimeConfigurationServiceImpl.dispatchToListeners() : RuntimeConfigurationServiceImpl.dispatchToListeners : Error occurred while dispatching the request DeployEvent{organization='myorg', application='CustomerAPI', applicationRevision='1', deploymentSpec=basepath=/;env=test;, deploymentID=null} to com.apigee.application.bootstrap.listeners.MessageProcessorBootstrapListener@5009d06e
    com.apigee.keyvaluemap.KeyValueMapApiException: KeyValueMap name  is invalid
            at com.apigee.keyvaluemap.service.legacy.KeyValueMapServiceImpl.validateMapName(KeyValueMapServiceImpl.java:125) ~[keyvaluemap-1.0.0.jar:na]
            at com.apigee.keyvaluemap.service.legacy.KeyValueMapServiceImpl.createOrUpdateKeyValueMap(KeyValueMapServiceImpl.java:185) ~[keyvaluemap-1.0.0.jar:na]
            at com.apigee.steps.keyvaluemapoperations.KeyValueMapOperationsStepDefinition.digest(KeyValueMapOperationsStepDefinition.java:180) ~[keyvaluemap-operations-1.0.0.jar:na]
            at com.apigee.steps.keyvaluemapoperations.KeyValueMapOperationsStepDefinition.handleAdd(KeyValueMapOperationsStepDefinition.java:197) ~[keyvaluemap-operations-1.0.0.jar:na]
            at com.apigee.entities.AbstractConfigurator.handleUpdate(AbstractConfigurator.java:130) ~[config-entities-1.0.0.jar:na]
            at com.apigee.messaging.runtime.Application.handleUpdate(Application.java:229) ~[message-processor-1.0.0.jar:na]
    
  4. উপরের দ্বিতীয় ব্যতিক্রম থেকে বোঝা যাচ্ছে যে API Proxy: CustomerAPI, revision: 1-এর ক্ষেত্রে ডেপ্লয়মেন্ট সংক্রান্ত সমস্যা হয়েছে।

  5. স্ট্যাকট্রেস চেক করে, আপনি দেখতে পাবেন যে KeyValuMapOperations নীতি এক্সিকিউট করার সময় সমস্যাটি হয়েছে।

  6. API প্রক্সি বান্ডেল চেক করে আপনি দেখতে পাবেন যে একটি KeyValuMapOperations নীতি আছে যার কোডটি নিচে দেখানো হয়েছে:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="Pulling-Keys" mapIdentifier="">
     <DisplayName>Pulling Keys</DisplayName>
     <Properties/>
     <ExclusiveCache>false</ExclusiveCache>
    
    
  7. উপরে যেমন দেখা যাচ্ছে, mapIdentifier, যা KeyValueMap-এর নাম নির্দেশ করে, সেটিতে খালি স্ট্রিং আছে। KeyValueMap-এর নাম খালি স্ট্রিং হতে পারে না। ডিপ্লয়মেন্ট সংক্রান্ত সমস্যার কারণ এটিই ছিল।

রেজোলিউশন

  1. KeyValueMap-এর জন্য উপযুক্ত ও সঠিক নাম পেতে KeyValueMapOperations নীতি পরিবর্তন করুন।
  2. উপরের উদাহরণে, আমরা KeyValueMapOperations পরিবর্তন করে সমস্যার সমাধান করেছি যাতে KeyValueMap-এর নাম "MyKeyValueMap" হয়, যেমন নিচে দেখানো হয়েছে:

      <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
      <KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="Pulling-Keys" mapIdentifier="MyKeyValueMap">
        <DisplayName>Pulling Keys</DisplayName>
        <Properties/>
        <ExclusiveCache>false</ExclusiveCache>
    

ডায়াগনস্টিক তথ্য অবশ্যই সংগ্রহ করতে হবে

উপরে উল্লেখ করা নির্দেশাবলী অনুসরণ করার পরেও সমস্যার সমাধান না হলে, নিম্নলিখিত ডায়াগনস্টিক তথ্য সংগ্রহ করুন। Apigee Edge সহায়তা টিমের সাথে যোগাযোগ করুন এবং তাদের কাছে সংগ্রহ করা তথ্য প্রদান করুন।

  1. কমান্ডের আউটপুট

    curl -v <management-server-host>:<port #>/v1/runtime/organizations/<org-name>/environments/<env-name>/apis/<apiproxy-name>/revisions/deployments -u <user>
    
  2. মেসেজ প্রসেসর লগ

    /opt/apigee/var/log/edge-message-processor/logs/system.log
    
  3. এই প্লেবুকের কোন কোন বিভাগ ব্যবহার করা হয়েছে এবং অন্য কোনও ইনসাইট যা এই সমস্যার সমাধান দ্রুত করতে সাহায্য করবে, সেই সংক্রান্ত বিবরণ।