डिप्लॉयमेंट से जुड़ी गड़बड़ी वाला कॉन्फ़िगरेशन नहीं हो सका

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 Description समस्या हल करने वाले निर्देश इन पर लागू होते हैं
जावाकॉलआउट नीति में Java क्लास मौजूद नहीं है उस JAR फ़ाइल में Java क्लास मौजूद नहीं है जिसका रेफ़रंस Javaकॉलआउट नीति के तहत दिया जा रहा है. Edge के प्राइवेट क्लाउड उपयोगकर्ता
शर्त के फ़्लो में, शर्तों में गलत ऑपरेंड का इस्तेमाल किया गया शर्तों में, ऑपरेटर के एक या दोनों ओर इस्तेमाल किए गए ऑपरेट/एक्सप्रेशन मान्य नहीं होते.
मैसेज लॉग करने की नीति में अमान्य होस्टनेम MessageLogging नीति में इस्तेमाल किए गए होस्टनेम को हल नहीं किया जा सकता या इसमें कुछ अनचाहे विशेष वर्ण हो सकते हैं.
अमान्य KeyValueMap नाम एपीआई प्रॉक्सी की KeyValueMapOperations नीति में, KeyValueMap अमान्य है या खाली है.

गड़बड़ी का पता लगाने का सामान्य तरीका

  1. एपीआई प्रॉक्सी के उस खास संशोधन के लिए डिप्लॉयमेंट की स्थिति पाएं जिसके लिए आप नीचे दिए गए एपीआई का इस्तेमाल करके डिप्लॉयमेंट की गड़बड़ी देख रहे हैं:

    curl -v <management-server-host>:<port#>/v1/runtime/organizations/<org-name>/environments/<env-name>/apis/<apiproxy-name>/revisions/deployments -u <user>
    
  2. यहां ऊपर दिए गए एपीआई से मिले आउटपुट का एक उदाहरण दिया गया है;

    "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 लॉग देखें. देखें कि क्या एपीआई प्रॉक्सी के डिप्लॉयमेंट के दौरान कोई गड़बड़ी हुई है.

  5. मैसेज प्रोसेसर के लॉग में मिली गड़बड़ी/अपवाद के आधार पर, आपको समस्या को ठीक करने के सही तरीके और समाधान का पालन करना होगा.

  6. नीचे दिए गए सेक्शन में, आम तौर पर देखे जाने वाले कुछ अपवाद दिए गए हैं. ये अपवाद "कॉन्फ़िगरेशन पूरा नहीं हो सका" डिप्लॉयमेंट की गड़बड़ी पैदा करते हैं. साथ ही, उन्हें हल करने और उन्हें हल करने के तरीके भी बताए गए हैं.

वजह: Javaकॉलआउट नीति में Java क्लास मौजूद नहीं है

संक्रमण की जांच

  1. अगर आपको मैसेज प्रोसेसर लॉग में, नीचे दिखाए गए तरीके के मुताबिक, एपीआई प्रॉक्सी (परिनियोजन) के डिप्लॉयमेंट के दौरान "Javaकॉलआउट क्लास को इंस्टैंशिएट करने में असफल" मैसेज के साथ कोई अपवाद दिखता है, तो चरण #2 पर जाएं. अगर ऐसा नहीं है, तो शर्त के फ़्लो की शर्तों में इस्तेमाल किए गए गलत ऑपरेंड पर जाएं.
  2. मैसेज प्रोसेसर, एपीआई प्रॉक्सी के डिप्लॉयमेंट के दौरान नीचे दिया गया अपवाद दिखाता है:

    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. ऊपर दिए गए अपवाद में गड़बड़ी का मैसेज बताता है कि Javaकॉलआउट क्लास com.something.apigee.callout.crypto.main.SecretCallout को इंस्टैंशिएट नहीं किया जा सका. यह गड़बड़ी आम तौर पर तब होती है, जब Java कॉलआउट नीति में बताई गई JAR फ़ाइल या उस पर निर्भर JAR फ़ाइल में कोई खास क्लास उपलब्ध नहीं होती.

  4. वह JAR फ़ाइल देखें जिसमें com.something.apigee.callout.crypto.main पैकेज से जुड़ी सभी क्लास शामिल हैं. साथ ही, पुष्टि करें कि खास क्लास com.something.apigee.callout.crypto.main.SecretCallout मौजूद नहीं है.

