আপনি Apigee Edge-এর ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশন .info- তে যান।
লক্ষণ
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-তে দেখা যাওয়া একটি নমুনা ত্রুটি বার্তার স্ক্রিনশট দেওয়া হলো:

সম্ভাব্য কারণসমূহ
বিভিন্ন কারণে "কনফিগারেশন ব্যর্থ" ত্রুটির সাথে একটি এপিআই প্রক্সি স্থাপন ব্যর্থ হতে পারে। নিচের সারণিতে এই ত্রুটির কয়েকটি সাধারণ কারণ তালিকাভুক্ত করা হলো:
| কারণ | বর্ণনা | সমস্যা সমাধানের নির্দেশাবলী প্রযোজ্য |
| JavaCallout পলিসিতে জাভা ক্লাস অনুপস্থিত | JavaCallout পলিসি দ্বারা ব্যবহৃত JAR ফাইলটিতে একটি জাভা ক্লাস অনুপস্থিত রয়েছে। | এজ প্রাইভেট ক্লাউড ব্যবহারকারীরা |
| কন্ডিশন ফ্লো-এর শর্তগুলিতে ভুল অপারেন্ড ব্যবহার করা হয়েছে। | শর্তে থাকা অপারেটরগুলোর এক বা উভয় পাশে ব্যবহৃত অপারেন্ড/এক্সপ্রেশনগুলো বৈধ নয়। | |
| মেসেজ লগিং নীতিতে অবৈধ হোস্টনেম | MessageLogging পলিসিতে ব্যবহৃত হোস্টনেমটি রিজলভ করা যাচ্ছে না অথবা এতে কিছু অনাকাঙ্ক্ষিত বিশেষ অক্ষর থাকতে পারে। | |
| অবৈধ KeyValueMap নাম | এপিআই প্রক্সির KeyValueMapOperations পলিসিতে KeyValueMap-টি অবৈধ বা খালি। |
সাধারণ রোগ নির্ণয়ের ধাপসমূহ
নিচের API ব্যবহার করে API প্রক্সির যে নির্দিষ্ট রিভিশনটিতে আপনি ডিপ্লয়মেন্ট ত্রুটি দেখতে পাচ্ছেন, সেটির ডিপ্লয়মেন্ট স্ট্যাটাস জানুন:
curl -v <management-server-host>:<port#>/v1/runtime/organizations/<org-name>/environments/<env-name>/apis/<apiproxy-name>/revisions/deployments -u <user>উপরের এপিআই থেকে প্রাপ্ত একটি আউটপুটের উদাহরণ নিচে দেওয়া হলো;
"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" },ডিপ্লয়মেন্ট স্ট্যাটাস আউটপুটে প্রতিটি মেসেজ প্রসেসরে আপনি "কনফিগারেশন ব্যর্থ হয়েছে" এই ত্রুটি বার্তাটি দেখতে পাবেন।
যেকোনো একটি মেসেজ প্রসেসরে লগ ইন করুন এবং
/opt/apigee/var/log/edge-message-processor/logs/system.logফাইলটি পরীক্ষা করুন। এপিআই প্রক্সি ডেপ্লয়মেন্টের সময় কোনো ত্রুটি আছে কিনা তা দেখুন।মেসেজ প্রসেসর লগে পরিলক্ষিত ত্রুটি/ব্যতিক্রমের উপর নির্ভর করে, আপনাকে সমস্যাটির জন্য উপযুক্ত সমস্যা সমাধান পদক্ষেপ এবং সমাধান অনুসরণ করতে হবে।
নিচের বিভাগগুলিতে প্রায়শই দেখা যায় এমন কিছু ব্যতিক্রম উল্লেখ করা হয়েছে, যেগুলির কারণে " কনফিগারেশন ব্যর্থ হয়েছে" (Configuration failed) নামক ডেপ্লয়মেন্ট ত্রুটিটি ঘটে এবং সেগুলির সমস্যা সমাধান ও প্রতিকারের পদক্ষেপও দেওয়া হয়েছে।
কারণ: JavaCallout পলিসিতে জাভা ক্লাস অনুপস্থিত
রোগ নির্ণয়
- মেসেজ প্রসেসর লগ-এ, নিচে দেখানো অনুযায়ী একটি এপিআই প্রক্সি (DeployEvent) ডেপ্লয়মেন্টের সময় যদি আপনি "Failed to instantiate the JavaCallout Class" মেসেজ সহ কোনো এক্সেপশন দেখতে পান, তাহলে ধাপ #২-এ যান। অন্যথায়, কন্ডিশন ফ্লো-এর মধ্যে থাকা "Incorrect operands used in conditions" অংশে যান।
এপিআই প্রক্সি ডেপ্লয়মেন্টের সময় মেসেজ প্রসেসর নিম্নলিখিত এক্সেপশনটি দেখাচ্ছে:
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>উপরের এক্সেপশনের ত্রুটি বার্তাটি নির্দেশ করে যে JavaCallout ক্লাস
com.something.apigee.callout.crypto.main.SecretCalloutইনস্ট্যানশিয়েট করা যায়নি। এই ত্রুটিটি সাধারণত তখন ঘটে যখন নির্দিষ্ট ক্লাসটি JavaCallout পলিসিতে উল্লেখিত JAR ফাইলে বা এর উপর নির্ভরশীল কোনো JAR ফাইলে উপলব্ধ থাকে না।com.something.apigee.callout.crypto.mainপ্যাকেজের সাথে সম্পর্কিত সমস্ত ক্লাস ধারণকারী JAR ফাইলটি পরীক্ষা করুন এবং নিশ্চিত করুন যেcom.something.apigee.callout.crypto.main.SecretCalloutনামক নির্দিষ্ট ক্লাসটি অনুপস্থিত ছিল।
সমাধান
- নির্দিষ্ট JAR ফাইলটিতে অনুপস্থিত ক্লাসটি যোগ করুন এবং ফাইলটি আপলোড করুন।
- এপিআই প্রক্সি পুনরায় স্থাপন করুন।
- উপরের উদাহরণে, আমরা সমস্যাটি সমাধান করেছি এভাবে:
- JAR ফাইলে অনুপস্থিত ক্লাস
com.something.apigee.callout.crypto.main.SecretCalloutযোগ করা হচ্ছে। - আপডেট করা JAR ফাইলটি আপলোড করা হচ্ছে এবং API প্রক্সিটি পুনরায় স্থাপন করা হচ্ছে।
- JAR ফাইলে অনুপস্থিত ক্লাস
কারণ: কন্ডিশন ফ্লো-তে অপারেটরগুলোর সাথে ভুল অপারেন্ড ব্যবহার করা হয়েছে।
রোগ নির্ণয়
মেসেজ প্রসেসর লগ-এ, যদি আপনি
com.apigee.expressions.parser.ParseExceptionদেখতে পানcom.apigee.expressions.parser.ParseExceptionনিচের উদাহরণ বার্তাগুলিতে দেখানো API প্রক্সি বা শেয়ার্ড ফ্লো স্থাপনের সময়, যদি এমনটি ঘটে, তাহলে ধাপ #২-এ যান। অন্যথায়, পরবর্তী কারণ অর্থাৎ মেসেজ লগিং পলিসিতে থাকা 'অবৈধ হোস্টনেম' (Invalid Hostname) অংশে যান।ত্রুটির বার্তার উদাহরণ
com.apigee.expressions.parser.ParseException: Both the operands for EQUALS expression should be data expressionsএই সমস্যাটি কীভাবে নির্ণয় করা যায় তা বোঝার জন্য চলুন একটি উদাহরণ দেখি।
উদাহরণ : <Operator> এক্সপ্রেশনের অপারেন্ডগুলো ডেটা এক্সপ্রেশন হওয়া উচিত।
একটি শেয়ার্ড ফ্লো ডেপ্লয়মেন্টের সময় মেসেজ প্রসেসর নিম্নলিখিত এক্সেপশনটি দেখায়:
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>ParseException-এর ত্রুটি বার্তা - "
Both the operands for EQUALS expression should be data expressions" নির্দেশ করে যে সমান (=), অসমান (!=) বা Stats (=|) অপারেটর-সম্পর্কিত কোনো শর্তে সমস্যা আছে।এরর মেসেজে উল্লেখিত নির্দিষ্ট অপারেটরটির সাথে জড়িত সমস্ত কন্ডিশন ফ্লো-এর শর্তগুলো খতিয়ে দেখুন এবং নিম্নলিখিত সমস্যাগুলোর কোনোটি আছে কিনা তা যাচাই করুন:
- অপারেটরের উভয় পাশের এক্সপ্রেশনগুলো একই ধরনের হয়। উদাহরণস্বরূপ, যদি অপারেটরের বাম পাশে একটি স্ট্রিং ভেরিয়েবল থাকে, তাহলে ডান পাশেও আরেকটি স্ট্রিং ভেরিয়েবল বা স্ট্রিং ভ্যালু থাকতে হবে।
- অপারেটরগুলোর মধ্যে বৈধ ভেরিয়েবল ব্যবহার করা হয়।
- অপারেটর এবং প্রতিটি এক্সপ্রেশনের মধ্যে একটি স্পেস রয়েছে।
উপরে উল্লিখিত শর্তগুলির কোনোটি পূরণ না হলে, আপনি ParseException পাবেন - "
Both the operands for EQUALS expression should be data expressions"।বিষয়টি বোঝার জন্য চলুন একটি উদাহরণ দেখি। এখানে একটি নমুনা ত্রুটির অবস্থা দেওয়া হলো।
<Condition> (fault.name = "invalid_access_token") or(fault.name = "ApiKeyNotApproved") </Condition>এই উদাহরণে, আপনি লক্ষ্য করতে পারেন যে "or" অপারেটর এবং পরবর্তী শর্তের মধ্যে কোনো স্পেস নেই। তাই যখন দ্বিতীয় শর্তটি পার্স করা হচ্ছে, তখন EQUALS অপারেটরের জন্য প্রথম এক্সপ্রেশনটিকে "or(fault.name)" হিসেবে ধরে নেওয়া হচ্ছে। এটি একটি বৈধ ভেরিয়েবলের নাম নয়, তাই এটিকে একটি বৈধ ডেটা এক্সপ্রেশন হিসেবে গণ্য করা হচ্ছে না। ফলস্বরূপ আপনি এই এক্সেপশনটি পাচ্ছেন:
com.apigee.expressions.parser.ParseException: Both the operands for EQUALS expression should be data expressions
সমাধান
- অপারেটরগুলোর উভয় পাশে যেন সর্বদা সঠিক ডেটা এক্সপ্রেশন থাকে, তা নিশ্চিত করুন।
উপরে আলোচিত উদাহরণটিতে, সমাধানটি ছিল কোড স্নিপেটে বর্ণিত "or" অপারেটরের পরে একটি স্পেস নিশ্চিত করা:
<Condition> (fault.name = "invalid_access_token") or (fault.name = "ApiKeyNotApproved") </Condition>
মেসেজ লগিং পলিসিতে অবৈধ হোস্ট নাম
রোগ নির্ণয়
মেসেজ প্রসেসর লগ-এ, এপিআই প্রক্সি বা শেয়ার্ড ফ্লো ডেপ্লয়মেন্টের সময় যদি আপনি নীচে দেখানো অনুযায়ী "Invalid HostName" মেসেজ সহ কোনো এক্সেপশন দেখতে পান, তাহলে ধাপ #২-এ যান। অন্যথায়, পরবর্তী কারণ "Invalid KeyValueMap Name" -এ যান।
com.apigee.rest.framework.ValidationException: Invalid syslog config: Invalid HostName 'splunkprod.myorg.com/' for Syslog handlerএই সমস্যাটি কীভাবে সমাধান করা যায় তা বোঝার জন্য নিচের দুটি উদাহরণ দেখা যাক।
উদাহরণ ১: হোস্টনেমে অনাকাঙ্ক্ষিত বিশেষ অক্ষর থাকা
এপিআই প্রক্সি ডেপ্লয়মেন্টের সময় মেসেজ প্রসেসর নিম্নলিখিত এক্সেপশনটি দেখাচ্ছে:
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>উপরের ব্যতিক্রমটি দেখাচ্ছে যে "সিস্টেম লগ হ্যান্ডলারের জন্য অবৈধ হোস্টনেম '<hostname>'" এর কারণে ডেপ্লয়মেন্ট ব্যর্থ হচ্ছে। এটি নির্দেশ করে যে মেসেজ লগিং পলিসিতে ব্যবহৃত হোস্টনেমটি একটি অবৈধ হোস্টনেম।
মেসেজ প্রসেসর লগে থাকা এক্সেপশনটি ভালোভাবে পরীক্ষা করলে দেখা যায় যে,
'splunkprod.myorg.com/'.এই অনাকাঙ্ক্ষিত বিশেষ অক্ষরটিই ডেপ্লয়মেন্ট ত্রুটির কারণ ছিল।
সমাধান
- সমস্যাটি সমাধান করতে, MessageLogging পলিসি থেকে যেকোনো অবাঞ্ছিত বিশেষ অক্ষর অপসারণ করুন।
- উপরের উদাহরণে, MessageLogging Policy থেকে বিশেষ অক্ষর "/" সরিয়ে দেওয়া হয়েছে। এতে সমস্যাটির সমাধান হয়েছে।
উদাহরণ ২: সমাধান করা যায় না এমন হোস্ট নাম
মেসেজ প্রসেসর লগে কয়েকটি লাইন ছিল যা থেকে বোঝা যায় যে একটি এপিআই প্রক্সির ডেপ্লয়মেন্ট ইভেন্ট ট্রিগার হয়েছে, এবং এর পরেই এপিআই প্রক্সিটির ডেপ্লয়মেন্ট চলাকালীন একটি এক্সেপশন ঘটেছে:
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>উপরের ব্যতিক্রমটি দেখাচ্ছে যে "Invalid HostName '<hostname>' for Syslog handler" এর কারণে ডেপ্লয়মেন্ট ব্যর্থ হচ্ছে।
আপনি যদি এক্সেপশনটির উপরের লাইনটি মনোযোগ দিয়ে পড়েন, তাহলে দেখতে পাবেন যে মেসেজ প্রসেসরটি মেসেজলগিং পলিসিতে দেওয়া
'input-prd.cloud.splunk.com'হোস্টনেমটি রিজলভ করতে পারছে না।এটি নিশ্চিত করতে আপনি মেসেজ লগিং পলিসিতে ব্যবহৃত হোস্টনেম এবং পোর্ট নম্বরে টেলনেট করে দেখতে পারেন।
এপিআই প্রক্সির নির্দিষ্ট রিভিশনে মেসেজ লগিং পলিসি পরীক্ষা করুন এবং ব্যবহৃত হোস্টনেম ও পোর্ট নম্বর যাচাই করুন। উপরের উদাহরণে, এপিআই প্রক্সির নাম: myapi, রিভিশন: 42।
বার্তা লগিং নীতি
<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>নির্দিষ্ট পোর্ট ব্যবহার করে হোস্টটিতে টেলনেট করুন। এই উদাহরণে, আমরা টেলনেট করার চেষ্টা করেছিলাম এবং মেসেজ প্রসেসর লগে দেখা একই ত্রুটি পেয়েছি:
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
এতে সুস্পষ্টভাবে প্রমাণিত হয়েছে যে হোস্টনেমটি রিজলভ করা যাচ্ছে না।
সমাধান
- বৈধ হোস্ট নামটি ব্যবহার করার জন্য MessageLogging নীতিটি পরিবর্তন করুন।
যদি সমস্যাটি এখনও থেকে যায়, তাহলে 'অবশ্যই ডায়াগনস্টিক তথ্য সংগ্রহ করুন' অংশে যান।
কারণ: অবৈধ KeyValueMap নাম
রোগ নির্ণয়
মেসেজ প্রসেসর লগ-এ, নিচে দেখানো অনুযায়ী কোনো এপিআই প্রক্সি বা শেয়ার্ড ফ্লো ডেপ্লয়মেন্টের সময় যদি আপনি "KeyValueMap name is invalid" মেসেজসহ কোনো এক্সেপশন দেখতে পান, তাহলে ধাপ #২-এ যান। অন্যথায়, "অবশ্যই ডায়াগনস্টিক তথ্য সংগ্রহ করুন" অংশে যান।
com.apigee.rest.framework.ValidationException: Invalid syslog config: Invalid HostName 'splunkprod.myorg.com/' for Syslog handlerএই সমস্যাটি কীভাবে সমাধান করা যায় তা বোঝার জন্য চলুন একটি উদাহরণ দেখি।
এপিআই প্রক্সি ডেপ্লয়মেন্টের সময় ঘটা ত্রুটির কারণ "KeyValueMap name is invalid" মেসেজসহ এক্সেপশনটি দেখানো মেসেজ প্রসেসর লগের একটি উদাহরণ।
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]উপরের দ্বিতীয় ব্যতিক্রমটি নির্দেশ করে যে API Proxy: CustomerAPI, revision: 1-এর জন্য ডেপ্লয়মেন্ট ত্রুটি ঘটেছে।
স্ট্যাকট্রেস পরীক্ষা করলে আপনি দেখতে পাবেন যে KeyValuMapOperations পলিসিটি কার্যকর করার সময় একটি ত্রুটি দেখা দিয়েছে।
এপিআই প্রক্সি বান্ডেলটি খতিয়ে দেখলে আপনি দেখতে পাবেন যে সেখানে একটি 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>উপরে যেমন দেখা যাচ্ছে, ` mapIdentifier` , যা `KeyValueMap`-এর নাম নির্দেশ করে, সেটির মান একটি খালি স্ট্রিং। `KeyValueMap`-এর নাম খালি স্ট্রিং হতে পারে না। এই কারণেই `Deployment` ত্রুটিটি ঘটেছিল।
সমাধান
- KeyValueMapOperations পলিসিটি পরিবর্তন করে KeyValueMap-এর জন্য একটি যথাযথ ও বৈধ নাম নির্ধারণ করুন।
উপরের উদাহরণে, আমরা 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 Support-এর সাথে যোগাযোগ করুন এবং তাদেরকে সংগৃহীত তথ্যগুলো প্রদান করুন।
কমান্ডের আউটপুট
curl -v <management-server-host>:<port #>/v1/runtime/organizations/<org-name>/environments/<env-name>/apis/<apiproxy-name>/revisions/deployments -u <user>মেসেজ প্রসেসর লগ
/opt/apigee/var/log/edge-message-processor/logs/system.logএই প্লেবুকের কোন কোন অংশ চেষ্টা করা হয়েছে সে সম্পর্কিত বিবরণ এবং অন্য কোনো তথ্য যা এই সমস্যার সমাধান দ্রুত করতে আমাদের সাহায্য করবে।