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

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

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

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

    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 एट्रिब्यूट कोrequest.header.quotapolicy <Quota> एलिमेंट है, लेकिन यह एपीआई प्रॉक्सी फ़्लो में उपलब्ध नहीं है, तो आपको ऊपर दी गई गड़बड़ी.

<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>
    

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

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

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

    "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"