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

आपको 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 अमान्य या खाली है.

डायग्नोसिस के सामान्य चरण

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

    गड़बड़ी के मैसेज का उदाहरण

    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. इस उदाहरण में, "या" के बीच कोई स्पेस नहीं है. ऑपरेटर और फिर अगली शर्त. इसलिए, जब दूसरी शर्त को पार्स किया जाता है, तो EQUALS ऑपरेटर के लिए पहला एक्सप्रेशन "or(fault.name" के तौर पर लिया जाता है. यह वैरिएबल का मान्य नाम नहीं है. इसलिए, इसे मान्य डेटा एक्सप्रेशन नहीं माना जाता है. जिसके कारण आपको यह अपवाद मिलता है:

    com.apigee.expressions.parser.ParseException: Both the operands for EQUALS expression should be data expressions
    
    

रिज़ॉल्यूशन

  1. पक्का करें कि ऑपरेटर के दोनों ओर आपके पास सही डेटा एक्सप्रेशन हों.
  2. ऊपर बताए गए उदाहरण में, समाधान यह पक्का करने के लिए था कि "या" ऑपरेटर का उपयोग करें, जो कोड स्निपेट में बताया गया है:

    <Condition>
               (fault.name = "invalid_access_token") or (fault.name = "ApiKeyNotApproved")
    </Condition>
    
    

MessagesLoging की नीति में अमान्य होस्ट नेम

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

  1. अगर मैसेज प्रोसेसर लॉग में, आपको एपीआई प्रॉक्सी या शेयर किए गए फ़्लो के डिप्लॉयमेंट के दौरान, "अमान्य HostName" मैसेज में कोई अपवाद दिखता है, तो दूसरे चरण पर जाएं. अगर ऐसा नहीं है, तो अमान्य 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. ऊपर दिए गए अपवाद से पता चलता है कि "अमान्य HostName '<hostname>' की वजह से डिप्लॉयमेंट नहीं हो पा रहा है Syslog हैंडलर के लिए". इससे पता चलता है कि MessageLogging नीति में इस्तेमाल किया गया HostName एक अमान्य होस्टनेम है.

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

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

रिज़ॉल्यूशन

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

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

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

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

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

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

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

    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. KeyValuemapOperations नीति में बदलाव करें, ताकि KeyValueMap का सही नाम सही तरीके से डाला जा सके.
  2. ऊपर दिए गए उदाहरण में, हमने 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 की सहायता टीम से संपर्क करें और उन्हें इकट्ठा की गई जानकारी दें.

  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. इस प्लेबुक में आज़माए गए सेक्शन के बारे में जानकारी और ऐसी अन्य अहम जानकारी दी गई है जिससे हमें इस समस्या को तेज़ी से हल करने में मदद मिलेगी.