रिज़ॉल्यूशन

  1. उस JAR फ़ाइल में वह क्लास जोड़ें जो मौजूद नहीं है और फिर JAR फ़ाइल अपलोड करें.
  2. एपीआई प्रॉक्सी को फिर से डिप्लॉय करें.
  3. ऊपर दिए गए उदाहरण में, हमने इस तरीके से समस्या को हल किया है:
    1. JAR फ़ाइल में वह क्लास com.something.apigee.callout.crypto.main.SecretCallout जोड़ी जा रही है जो मौजूद नहीं है.
    2. अपडेट की गई JAR फ़ाइल अपलोड करना और एपीआई प्रॉक्सी को फिर से डिप्लॉय करना.

वजह: स्थिति के फ़्लो में, ऑपरेटर के साथ गलत ऑपरेंड का इस्तेमाल किया गया

संक्रमण की जांच

  1. अगर आपको मैसेज प्रोसेसर लॉग में, नीचे दिए गए उदाहरण वाले मैसेज में दिखाया गया है कि एपीआई प्रॉक्सी या शेयर किए गए फ़्लो के डिप्लॉयमेंट के दौरान 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. Parseअपवाद - "Both the operands for EQUALS expression should be data expressions" में गड़बड़ी का मैसेज बताता है कि (=) के बराबर वाली शर्त या (=|) ऑपरेटर के साथ आंकड़े वाली शर्त में कोई समस्या नहीं है.

  5. गड़बड़ी के मैसेज में बताए गए खास ऑपरेटर से जुड़े सभी 'शर्त फ़्लो' की शर्तें देखें और देखें कि इनमें से कोई समस्या तो नहीं है:

    1. ऑपरेटर के दोनों ओर के व्यंजक एक ही तरह के होते हैं. उदाहरण के लिए, अगर ऑपरेटर के बाईं ओर एक स्ट्रिंग वैरिएबल है, तो आपको दाईं ओर कोई दूसरा स्ट्रिंग वैरिएबल या स्ट्रिंग वैल्यू रखनी होगी.
    2. ऑपरेटर के बीच मान्य वैरिएबल का इस्तेमाल किया जाता है.
    3. ऑपरेटर और हर एक्सप्रेशन के बीच स्पेस होता है.

  6. अगर ऊपर दी गई कोई भी शर्त पूरी नहीं होती है, तो आपको Parseअपवाद - "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. अगर आपको मैसेज प्रोसेसर लॉग में, एपीआई प्रॉक्सी या शेयर किए गए फ़्लो के डिप्लॉयमेंट के दौरान "अमान्य HostName" मैसेज के साथ कोई अपवाद दिखता है, जैसा कि नीचे दिखाया गया है, तो चरण #2 पर जाएं. अगर नहीं, तो अगली वजह अमान्य KeyValueMap नाम पर जाएं.

    com.apigee.rest.framework.ValidationException: Invalid syslog config: Invalid HostName 'splunkprod.myorg.com/' for Syslog handler
    
  2. इस समस्या को हल करने का तरीका समझने के लिए, चलिए नीचे दिए गए दो उदाहरण देखते हैं.

उदाहरण 1: HostName में अनचाहा खास वर्ण है

  1. मैसेज प्रोसेसर, एपीआई प्रॉक्सी के डिप्लॉयमेंट के दौरान नीचे दिया गया अपवाद दिखाता है:

      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 '<hostname>'" की वजह से डिप्लॉयमेंट नहीं हो पा रहा है. इससे पता चलता है कि MessageLogging नीति में इस्तेमाल किया गया HostName एक अमान्य होस्टनेम है.

  3. मैसेज प्रोसेसर लॉग में अपवाद की जांच करने पर, यह पता चलेगा कि HostName 'splunkprod.myorg.com/'. के आखिर में एक अनचाहा विशेष वर्ण "/" है

  4. यह अनचाहा खास वर्ण डिप्लॉयमेंट की गड़बड़ी की वजह था.

