कोटा रनटाइम की गड़बड़ी को रीसेट करने से जुड़ी समस्या

Apigee Edge का दस्तावेज़ देखा जा रहा है.
Apigee X के दस्तावेज़ पर जाएं.
जानकारी

InvalidRLPolicy

गड़बड़ी का कोड

policies.resetquota.InvalidRLPolicy

गड़बड़ी के जवाब का मुख्य हिस्सा

{
    "fault": {
        "faultstring": "Invalid rate limit policy quota_policy_name",
        "detail": {
            "errorcode": "policies.resetquota.InvalidRLPolicy"
        }
    }
}

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

{
    "fault": {
        "faultstring": "Invalid rate limit policy MyQuotaPolicy",
        "detail": {
            "errorcode": "policies.resetquota.InvalidRLPolicy"
        }
    }
}

वजह

यह गड़बड़ी तब होती है, जब कोटा नीति को रीसेट करने की नीति के <Quota> एलिमेंट में बताई गई कोटा नीति, एपीआई प्रॉक्सी में तय नहीं की गई हो. <Quota> एलिमेंट ज़रूरी है और यह टारगेट कोटा नीति की पहचान करता है. इस नीति के काउंटर को, कोटा रीसेट करने की नीति की मदद से अपडेट किया जाना चाहिए. टारगेट कोटा की यह नीति, उसी एपीआई प्रॉक्सी में बनाई और तय की जानी चाहिए. साथ ही, यह नीति फ़्लो के दौरान उपलब्ध होनी चाहिए.

उदाहरण के लिए, मान लें कि <Quota> एलिमेंट को यहां दिखाए गए तरीके से तय किया गया है. हालांकि, अगर एपीआई प्रॉक्सी में MyQuotaPolicy तय नहीं किया गया है, तो आपको ऊपर दी गई गड़बड़ी दिखेगी.

<Quota name="MyQuotaPolicy">

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

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

    "faultstring": "Invalid rate limit policy MyQuotaPolicy"
    
  2. एपीआई प्रॉक्सी में कोटा रीसेट करने से जुड़ी हर नीति की जांच करें और जांच करें कि गड़बड़ी कहां हुई है. 'कोटा रीसेट करें' नीति की उस खास नीति की पहचान करें जहां ज़रूरी एलिमेंट <Quota> में बताई गई कोटा नीति, ऊपर दिए गए पहले चरण में बताए गए नाम से मेल खाती हो.

    उदाहरण के लिए, कोटा रीसेट करने की यह नीति, MyQuotaPolicy नाम की कोटा नीति के बारे में बताती है. यह नीति, गड़बड़ी की जानकारी देने वाली स्ट्रिंग में बताई गई नीति से मेल खाती है:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <ResetQuota async="false" continueOnError="false" enabled="true" name="Reset_Quota_Demo">
        <DisplayName>Reset_Quota_Demo</DisplayName>
        <Properties/>
        <Quota name="MyQuotaPolicy">
           <Identifier name="identifierName" ref="request.header.identifier">
                <Allow>100</Allow>
            </Identifier>
        </Quota>
    </ResetQuota>
    
    
  3. यह पता लगाएं कि कोटा की यह नीति, एक ही एपीआई प्रॉक्सी में बनाई और तय की गई है या नहीं. अगर कोटा नीति, उसी एपीआई प्रॉक्सी में मौजूद नहीं है, तो गड़बड़ी की वजह यही है.

    ऊपर दिए गए उदाहरण में, कोटा रीसेट करने की नीति Reset_Quota_Demo लागू होने से पहले, कोटा नीति MyQuotaPolicy को फ़्लो में मौजूद होना चाहिए.

    फ़्लो में कोटा नीति MyQuotaPolicy मौजूद न होने की वजह से, आपको गड़बड़ी का कोड दिखेगा:

"errorcode": "policies.resetquota.InvalidRLPolicy"

रिज़ॉल्यूशन

पक्का करें कि <Quota> एलिमेंट में बताई गई कोटा नीति, एपीआई प्रॉक्सी में बताई गई हो. टारगेट कोटा की यह नीति, कोटा रीसेट करने की नीति के लागू होने पर उपलब्ध होनी चाहिए.

FailedToResolveAllowCountRef

गड़बड़ी का कोड

policies.resetquota.FailedToResolveAllowCountRef

गड़बड़ी के जवाब का मुख्य हिस्सा

Failed to resolve allow count reference reference_name for identifier identifier_name
in ResetQuotaStepDefinition:policy_name;API Proxy:proxy_name;Revision:
revision_number;Environment:env_name;Organization:org_name

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

