بازنشانی عیب یابی خطای زمان اجرا سهمیه، عیب یابی خطای زمان اجرا سهمیه مجدد

شما در حال مشاهده مستندات Apigee Edge هستید.
به مستندات Apigee X مراجعه کنید .
اطلاعات

سیاست نامعتبر

کد خطا

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> از سیاست بازنشانی سهمیه‌بندی در پروکسی API تعریف نشده باشد. عنصر <Quota> اجباری است و سیاست سهمیه‌بندی هدف را که شمارنده آن باید از طریق سیاست بازنشانی سهمیه‌بندی به‌روزرسانی شود، مشخص می‌کند. این سیاست سهمیه‌بندی هدف باید در همان پروکسی API ایجاد و تعریف شود و در طول جریان در دسترس باشد.

برای مثال، فرض کنید عنصر <Quota> به صورت زیر تعریف شده باشد، اما اگر MyQuotaPolicy در API Proxy تعریف نشده باشد، خطای بالا را دریافت خواهید کرد.

<Quota name="MyQuotaPolicy">

تشخیص

  1. نام نامعتبر سیاست سهمیه‌بندی مشخص شده در سیاست تنظیم مجدد سهمیه‌بندی را شناسایی کنید. می‌توانید نام سیاست سهمیه‌بندی را از رشته خطا پیدا کنید. برای مثال، در رشته خطای زیر، نام سیاست سهمیه‌بندی MyQuotaPolicy:

    "faultstring": "Invalid rate limit policy MyQuotaPolicy"
    
  2. هر یک از سیاست‌های بازنشانی سهمیه را در پروکسی API که در آن خرابی رخ داده است، بررسی کنید. سیاست خاص بازنشانی سهمیه را که در آن سیاست سهمیه مشخص شده در عنصر اجباری <Quota> با نام مشخص شده در مرحله 1 بالا مطابقت دارد، شناسایی کنید.

    برای مثال، سیاست بازنشانی سهمیه زیر، یک سیاست سهمیه با نام 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. بررسی کنید که آیا این سیاست سهمیه‌بندی در همان پروکسی API ایجاد و تعریف شده است یا خیر. اگر سیاست سهمیه‌بندی در همان پروکسی API وجود ندارد، علت خطا همین است.

    در مثال نشان داده شده در بالا، قرار است سیاست سهمیه‌بندی MyQuotaPolicy قبل از اجرای سیاست تنظیم مجدد سهمیه‌بندی Reset_Quota_Demo در جریان وجود داشته باشد.

    از آنجا که سیاست سهمیه‌بندی MyQuotaPolicy در جریان وجود ندارد، کد خطای زیر را دریافت خواهید کرد:

"errorcode": "policies.resetquota.InvalidRLPolicy"

وضوح تصویر

مطمئن شوید که سیاست سهمیه‌بندی اعلام‌شده در عنصر <Quota> در پروکسی API تعریف شده باشد. این سیاست سهمیه‌بندی هدف باید هنگام اجرای سیاست تنظیم مجدد سهمیه‌بندی در دسترس باشد.

FaledToResolveAllowCountRef انجام نشد

