आपको 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 | ब्यौरा | समस्या हल करने के निर्देश |
| JavaCallout नीति में Java क्लास मौजूद नहीं है | JavaCallout नीति से रेफ़रंस की जा रही JAR फ़ाइल में कोई Java क्लास मौजूद नहीं है. | Edge Private Cloud के उपयोगकर्ताओं के लिए |
| शर्तों के फ़्लो में शर्तों के लिए गलत ऑपरेंड का इस्तेमाल किया गया हो | शर्तों में ऑपरेटर के एक या दोनों तरफ़ इस्तेमाल किए गए ऑपरेंड/एक्सप्रेशन मान्य नहीं हैं. | |
| मैसेज लॉगिंग की नीति में अमान्य होस्टनेम | 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देखें. देखें कि एपीआई प्रॉक्सी को डिप्लॉय करते समय कोई गड़बड़ी तो नहीं हुई है.Message Processor के लॉग में मिली गड़बड़ी/अपवाद के आधार पर, आपको समस्या हल करने के लिए सही तरीका अपनाना होगा.
नीचे दिए गए सेक्शन में, अक्सर दिखने वाली कुछ ऐसी अपवाद स्थितियों के बारे में बताया गया है जिनकी वजह से "कॉन्फ़िगरेशन पूरा नहीं हुआ" डिप्लॉयमेंट की गड़बड़ी होती है. साथ ही, इन गड़बड़ियों को ठीक करने और हल करने का तरीका भी बताया गया है.
वजह: JavaCallout नीति में Java क्लास मौजूद नहीं है
संक्रमण की जांच
- अगर आपको मैसेज प्रोसेसर के लॉग में, एपीआई प्रॉक्सी (DeployEvent) को डिप्लॉय करते समय, "Failed to instantiate the JavaCallout Class" मैसेज के साथ कोई अपवाद दिखता है, तो दूसरे चरण पर जाएं. यह अपवाद यहां दिखाया गया है. अगर ऐसा नहीं है, तो शर्त वाले फ़्लो में शर्तों के लिए इस्तेमाल किए गए गलत ऑपरेंड पर जाएं.
एपीआई प्रॉक्सी को डिप्लॉय करते समय, मैसेज प्रोसेसर में यह अपवाद दिखता है:
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 फ़ाइल अपलोड करें.
- एपीआई प्रॉक्सी को फिर से डिप्लॉय करें.
- ऊपर दिए गए उदाहरण में, हमने इस समस्या को इन तरीकों से ठीक किया है:
- JAR फ़ाइल में, मौजूद नहीं है क्लास
com.something.apigee.callout.crypto.main.SecretCalloutको जोड़ना. - अपडेट की गई JAR फ़ाइल अपलोड करना और एपीआई प्रॉक्सी को फिर से डिप्लॉय करना.
- JAR फ़ाइल में, मौजूद नहीं है क्लास
वजह: कंडीशन फ़्लो में ऑपरेटर के साथ गलत ऑपरेंड का इस्तेमाल किया गया है
संक्रमण की जांच
अगर आपको एपीआई प्रॉक्सी या शेयर किए गए फ़्लो को डिप्लॉय करते समय, मैसेज प्रोसेसर के लॉग में
com.apigee.expressions.parser.ParseExceptionदिखता है, तो दूसरे चरण पर जाएं. उदाहरण के लिए, नीचे दिए गए मैसेज देखें. अगर ऐसा नहीं है, तो Message Logging नीति में अमान्य होस्टनेम की वजह से होने वाली समस्या को ठीक करने का तरीका देखें.गड़बड़ी के मैसेज का उदाहरण
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 with (=|) ऑपरेटर से जुड़ी किसी शर्त में कोई समस्या है.गड़बड़ी के मैसेज में बताए गए ऑपरेटर से जुड़े सभी कंडीशन फ़्लो में दी गई शर्तों को देखें. साथ ही, देखें कि इनमें से कोई समस्या तो नहीं है:
- ऑपरेटर के दोनों ओर मौजूद एक्सप्रेशन एक ही टाइप के हों. उदाहरण के लिए, अगर ऑपरेटर के बाईं ओर कोई स्ट्रिंग वैरिएबल है, तो दाईं ओर भी कोई स्ट्रिंग वैरिएबल या स्ट्रिंग वैल्यू होनी चाहिए.
- ऑपरेटर के बीच मान्य वैरिएबल का इस्तेमाल किया गया हो.
- ऑपरेटर और हर एक्सप्रेशन के बीच स्पेस है.
अगर ऊपर बताई गई कोई भी शर्त पूरी नहीं होती है, तो आपको 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>
MessageLogging नीति में होस्ट का नाम अमान्य है
संक्रमण की जांच
अगर आपको एपीआई प्रॉक्सी या शेयर किए गए फ़्लो को डिप्लॉय करते समय, मैसेज प्रोसेसर के लॉग में "Invalid 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>ऊपर दिए गए अपवाद से पता चलता है कि "Syslog handler के लिए अमान्य होस्टनेम '<hostname>'" की वजह से डिप्लॉयमेंट पूरा नहीं हो सका. इससे पता चलता है कि MessageLogging नीति में इस्तेमाल किया गया HostName, अमान्य होस्टनेम है.
Message Processor के लॉग में मौजूद अपवाद की जांच करने पर पता चलता है कि HostName
'splunkprod.myorg.com/'.के आखिर में "/" नाम का अवांछित खास वर्ण मौजूद हैइस अनचाहे खास वर्ण की वजह से, डिप्लॉयमेंट में गड़बड़ी हुई.
रिज़ॉल्यूशन
- इस समस्या को ठीक करने के लिए, MessageLogging नीति में बदलाव करें. इससे अनचाहे खास वर्णों को हटाया जा सकेगा.
- ऊपर दिए गए उदाहरण में, 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>ऊपर दिए गए अपवाद से पता चलता है कि "Syslog handler के लिए अमान्य होस्टनेम '<hostname>'" की वजह से डिप्लॉयमेंट पूरा नहीं हो सका.
अगर आपने अपवाद के ऊपर दी गई लाइन पढ़ी है, तो आपको पता चलेगा कि मैसेज प्रोसेसर, 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>किसी खास पोर्ट के साथ होस्ट को टेलनेट करें. इस उदाहरण के लिए, हमने टेलनेट का इस्तेमाल किया और हमें वही गड़बड़ी मिली जो Message Processor के लॉग में दिख रही है:
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 का नाम अमान्य है" मैसेज के साथ अपवाद दिखाया गया है. इससे एपीआई प्रॉक्सी डिप्लॉय करने के दौरान गड़बड़ी होती है
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>ऊपर दिए गए उदाहरण में, 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इस प्लेबुक के किन सेक्शन को आज़माया गया है और कोई अन्य अहम जानकारी, जिससे हमें इस समस्या को तेज़ी से हल करने में मदद मिलेगी.