Failed to resolve allow count reference request.header.allowcount for identifier
identifierName in ResetQuotaStepDefinition:ResetQuota;API Proxy:Reset_Quota;
Revision:10;Environment:test;Organization:demo

क्लाइंट को मिली गड़बड़ी का कोड सिर्फ़: policies.ratelimit.QuotaViolation होगा.

वजह

यह गड़बड़ी तब होती है, जब नीति के <Allow> एलिमेंट में, अनुमति की संख्या वाले वैरिएबल का रेफ़रंस किसी वैल्यू में बदला नहीं जा सकता. यह एलिमेंट ज़रूरी है. इससे कोटा काउंटर कम करने के लिए ज़रूरी रकम का पता चलता है.

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

  1. उस नीति की पहचान करें जिसकी वजह से कोटा रीसेट करने में गड़बड़ी हुई है. साथ ही, उस रेफ़रंस वेरिएबल का नाम भी बताएं जिसे हल नहीं किया जा सका. ये दोनों आइटम आपको गड़बड़ी के जवाब में मिल जाएंगे.

    उदाहरण के लिए, यहां दी गई गड़बड़ी की जानकारी वाली स्ट्रिंग में, नीति का नाम ResetQuota और रेफ़रंस request.header.allowcount है:

    Failed to resolve allow count reference request.header.allowcount for identifier
    identifierName in ResetQuotaStepDefinition:ResetQuota;API Proxy:Reset_Quota;
    Revision:10;Environment:test;Organization:demo
    
  2. कोटा रीसेट करने की नीति वाले एक्सएमएल फ़ीड में, पुष्टि करें कि इस्तेमाल किए गए रेफ़रंस वैरिएबल का नाम, गड़बड़ी के जवाब (ऊपर दिया गया पहला चरण) में बताए गए रेफ़रंस नाम से मेल खाता हो.

    उदाहरण के लिए, नीचे दी गई नीति, request.header.allowcount नाम वाले रेफ़रंस के साथ एलिमेंट सेट करती है, जो गड़बड़ी में बताए गए एलिमेंट से मेल खाता है:

    <ResetQuota async="false" continueOnError="false" enabled="true" name="ResetQuota">
        <DisplayName>ResetQuota</DisplayName>
        <Properties/>
        <Quota name="MyQuotaPolicy">
            <Identifier name="identifierName">
                <Allow ref="request.header.allowcount"/>
            </Identifier>
        </Quota>
    </ResetQuota>
    
  3. यह पता लगाएं कि रेफ़रंस वैरिएबल तय किया गया है या नहीं और वह उस फ़्लो में उपलब्ध है या नहीं जिसमें कोटा रीसेट करने की नीति लागू होती है.

  4. अगर वैरिएबल:

    1. दायरे से बाहर है (जिस फ़्लो में नीति लागू की जा रही है उसमें उपलब्ध नहीं है) या
    2. रिज़ॉल्व नहीं किया जा सकता (इसकी परिभाषा नहीं दी गई है)

    तो यह गड़बड़ी की वजह है.

    ऊपर दिए गए उदाहरण में, <Allow>एलिमेंट में अनुमति वाली संख्या की वैल्यू, allowcount नाम वाले अनुरोध हेडर से वापस लाई जानी चाहिए. हालांकि, Edge की मदद से request.header.allowcount की समस्या को हल नहीं किया जा सका. ऐसा तब होता है, जब एपीआई अनुरोध के हिस्से के तौर पर, हेडर allowcount को पास नहीं किया जाता.

    यहां एपीआई अनुरोध का एक सैंपल दिया गया है, जिसमें अनुरोध के हिस्से के तौर पर हेडर allowcount नहीं दिया गया है:

    curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json"
    

    हेडर allowcount को अनुरोध के हिस्से के तौर पर पास नहीं किया जाता है. इसलिए, ऊपर दी गई कोटा रीसेट करने की नीति में एलिमेंट <Allow> में इस्तेमाल किया गया वैरिएबल request.header.allowcount तय नहीं है और इसलिए, इसे हल नहीं किया जा सकता. इसलिए, आपको गड़बड़ी का यह जवाब मिलेगा:

    Failed to resolve allow count reference request.header.allowcount for identifier
    identifierName in ResetQuotaStepDefinition:ResetQuota;API Proxy:Reset_Quota;
    Revision:10;Environment:test;Organization:demo
    

रिज़ॉल्यूशन

पक्का करें कि <Allow> एलिमेंट में रेफ़रंस किया गया वैरिएबल मौजूद हो/तय किया गया हो और उस फ़्लो में उपलब्ध हो जहां कोटा रीसेट करने की नीति लागू होती है.

