تحديد وحلّ المشاكل المتعلقة بخطأ إعادة ضبط وقت تشغيل الحصة

يتم الآن عرض مستندات 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> مع الاسم المحدّد في الخطوة 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. يمكنك تحديد ما إذا تم إنشاء وتحديد سياسة الحصة هذه داخل الخادم الوكيل نفسه لواجهة برمجة التطبيقات. إذا كانت سياسة الحصة غير موجودة ضمن الخادم الوكيل نفسه لواجهة برمجة التطبيقات، يكون هذا هو سبب الخطأ.

    في المثال الموضّح أعلاه، من المفترض أن تتوفّر سياسة الحصة 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. في ملف XML الذي تعذّر عليه إعادة ضبط سياسة الحصة، تأكَّد من أنّ اسم المتغيّر المرجعي المستخدَم يتطابق مع اسم المرجع المحدّد في استجابة الخطأ (الخطوة 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. حدد ما إذا كان تم تحديد المتغير المرجعي ويتوفر في التدفق الذي يتم فيه تنفيذ سياسة إعادة تعيين الحصة.

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

السبب

يحدث هذا الخطأ إذا تعذّر حلّ المتغيّر الذي تشير إليه السمة ref في العنصر <Quota>.

على سبيل المثال، إذا تم ضبط السمة ref على request.header.quotapolicy في العنصر <Quota> ولكنّها غير متاحة في مسار الخادم الوكيل لواجهة برمجة التطبيقات، سيظهر لك الخطأ أعلاه.

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

التشخيص

  1. يجب التحقّق من جميع سياسات إعادة ضبط الحصص في الخادم الوكيل لواجهة برمجة التطبيقات التي حدثت بها المشكلة وتحديد سياسة إعادة ضبط الحصة التي لا يمكن فيها مطابقة اسم المتغيّر المرجعي المحدَّد في العنصر <Quota> بشكل صحيح.

  2. يتم تحديد ما إذا كان المتغيّر محدّدًا ومتاحًا في التدفق الذي يتم فيه تنفيذ سياسة إعادة ضبط الحصة.

  3. إذا كان المتغير إما:

    1. خارج النطاق (غير متاح في المسار المحدّد الذي يتم فيه تنفيذ السياسة) أو
    2. لا يمكن حلها (غير محددة)

    فسيكون هذا هو سبب الخطأ.

    في المثال المعروض أدناه، من المفترض أن يتم استرداد اسم سياسة الحصة المستهدفة من عنوان الطلب المسمى quotapolicy. ومع ذلك، يتعذّر على Edge حل request.header.quotapolicy. يحدث ذلك إذا لم يتم تمرير العنوان 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 كجزء من الطلب، فإن المرجع request.header.quotapolicy المستخدَم في العنصر <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"