کد خطا

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. سیاست Reset Quota که خطا در آن رخ داده است و نام متغیر مرجعی که قابل حل نیست را شناسایی کنید. می‌توانید هر دوی این موارد را در پاسخ خطا پیدا کنید.

    برای مثال، در رشته خطای زیر، نام سیاست 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. در XML مربوط به سیاست Reset Quota ناموفق، بررسی کنید که نام متغیر مرجع استفاده شده با نام مرجع شناسایی شده در پاسخ خطا (مرحله 1 در بالا) مطابقت داشته باشد.

    برای مثال، سیاست زیر عنصری را با مرجعی به نام 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. تعیین کنید که آیا متغیر مرجع در جریانی که سیاست Reset Quota در آن اجرا می‌شود، تعریف شده و در دسترس است یا خیر.

  4. اگر متغیر یکی از موارد زیر باشد:

    1. خارج از محدوده (در جریان خاصی که سیاست در آن اجرا می‌شود، در دسترس نیست) یا
    2. قابل حل نیست (تعریف نشده است)

    پس علت خطا همینه.

    در مثال نشان داده شده در بالا، قرار است مقدار شمارش مجاز در عنصر <Allow> از سربرگ درخواست با نام allowcount بازیابی شود. با این حال، Edge قادر به حل request.header.allowcount نیست. این اتفاق در صورتی رخ می‌دهد که سربرگ allowcount به عنوان بخشی از درخواست API ارسال نشود.

    در اینجا یک نمونه درخواست API آورده شده است که هدر allowcount را به عنوان بخشی از درخواست ارسال نمی‌کند:

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

    از آنجا که هدر allowcount به عنوان بخشی از درخواست ارسال نشده است، متغیر request.header.allowcount استفاده شده در عنصر <Allow> در سیاست Reset Quota فوق تعریف نشده است و بنابراین قابل حل نیست. بنابراین پاسخ خطا را دریافت خواهید کرد:

    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> در جریان خاصی که سیاست Reset Quota اجرا می‌شود، وجود دارد/تعریف شده و در دسترس است.

برای اصلاح مثال نشان داده شده در بالا، می‌توانید درخواست را طوری تغییر دهید که هدر allowcount را مانند زیر شامل شود:

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

سیاست حل نشد

کد خطا

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

علت

این خطا زمانی رخ می‌دهد که متغیری که توسط ویژگی ref در عنصر <Quota> ارجاع داده می‌شود، قابل حل نباشد.

برای مثال، اگر ویژگی ref در عنصر <Quota> به صورت request.header.quotapolicy تنظیم شده باشد اما در جریان پروکسی API در دسترس نباشد، خطای فوق را دریافت خواهید کرد.

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

تشخیص

  1. هر یک از سیاست‌های بازنشانی سهمیه را در پروکسی API که در آن خرابی رخ داده است، بررسی کنید و سیاست بازنشانی سهمیه را که در آن نام متغیر مرجع مشخص شده در عنصر <Quota> به درستی قابل حل نیست، شناسایی کنید.

  2. تعیین کنید که آیا متغیر در جریانی که سیاست Reset Quota در آن اجرا می‌شود، تعریف شده و در دسترس است یا خیر.

  3. اگر متغیر یکی از موارد زیر باشد:

    1. خارج از محدوده (در جریان خاصی که سیاست در آن اجرا می‌شود، در دسترس نیست) یا
    2. قابل حل نیست (تعریف نشده است)

    پس علت خطا همینه.

    در مثال نشان داده شده در زیر، قرار است نام سیاست سهمیه‌بندی هدف از هدر درخواست با نام quotapolicy بازیابی شود. با این حال، Edge قادر به حل request.header.quotapolicy نیست. این اتفاق در صورتی رخ می‌دهد که هدر quotapolicy به عنوان بخشی از درخواست API ارسال نشود.

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

    در اینجا یک نمونه درخواست API آورده شده است که header quotapolicy را به عنوان بخشی از درخواست ارسال نمی‌کند:

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

    از آنجا که هدر quotapolicy به عنوان بخشی از درخواست ارسال نشده است، مرجع request.header.quotapolicy استفاده شده در عنصر <Quota> در سیاست Reset Quota فوق تعریف نشده است و قابل حل نیست. در نتیجه، پاسخ خطای زیر را دریافت خواهید کرد:

    "errorcode": "policies.resetquota.FailedToResolveRLPolicy"
    

وضوح تصویر

اطمینان حاصل کنید که ref ویژگی که در عنصر <Quota> به آن اشاره شده است، در زمان اجرا حل می‌شود و در جریان خاصی که سیاست تنظیم مجدد سهمیه اجرا می‌شود، در دسترس است.

برای اصلاح مثال نشان داده شده در بالا، می‌توانید درخواست را طوری تغییر دهید که هدر quotapolicy را مانند زیر شامل شود:

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