आपको Apigee Edge दस्तावेज़ दिख रहा है.
अभी तक किसी भी व्यक्ति ने चेक इन नहीं किया है
इस पेज पर जाएं
Apigee X दस्तावेज़. जानकारी
समस्या का ब्यौरा
Edge के यूज़र इंटरफ़ेस (यूआई) या मैनेजमेंट एपीआई की मदद से, एपीआई प्रॉक्सी या शेयर किए गए फ़्लो में किए गए बदलावों का डिप्लॉयमेंट नहीं किया जा सकता, क्योंकि कॉन्फ़िगरेशन नहीं हो सका गड़बड़ी.
गड़बड़ी संदेश
आपको Edge यूज़र इंटरफ़ेस (यूआई) में गड़बड़ी का मैसेज मिलेगा, जैसा कि नीचे दिखाया गया है:
The revision is deployed, but traffic cannot flow.
com.apigee.kernel.exceptions.spi.UncheckedException{ code = application.bootstrap.FailedToConfigure, message = Configuration failed, associated contexts = []}
Edge यूज़र इंटरफ़ेस (यूआई) में गड़बड़ी के सैंपल मैसेज का स्क्रीनशॉट यहां दिया गया है:
संभावित वजहें
"कॉन्फ़िगरेशन नहीं किया जा सका" स्टेटस के हिसाब से, एपीआई प्रॉक्सी को डिप्लॉय नहीं किया जा सकता में गड़बड़ी हुई है. नीचे दी गई टेबल में कुछ ऐसी वजहों की सूची दी गई है जिनकी वजह से यह गड़बड़ी होती है :
Cause | जानकारी | समस्या हल करने के निर्देश इनके लिए लागू होते हैं |
Javaकॉलआउट नीति में Java क्लास मौजूद नहीं है | Javaकॉलआउट नीति से रेफ़र की जा रही JAR फ़ाइल में, Java क्लास मौजूद नहीं है. | Edge के प्राइवेट क्लाउड उपयोगकर्ता |
शर्त फ़्लो में स्थितियों में इस्तेमाल किए गए गलत ऑपरेंड | शर्तों में, एक या दोनों ओर से इस्तेमाल किए जाने वाले ऑपरेट/एक्सप्रेशन मान्य नहीं हैं. | |
मैसेज लॉग करने की नीति में अमान्य होस्टनेम | MessageLogging नीति में इस्तेमाल किए गए होस्टनेम को ठीक नहीं किया जा सकता या इसमें कुछ अनचाहे खास वर्ण हो सकते हैं. | |
KeyValueMap का अमान्य नाम | एपीआई प्रॉक्सी की KeyValueMapOperations नीति में KeyValueMap अमान्य या खाली है. |
डायग्नोसिस के सामान्य चरण
एपीआई प्रॉक्सी के किसी खास वर्शन के डिप्लॉयमेंट की स्थिति से जुड़ी जानकारी पाएं. इसके लिए, नीचे दिए गए एपीआई का इस्तेमाल करके, डिप्लॉयमेंट में होने वाली गड़बड़ी देखी जा रही है:
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
लॉग देखें. देखें कि एपीआई प्रॉक्सी को डिप्लॉय करने के दौरान कोई गड़बड़ी हुई है या नहीं.मैसेज प्रोसेसर लॉग में मिली गड़बड़ी/अपवाद के आधार पर, आपको समस्या हल करने के सही तरीके अपनाने होंगे. साथ ही, उन्हें हल करना होगा.
नीचे दिए गए सेक्शन में, अक्सर देखे जाने वाले कुछ अपवादों के बारे में बताया गया है. इनकी वजह से, डिप्लॉयमेंट में गड़बड़ी "कॉन्फ़िगरेशन नहीं हो सका" होती है. साथ ही, यहां इस समस्या को हल करने और इसे ठीक करने के तरीके भी बताए गए हैं.
कारण: Javaकॉलआउट नीति में Java क्लास मौजूद नहीं है
संक्रमण की जांच
- अगर आपको मैसेज प्रोसेसर लॉग में, एपीआई प्रॉक्सी (DeployEvent) को डिप्लॉय करते समय "Javaकॉलआउट क्लास को इंस्टैंशिएट नहीं किया जा सका" मैसेज के साथ कोई अपवाद दिखता है, तो दूसरे चरण पर जाएं. अगर नहीं, तो शर्त फ़्लो में शर्तों में इस्तेमाल किए गए गलत ऑपरेंड पर जाएं.
एपीआई प्रॉक्सी के डिप्लॉयमेंट के दौरान, मैसेज प्रोसेसर नीचे दिया गया अपवाद दिखाता है:
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>
ऊपर दिए गए अपवाद में गड़बड़ी के मैसेज से पता चलता है कि Javaकॉलआउट क्लास
com.something.apigee.callout.crypto.main.SecretCallout
को इंस्टैंशिएट नहीं किया जा सका. यह गड़बड़ी आम तौर पर तब होती है, जब Javaकॉलआउट नीति या इसकी किसी डिपेंडेंट JAR फ़ाइल में बताई गई JAR फ़ाइल में, कोई क्लास उपलब्ध नहीं होती.उस JAR फ़ाइल की जांच करें जिसमें
com.something.apigee.callout.crypto.main
पैकेज से जुड़ी सभी क्लास शामिल हैं. साथ ही, पुष्टि करें कि क्लासcom.something.apigee.callout.crypto.main.SecretCallout
मौजूद नहीं है.
रिज़ॉल्यूशन
- खास JAR फ़ाइल में वह क्लास जोड़ें जो मौजूद नहीं है और JAR फ़ाइल अपलोड करें.
- एपीआई प्रॉक्सी को फिर से डिप्लॉय करें.
- ऊपर दिए गए उदाहरण में, हमने इस तरह से समस्या को हल किया है:
- JAR फ़ाइल में क्लास
com.something.apigee.callout.crypto.main.SecretCallout
को जोड़ा जा रहा है. - अपडेट की गई JAR फ़ाइल अपलोड करना और एपीआई प्रॉक्सी को फिर से डिप्लॉय करना.
- JAR फ़ाइल में क्लास
वजह: शर्त के फ़्लो में ऑपरेटर के साथ गलत ऑपरेंड का इस्तेमाल किया गया
संक्रमण की जांच
अगर मैसेज प्रोसेसर लॉग में, आपको
com.apigee.expressions.parser.ParseException
एपीआई प्रॉक्सी को डिप्लॉय करने के दौरान या शेयर किए गए फ़्लो की सूचना दिखती है, जैसा कि नीचे उदाहरण में दिए गए मैसेज में दिखाया गया है, तो चरण #2 पर जाएं. अगर ऐसा नहीं है, तो मैसेज लॉग करने की नीति में अमान्य होस्टनेम की अगली वजह पर जाएं.गड़बड़ी के मैसेज का उदाहरण
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>
Parseअपवाद में गड़बड़ी का मैसेज - "
Both the operands for EQUALS expression should be data expressions
" इससे पता चलता है कि एक शर्त जिसमें (=) के बराबर, (!=) के बराबर नहीं या (=|) ऑपरेटर के साथ आंकड़े हैं, में कोई समस्या है.गड़बड़ी के मैसेज में बताए गए ऑपरेटर से जुड़ी सभी शर्तों को देखें और देखें कि उनमें से कोई समस्या तो नहीं है:
- ऑपरेटर के दोनों ओर के एक्सप्रेशन एक ही तरह के हैं. उदाहरण के लिए, अगर आपके ऑपरेटर के बाईं ओर एक स्ट्रिंग वैरिएबल है, तो आपके दाईं ओर एक और स्ट्रिंग वैरिएबल या स्ट्रिंग वैल्यू होनी चाहिए.
- ऑपरेटर के बीच मान्य वैरिएबल का इस्तेमाल किया जाता है.
- ऑपरेटर और हर एक्सप्रेशन के बीच एक स्पेस होता है.
अगर ऊपर दी गई किसी भी शर्त को पूरा नहीं किया जाता है, तो आपको Parseअपवाद - "
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>
MessagesLoging की नीति में अमान्य होस्ट नेम
संक्रमण की जांच
अगर मैसेज प्रोसेसर लॉग में, आपको एपीआई प्रॉक्सी या शेयर किए गए फ़्लो के डिप्लॉयमेंट के दौरान, "अमान्य HostName" मैसेज में कोई अपवाद दिखता है, तो दूसरे चरण पर जाएं. अगर ऐसा नहीं है, तो अमान्य KeyValueMap का नाम अगले कारण पर जाएं.
com.apigee.rest.framework.ValidationException: Invalid syslog config: Invalid HostName 'splunkprod.myorg.com/' for Syslog handler
आइए, नीचे दिए गए दो उदाहरण देखते हैं जिनसे आपको इस समस्या को हल करने का तरीका पता चलेगा.
उदाहरण 1: HostName में अनचाहा विशेष वर्ण होना
एपीआई प्रॉक्सी लागू करने के दौरान, मैसेज प्रोसेसर नीचे दिया गया अपवाद दिखाता है:
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 '<hostname>' की वजह से डिप्लॉयमेंट नहीं हो पा रहा है Syslog हैंडलर के लिए". इससे पता चलता है कि MessageLogging नीति में इस्तेमाल किया गया HostName एक अमान्य होस्टनेम है.
मैसेज प्रोसेसर लॉग में अपवाद की जांच करने पर, ध्यान से यह पता चलता है कि कोई अनचाहा खास वर्ण "/" HostName
'splunkprod.myorg.com/'.
के आखिर मेंडिप्लॉयमेंट में गड़बड़ी की वजह यह अनचाहा खास वर्ण था.
रिज़ॉल्यूशन
- मैसेज लॉग करने की नीति में बदलाव करें, ताकि समस्या को ठीक करने के लिए अनचाहे खास वर्णों को हटाया जा सके.
- ऊपर दिए गए उदाहरण में, खास वर्ण "/" को MessageLogging नीति से हटा दिया गया. इससे समस्या हल हो गई.
दूसरा उदाहरण: होस्ट का ऐसा नाम जिसे हल नहीं किया जा सकता
मैसेज प्रोसेसर लॉग में कुछ लाइनें होती हैं, जो दिखाती हैं कि किसी एपीआई प्रॉक्सी के लिए डिप्लॉयमेंट इवेंट को ट्रिगर किया गया है. इसके बाद, एपीआई प्रॉक्सी को डिप्लॉय करने के दौरान एक अपवाद ट्रिगर होता है:
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>
ऊपर दिए गए अपवाद से पता चलता है कि "अमान्य HostName '<hostname>' की वजह से डिप्लॉयमेंट नहीं हो पा रहा है Syslog हैंडलर के लिए".
अपवाद के ऊपर दी गई लाइन को पढ़ने पर, यह देखा जा सकता है कि मैसेज प्रोसेसर, MessageLogging की नीति में दिए गए होस्टनेम
'input-prd.cloud.splunk.com'
का समाधान नहीं कर पा रहा है.इसकी पुष्टि करने के लिए, मैसेज लॉग करने की नीति में इस्तेमाल किए गए होस्टनेम और पोर्ट # पर टेलनेट करने की कोशिश करें.
एपीआई प्रॉक्सी के खास संशोधन में MessageLogging नीति देखें और इस्तेमाल किए गए होस्टनेम और पोर्ट # की पुष्टि करें. ऊपर दिए गए उदाहरण में, एपीआई प्रॉक्सी का नाम: 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>
खास पोर्ट वाले होस्ट को टेलनेट करें. इस उदाहरण के लिए, हमने टेलनेट का इस्तेमाल किया और हमें मैसेज प्रोसेसर के लॉग में दिखने वाली गड़बड़ी जैसी ही गड़बड़ी मिली:
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 का नाम अमान्य है" मैसेज में कोई अपवाद दिखता है, तो दूसरे चरण पर जाएं. अगर ऐसा नहीं है, तो गड़बड़ी की जानकारी ज़रूर इकट्ठा करें पर जाएं.
com.apigee.rest.framework.ValidationException: Invalid syslog config: Invalid HostName 'splunkprod.myorg.com/' for Syslog handler
आइए, इस समस्या को हल करने और उसे हल करने का तरीका समझने के लिए एक उदाहरण देखें.
मैसेज प्रोसेसर लॉग का उदाहरण, जिसमें "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]
ऊपर दिया गया दूसरा अपवाद बताता है कि एपीआई प्रॉक्सी: CustomerAPI, संशोधन: 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>
जैसा कि ऊपर दिखाया गया है, KeyValueMap का नाम दिखाने वाले mapIdentifier में खाली स्ट्रिंग होती है. KeyValueMap नाम खाली स्ट्रिंग नहीं हो सकती. इस वजह से डिप्लॉयमेंट में गड़बड़ी हुई.
रिज़ॉल्यूशन
- KeyValuemapOperations नीति में बदलाव करें, ताकि KeyValueMap का सही नाम सही तरीके से डाला जा सके.
ऊपर दिए गए उदाहरण में, हमने KeyValueMapOperations में बदलाव करके इस समस्या को हल किया है जैसा कि नीचे दिखाया गया है:
<?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
इस प्लेबुक में आज़माए गए सेक्शन के बारे में जानकारी और ऐसी अन्य अहम जानकारी दी गई है जिससे हमें इस समस्या को तेज़ी से हल करने में मदद मिलेगी.