ऊपर दिए गए उदाहरण को ठीक करने के लिए, allowcount हेडर को शामिल करने के अनुरोध में बदलाव किया जा सकता है. इसका उदाहरण नीचे दिया गया है:

curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json" -H "allowcount:30"

FailedToResolveRLPolicy

गड़बड़ी का कोड

policies.resetquota.FailedToResolveRLPolicy

गड़बड़ी के जवाब का मुख्य हिस्सा

{
    "fault": {
        "faultstring": "Failed to resolve rate limit policy",
        "detail": {
            "errorcode": "policies.resetquota.FailedToResolveRLPolicy"
        }
    }
}

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

{
    "fault": {
        "faultstring": "Failed to resolve rate limit policy",
        "detail": {
            "errorcode": "policies.resetquota.FailedToResolveRLPolicy"
        }
    }
}

वजह

यह गड़बड़ी तब होती है, जब <Quota> एलिमेंट में ref एट्रिब्यूट से रेफ़र किए गए वैरिएबल को हल नहीं किया जा सकता.

उदाहरण के लिए, अगर ref एट्रिब्यूट को <Quota> एलिमेंट में request.header.quotapolicy के तौर पर सेट किया गया है, लेकिन वह एपीआई प्रॉक्सी फ़्लो में उपलब्ध नहीं है, तो आपको ऊपर दी गई गड़बड़ी दिखेगी.

<Quota ref="request.header.quotapolicy">

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

  1. एपीआई प्रॉक्सी में कोटा रीसेट करने से जुड़ी हर नीति की जांच करें और गड़बड़ी की वजह से कोटा रीसेट करने से जुड़ी नीति की पहचान करें, जहां <Quota> एलिमेंट में दिए गए पहचान वैरिएबल के नाम को ठीक से हल नहीं किया जा सकता.

  2. यह पता लगाएं कि वैरिएबल तय किया गया है या नहीं और वह उस फ़्लो में उपलब्ध है या नहीं जिसमें कोटा रीसेट करने की नीति लागू होती है.

  3. अगर वैरिएबल:

    1. दायरे से बाहर है (जिस फ़्लो में नीति लागू होती है उसमें उपलब्ध नहीं है) या
    2. रिज़ॉल्व नहीं किया जा सकता (इसकी परिभाषा नहीं दी गई है)

    तो गड़बड़ी की वजह यही है.

    नीचे दिए गए उदाहरण में, टारगेट कोटा नीति का नाम, quotapolicy नाम वाले अनुरोध हेडर से पाया जाना चाहिए. हालांकि, Edge request.header.quotapolicy को हल नहीं कर पा रहा है. ऐसा तब होता है, जब एपीआई अनुरोध के हिस्से के तौर पर हेडर कोटापॉलिसी को पास नहीं किया जाता.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ResetQuota async="false" continueOnError="false" enabled="true" name="Reset_Quota_Demo">
        <DisplayName>Reset_Quota_Demo</DisplayName>
        <Properties/>
        <Quota ref="request.header.quotapolicy">
            <Identifier name="identifierName" ref="request.header.identifier">
                <Allow>100</Allow>
            </Identifier>
        </Quota>
    </ResetQuota>
    

    यहां एपीआई अनुरोध का एक सैंपल दिया गया है. इसमें अनुरोध के हिस्से के तौर पर, हेडर quotapolicy को पास नहीं किया गया है:

    curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json"
    

    हेडर quotapolicy को अनुरोध के हिस्से के तौर पर पास नहीं किया गया है. इसलिए, ऊपर दी गई कोटा नीति को रीसेट करने वाले एलिमेंट <Quota> में इस्तेमाल किए गए रेफ़रंस request.header.quotapolicy की जानकारी नहीं दी गई है और इसे हल नहीं किया जा सकता. इस वजह से, आपको गड़बड़ी का यह जवाब मिलता है:

    "errorcode": "policies.resetquota.FailedToResolveRLPolicy"
    

रिज़ॉल्यूशन

पक्का करें कि <Quota> एलिमेंट में रेफ़रंस किया गया एट्रिब्यूट ref, रनटाइम पर रिज़ॉल्व हो जाए. साथ ही, यह भी पक्का करें कि वह उस फ़्लो में उपलब्ध हो जहां कोटा रीसेट करने की नीति लागू होती है.

ऊपर दिए गए उदाहरण को ठीक करने के लिए, अनुरोध में बदलाव करके quotapolicy हेडर शामिल किया जा सकता है. इसके लिए, यहां दिया गया तरीका अपनाएं:

curl -v http://demo-eval-test.apigee.net/v1/reset_quota -H "Content-Type: application/json" -H "quotapolicy:MyQuotaPolicy"