रिज़ॉल्यूशन

  1. समस्या को हल करने के लिए, अनचाहे खास वर्णों को हटाने के लिए, MessageLogging नीति में बदलाव करें.
  2. ऊपर दिए गए उदाहरण में, विशेष वर्ण "/" को MessageLogging नीति से हटा दिया गया था. इससे समस्या हल हो गई.

उदाहरण 2: होस्ट का ऐसा नाम जिसे हल नहीं किया जा सकता

  1. मैसेज प्रोसेसर के लॉग में कुछ लाइनें होती हैं. इनसे पता चलता है कि एपीआई प्रॉक्सी के लिए डिप्लॉयमेंट इवेंट को ट्रिगर किया गया है. इसके बाद, एपीआई प्रॉक्सी को डिप्लॉय करते समय एक अपवाद दिखता है:

    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 '<hostname>'" की वजह से डिप्लॉयमेंट नहीं हो पा रहा है.

  3. अगर आपने अपवाद के तौर पर ऊपर दी गई लाइन पढ़ी है, तो आपको पता चलेगा कि मैसेज प्रोसेसर, MessageLogging नीति में दिए गए होस्टनेम 'input-prd.cloud.splunk.com' का समाधान नहीं कर पा रहा है.

  4. इसकी पुष्टि करने के लिए, मैसेज लॉग करने की नीति में इस्तेमाल किए गए होस्टनेम और पोर्ट # पर टेलनेट करने की कोशिश की जा सकती है.

    1. API प्रॉक्सी के खास वर्शन में MessageLogging नीति की जांच करें और इस्तेमाल किए गए होस्टनेम और पोर्ट # की पुष्टि करें. ऊपर दिए गए उदाहरण में, एपीआई प्रॉक्सी का नाम: myapi, version: 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. इस उदाहरण के लिए, हमने टेलनेट को आज़माया और हमें वही गड़बड़ी मिली जो Message प्रोसेसर के लॉग में दिखती है:

      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. अगर आपको मैसेज प्रोसेसर लॉग में, एपीआई प्रॉक्सी या शेयर किए गए फ़्लो के डिप्लॉयमेंट के दौरान "KeyValueMap का नाम अमान्य है" मैसेज के साथ अपवाद दिखता है, जैसा कि नीचे दिखाया गया है, तो चरण #2 पर जाएं. अगर ऐसा नहीं है, तो गड़बड़ी की जानकारी इकट्ठा करना ज़रूरी है पर जाएं.

    com.apigee.rest.framework.ValidationException: Invalid syslog config: Invalid HostName 'splunkprod.myorg.com/' for Syslog handler
    
  2. इस समस्या को हल करने का तरीका समझने के लिए, आइए एक उदाहरण देखते हैं.

  3. मैसेज प्रोसेसर लॉग का उदाहरण, जिसमें "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. ऊपर दिया गया दूसरा अपवाद यह बताता है कि एपीआई प्रॉक्सी: CustomerAPI, बदलाव: 1 के लिए डिप्लॉयमेंट की गड़बड़ी हुई.

  5. स्टैकट्रेस की जांच करने पर, आपको KeyValuMapOperations की नीति को लागू करने के दौरान, गड़बड़ी दिखती है.

  6. एपीआई प्रॉक्सी बंडल में, आपको एक 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. जैसा कि ऊपर देखा गया है, KeyValueMap का नाम दिखाने वाले mapIdentifier में एक खाली स्ट्रिंग है. 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. इस प्लेबुक में मौजूद जिन सेक्शन को आज़माया गया है उनके बारे में जानकारी. साथ ही, ऐसी अन्य अहम जानकारी जो इस समस्या को तेज़ी से हल करने में हमारी मदद करेगी.