আপনি Apigee Edge ডকুমেন্টেশন দেখছেন।
Apigee X ডকুমেন্টেশনে যান । তথ্য
উপসর্গ
এজ UI এর মাধ্যমে API প্রক্সি বা শেয়ার্ড ফ্লো রিভিশনের স্থাপনা বা ব্যবস্থাপনা API একটি কনফিগারেশন ব্যর্থ ত্রুটির সাথে ব্যর্থ হয়।
ত্রুটি বার্তা
নীচে দেখানো হিসাবে আপনি এজ UI এ একটি ত্রুটি বার্তা পাবেন:
The revision is deployed, but traffic cannot flow.
com.apigee.kernel.exceptions.spi.UncheckedException{ code = application.bootstrap.FailedToConfigure, message = Configuration failed, associated contexts = []}
এজ UI-তে পরিলক্ষিত একটি নমুনা ত্রুটি বার্তার স্ক্রিনশট এখানে:
সম্ভাব্য কারণ
একটি API প্রক্সির স্থাপনা বিভিন্ন কারণে "কনফিগারেশন ব্যর্থ" ত্রুটির সাথে ব্যর্থ হতে পারে। নীচের সারণীটি এই ত্রুটির দিকে পরিচালিত কয়েকটি ঘন ঘন দেখা কারণগুলির তালিকা করে:
কারণ | বর্ণনা | এর জন্য প্রযোজ্য সমস্যা সমাধানের নির্দেশাবলী |
JavaCallout নীতিতে জাভা ক্লাস অনুপস্থিত | JavaCallout নীতি দ্বারা উল্লেখ করা JAR ফাইল থেকে একটি Java ক্লাস অনুপস্থিত। | এজ প্রাইভেট ক্লাউড ব্যবহারকারীরা |
কন্ডিশন ফ্লোতে শর্তে ব্যবহৃত ভুল অপারেন্ড | শর্তে অপারেটরদের এক বা উভয় দিকে ব্যবহৃত অপারেন্ড/অভিব্যক্তি বৈধ নয়। | |
বার্তা লগিং নীতিতে অবৈধ হোস্টনাম৷ | মেসেজলগিং নীতিতে ব্যবহৃত হোস্টনামটি সমাধান করা যাবে না বা কিছু অবাঞ্ছিত বিশেষ অক্ষর থাকতে পারে। | |
অবৈধ KeyValueMap নাম৷ | API প্রক্সিতে 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>
এখানে উপরের 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" },
আপনি ডিপ্লয়মেন্ট স্ট্যাটাস আউটপুটে প্রতিটি মেসেজ প্রসেসরে "কনফিগারেশন ব্যর্থ হয়েছে" ত্রুটি বার্তা দেখতে পাবেন।
মেসেজ প্রসেসরের একটিতে লগ ইন করুন এবং লগ
/opt/apigee/var/log/edge-message-processor/logs/system.log
চেক করুন। API প্রক্সি স্থাপনের সময় কোনো ত্রুটি আছে কিনা দেখুন।বার্তা প্রসেসর লগে লক্ষ্য করা ত্রুটি/ব্যতিক্রমের উপর নির্ভর করে, আপনাকে সমস্যাটির জন্য উপযুক্ত সমস্যা সমাধানের পদক্ষেপ এবং রেজোলিউশন অনুসরণ করতে হবে।
নীচের বিভাগগুলি প্রায়শই পরিলক্ষিত কিছু ব্যতিক্রম প্রদান করে যা স্থাপনার ত্রুটির দিকে পরিচালিত করে " কনফিগারেশন ব্যর্থ হয়েছে" এবং সমস্যা সমাধান ও সমাধানের পদক্ষেপগুলি প্রদান করে৷
কারণ: JavaCallout নীতিতে জাভা ক্লাস অনুপস্থিত
রোগ নির্ণয়
- মেসেজ প্রসেসর লগগুলিতে, আপনি যদি নীচে দেখানো হিসাবে একটি 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>
উপরের ব্যতিক্রমের ত্রুটি বার্তাটি নির্দেশ করে যে JavaCallout ক্লাস
com.something.apigee.callout.crypto.main.SecretCallout
ইনস্ট্যান্ট করা যায়নি। এই ত্রুটিটি সাধারণত ঘটে যখন JavaCallout নীতিতে নির্দিষ্ট করা JAR ফাইলে বা এর কোনো নির্ভরশীল JAR ফাইলে নির্দিষ্ট শ্রেণী উপলব্ধ না হয়।JAR ফাইলটি পরীক্ষা করুন যাতে
com.something.apigee.callout.crypto.main
প্যাকেজ সম্পর্কিত সমস্ত ক্লাস রয়েছে এবং নিশ্চিত করুন যে নির্দিষ্ট ক্লাসcom.something.apigee.callout.crypto.main.SecretCallout
অনুপস্থিত।
রেজোলিউশন
- নির্দিষ্ট JAR ফাইলে অনুপস্থিত ক্লাস যোগ করুন এবং JAR ফাইল আপলোড করুন।
- API প্রক্সি পুনরায় স্থাপন করুন।
- উপরের উদাহরণে, আমরা এই সমস্যার সমাধান করেছি:
- JAR ফাইলে অনুপস্থিত ক্লাস
com.something.apigee.callout.crypto.main.SecretCallout
যোগ করা হচ্ছে। - আপডেট করা JAR ফাইল আপলোড করা এবং API প্রক্সি পুনরায় স্থাপন করা হচ্ছে।
- JAR ফাইলে অনুপস্থিত ক্লাস
কারণ: কন্ডিশন ফ্লোতে অপারেটরদের সাথে ব্যবহার করা ভুল অপারেন্ড
রোগ নির্ণয়
মেসেজ প্রসেসর লগে, যদি আপনি একটি
com.apigee.expressions.parser.ParseException
দেখতে পানcom.apigee.expressions.parser.ParseException
একটি API প্রক্সি বা শেয়ার্ড ফ্লো স্থাপনের সময় নিচের উদাহরণ বার্তায় দেখানো হয়েছে, তারপর ধাপ #2-এ যান। যদি তা না হয়, তাহলে পরবর্তী কারণ-এ যান বার্তা লগিং নীতিতে অবৈধ হোস্টনাম ।উদাহরণ ত্রুটি বার্তা
com.apigee.expressions.parser.ParseException: Both the operands for EQUALS expression should be data expressions
এই সমস্যাটি কীভাবে নির্ণয় করা যায় তা বোঝার জন্য আসুন একটি উদাহরণ দেখি।
উদাহরণ: <অপারেটর> এক্সপ্রেশনের জন্য অপারেন্ডগুলি ডেটা এক্সপ্রেশন হওয়া উচিত
একটি শেয়ার্ড ফ্লো স্থাপনের সময় মেসেজ প্রসেসর নিম্নলিখিত ব্যতিক্রম দেখায়:
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
" নির্দেশ করে যে একটি শর্ত যার সমান (=), (!=) এর সমান নয় বা (=|) অপারেটরের সাথে পরিসংখ্যানের একটি সমস্যা আছে।ত্রুটি বার্তায় উল্লিখিত নির্দিষ্ট অপারেটরের সাথে জড়িত সমস্ত শর্ত প্রবাহের শর্তগুলি দেখুন এবং নীচের কোনও সমস্যা আছে কিনা তা দেখুন:
- অপারেটরের উভয় পাশের অভিব্যক্তি একই ধরণের। উদাহরণস্বরূপ, যদি আপনার অপারেটরের বাম পাশে একটি স্ট্রিং ভেরিয়েবল থাকে, তাহলে আপনার ডান পাশে আরেকটি স্ট্রিং ভেরিয়েবল বা স্ট্রিং মান থাকতে হবে।
- অপারেটরদের মধ্যে বৈধ ভেরিয়েবল ব্যবহার করা হয়।
- অপারেটর এবং প্রতিটি এক্সপ্রেশনের মধ্যে একটি স্থান আছে।
যদি উপরে উল্লিখিত মানদণ্ডগুলির মধ্যে কোনোটি পূরণ না হয়, তাহলে আপনি পার্স-এক্সেপশন পাবেন - "
Both the operands for EQUALS expression should be data expressions
"।আসুন এই সমস্যাটি বোঝার জন্য একটি উদাহরণ দেখি। এখানে একটি নমুনা ত্রুটি শর্ত থা
<Condition> (fault.name = "invalid_access_token") or(fault.name = "ApiKeyNotApproved") </Condition>
এই উদাহরণে, আপনি লক্ষ্য করতে পারেন যে "বা" অপারেটর এবং তারপরের পরবর্তী অবস্থার মধ্যে কোন স্থান নেই। সুতরাং যখন দ্বিতীয় শর্তটি পার্স করা হচ্ছে, প্রথম অভিব্যক্তিটি EQUALS অপারেটরের জন্য "or(fault.name" হিসাবে নেওয়া হয়৷ এটি একটি বৈধ পরিবর্তনশীল নাম নয়, তাই এটিকে একটি বৈধ ডেটা অভিব্যক্তি হিসাবে গণ্য করা হয় না৷ ফলস্বরূপ আপনি এই ব্যতিক্রম পান:
com.apigee.expressions.parser.ParseException: Both the operands for EQUALS expression should be data expressions
রেজোলিউশন
- নিশ্চিত করুন যে অপারেটরগুলির উভয় পাশে আপনার সর্বদা সঠিক ডেটা এক্সপ্রেশন রয়েছে।
উপরে আলোচিত উদাহরণে, রেজোলিউশনটি নিশ্চিত করা হয়েছিল যে কোড স্নিপেটে বর্ণিত "বা" অপারেটরের পরে স্থান রয়েছে:
<Condition> (fault.name = "invalid_access_token") or (fault.name = "ApiKeyNotApproved") </Condition>
মেসেজলগিং নীতিতে অবৈধ হোস্ট নাম
রোগ নির্ণয়
বার্তা প্রসেসর লগগুলিতে, যদি আপনি API প্রক্সি বা শেয়ার্ড ফ্লো স্থাপনের সময় "অবৈধ হোস্টনাম" বার্তাটির সাথে কোনও ব্যতিক্রম দেখতে পান, যেমনটি নীচে দেখানো হয়েছে, তাহলে ধাপ #2-এ যান৷ যদি তা না হয়, তাহলে পরবর্তী কারণ-এ যান অবৈধ KeyValueMap নাম ।
com.apigee.rest.framework.ValidationException: Invalid syslog config: Invalid HostName 'splunkprod.myorg.com/' for Syslog handler
এই সমস্যাটি কীভাবে সমাধান এবং সমাধান করা যায় তা বোঝার জন্য আসুন নীচের দুটি উদাহরণ দেখি।
উদাহরণ 1: HostName অবাঞ্ছিত বিশেষ অক্ষর আছে
বার্তা প্রসেসর 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>
উপরের ব্যতিক্রমটি দেখায় যে "Syslog হ্যান্ডলারের জন্য অবৈধ HostName '<hostname>'" এর কারণে স্থাপনা ব্যর্থ হচ্ছে। এটি নির্দেশ করে যে মেসেজলগিং নীতিতে ব্যবহৃত হোস্টনামটি একটি অবৈধ হোস্টনাম।
মেসেজ প্রসেসর লগে ব্যতিক্রমটি সাবধানে পরীক্ষা করলে দেখা যায় যে হোস্টনাম
'splunkprod.myorg.com/'.
এই অবাঞ্ছিত বিশেষ চরিত্রটি স্থাপনার ত্রুটির কারণ ছিল।
রেজোলিউশন
- সমস্যা সমাধানের জন্য কোনো অবাঞ্ছিত বিশেষ অক্ষর মুছে ফেলার জন্য MessageLogging নীতি পরিবর্তন করুন।
- উপরের উদাহরণে, বিশেষ অক্ষর "/" মেসেজলগিং নীতি থেকে সরানো হয়েছে। এটি সমস্যার সমাধান করেছে।
উদাহরণ 2: অমীমাংসিত হোস্ট নাম
মেসেজ প্রসেসর লগে কয়েকটি লাইন ছিল যা দেখায় যে একটি 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>
উপরের ব্যতিক্রমটি দেখায় যে "Syslog হ্যান্ডলারের জন্য অবৈধ HostName '<hostname>'" এর কারণে স্থাপনা ব্যর্থ হচ্ছে।
আপনি যদি ব্যতিক্রমের উপরের লাইনটি পড়েন, আপনি লক্ষ্য করতে পারেন যে মেসেজ প্রসেসর মেসেজলগিং নীতিতে দেওয়া হোস্টনাম
'input-prd.cloud.splunk.com'
সমাধান করতে অক্ষম।এটি নিশ্চিত করতে আপনি বার্তা লগিং নীতিতে ব্যবহৃত হোস্টনাম এবং পোর্ট #-এ টেলনেট করার চেষ্টা করতে পারেন।
API প্রক্সির নির্দিষ্ট সংশোধনে MessageLogging নীতিটি পরীক্ষা করুন এবং হোস্টনেম এবং পোর্ট # ব্যবহার করা হয়েছে তা যাচাই করুন। উপরের উদাহরণে, API প্রক্সি নাম: 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 নাম
রোগ নির্ণয়
বার্তা প্রসেসর লগগুলিতে, আপনি যদি নীচে দেখানো হিসাবে একটি API প্রক্সি বা শেয়ার্ড ফ্লো স্থাপনের সময় "KeyValueMap নামটি অবৈধ" বার্তার সাথে একটি ব্যতিক্রম দেখতে পান, তাহলে ধাপ #2-এ যান৷ যদি না হয়, অবশ্যই ডায়াগনস্টিক তথ্য সংগ্রহ করুন- এ যান।
com.apigee.rest.framework.ValidationException: Invalid syslog config: Invalid HostName 'splunkprod.myorg.com/' for Syslog handler
এই সমস্যাটি কীভাবে সমাধান এবং সমাধান করা যায় তা বোঝার জন্য আসুন একটি উদাহরণ দেখি।
উদাহরণ মেসেজ প্রসেসর লগ "KeyValueMap নামটি অবৈধ" বার্তা সহ ব্যতিক্রম দেখাচ্ছে যা API প্রক্সি স্থাপনের সময় ত্রুটির দিকে পরিচালিত করে
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 প্রক্সির জন্য স্থাপনার ত্রুটি ঘটেছে: CustomerAPI, সংশোধন: 1।
স্ট্যাকট্রেস পরীক্ষা করে, আপনি লক্ষ্য করতে পারেন যে KeyValuMapOperations নীতি কার্যকর করার সময় ত্রুটিটি ছুড়ে দেওয়া হয়েছে।
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>
উপরে দেখা যায়, mapIdentifier , যা KeyValueMap-এর নাম নির্দেশ করে, একটি খালি স্ট্রিং আছে। KeyValueMap নামটি খালি স্ট্রিং হতে পারে না। এটি স্থাপনার ত্রুটির কারণ ছিল।
রেজোলিউশন
- 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 সহায়তার সাথে যোগাযোগ করুন এবং তাদের সংগৃহীত তথ্য প্রদান করুন।
কমান্ডের আউটপুট
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
এই প্লেবুকের কোন বিভাগগুলি চেষ্টা করা হয়েছে এবং অন্য কোন অন্তর্দৃষ্টি যা আমাদের এই সমস্যার দ্রুত সমাধান করতে সাহায্য করবে সে সম্পর্কে বিশদ বিবরণ।