Kota çalışma zamanı hatasını giderme

Apigee Edge belgelerini görüntülüyorsunuz.
Apigee X belgelerine gidin.
bilgi

InvalidRLPolicy

Hata kodu

policies.resetquota.InvalidRLPolicy

Hata yanıtı gövdesi

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

Örnek hata mesajı

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

Neden

Bu hata, Kota politikasını sıfırla politikasının <Quota> öğesinde belirtilen kota politikası API proxy'sinde tanımlanmamışsa oluşur. <Quota> öğesi zorunludur ve sayaç değeri, kota sıfırlama politikası aracılığıyla güncellenmesi gereken hedef kota politikasını tanımlar. Bu hedef kota politikası aynı API proxy'sinde oluşturulup tanımlanmalı ve akış sırasında kullanılabilir olmalıdır.

Örneğin, <Quota> öğesinin aşağıda gösterildiği gibi tanımlandığını varsayalım. Ancak MyQuotaPolicy, API proxy'sinde tanımlanmamışsa yukarıdaki hatayı alırsınız.

<Quota name="MyQuotaPolicy">

Teşhis

  1. Kota politikasını sıfırlama politikasında belirtilen geçersiz kota politikası adını belirleyin. Kota politikasının adını faultstring'den bulabilirsiniz. Örneğin, aşağıdaki faultstring'de kota politikası adı MyQuotaPolicy:

    "faultstring": "Invalid rate limit policy MyQuotaPolicy"
    
  2. Hatayı içeren API proxy'sindeki her bir kota sıfırlama politikasını inceleyin. Zorunlu öğe <Quota> içinde belirtilen kota politikasının, yukarıdaki 1. adımda tanımlanan adla eşleştiği belirli Kota Sıfırlama politikasını belirleyin.

    Örneğin, aşağıdaki kota sıfırlama politikası, hata dizesindekiyle eşleşen MyQuotaPolicy adlı bir kota politikası belirtir:

    <?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. Bu kota politikasının aynı API proxy'sinde oluşturulup tanımlanmadığını belirleyin. Kota politikası aynı API proxy'sinde mevcut değilse hatanın nedeni budur.

    Yukarıdaki örnekte, kota sıfırlama politikası Reset_Quota_Demo yürütülmeden önce akışta kota politikası MyQuotaPolicy olması gerekir.

    Akışta kota politikası MyQuotaPolicy bulunmadığından şu hata kodunu alırsınız:

"errorcode": "policies.resetquota.InvalidRLPolicy"

Çözünürlük

<Quota> öğesinde belirtilen kota politikasının API proxy'sinde tanımlandığından emin olun. Bu hedef kota politikası, kota sıfırlama politikası yürütüldüğünde kullanılabilir olmalıdır.

FailedToResolveAllowCountRef

Hata kodu

policies.resetquota.FailedToResolveAllowCountRef

Hata yanıtı gövdesi

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

Örnek hata mesajı

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

İstemciye döndürülen hata yalnızca policies.ratelimit.QuotaViolation olacaktır.

Neden

Bu hata, politikanın <Allow> öğesindeki izin verilen sayısı içeren değişkene yapılan referans bir değere çözümlenemediğinde oluşur. Bu öğe zorunludur ve kota sayacını azaltacak tutarı belirtir.

Teşhis

  1. Hatanın oluştuğu Kota Sıfırlama politikasını ve çözümlenemeyen referans değişkeninin adını belirleyin. Bu öğelerin ikisini de hata yanıtında bulabilirsiniz.

    Örneğin, aşağıdaki faultstring'de politika adı ResetQuota, referans ise request.header.allowcount'dir:

    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. Başarısız olan Kota Sıfırlama politikası XML'sinde, kullanılan referans değişkeninin adının hata yanıtında tanımlanan referans adıyla (yukarıdaki 1. adım) eşleştiğini doğrulayın.

    Örneğin, aşağıdaki politika, hata mesajındakiyle eşleşen request.header.allowcount adlı referansa sahip öğeyi ayarlar:

    <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. Referans değişkeninin, kota sıfırlama politikasının yürütüldüğü akışta tanımlanıp tanımlanmadığını ve kullanılabilir olup olmadığını belirleyin.

  4. Değişken şu durumlarda:

    1. kapsam dışı (politikanın yürütüldüğü belirli akışta kullanılamaz) veya
    2. çözümlenemiyor (tanımlanmamış)

    Bu durumda hatanın nedeni budur.

    Yukarıda gösterilen örnekte, <Allow> öğesindeki izin verilen sayı değeri, allowcount adlı istek başlığından alınmalıdır. Ancak Edge, request.header.allowcount değerini çözemiyor. Bu durum, allowcount üstbilgisinin API isteğinin bir parçası olarak iletilmemesi halinde ortaya çıkar.

    İsteğin bir parçası olarak allowcount başlığını geçirmeyen örnek bir API isteğini aşağıda bulabilirsiniz:

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

    allowcount başlığı istek kapsamında iletilmediği için yukarıdaki kota sıfırlama politikasındaki <Allow> öğesinde kullanılan request.header.allowcount değişkeni tanımlanmamıştır ve bu nedenle çözümlenemez. Bu nedenle, şu hata yanıtını alırsınız:

    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
    

Çözünürlük

<Allow> öğesinde referans verilen değişkenin, Kota Sıfırlama politikasının yürütüldüğü belirli akışta mevcut/tanımlanmış ve kullanılabilir olduğundan emin olun.

Yukarıda gösterilen örneği düzeltmek için isteği aşağıdaki gibi değiştirerek allowcount üstbilgisini ekleyebilirsiniz:

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

FailedToResolveRLPolicy

Hata kodu

policies.resetquota.FailedToResolveRLPolicy

Hata yanıtı gövdesi

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

Örnek hata mesajı

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

Neden

Bu hata, <Quota> öğesindeki ref özelliği tarafından referans verilen değişken çözümlenemediğinde oluşur.

Örneğin, ref özelliği <Quota> öğesinde request.header.quotapolicy olarak ayarlanmışsa ancak API proxy akışında kullanılamıyorsa yukarıdaki hatayı alırsınız.

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

Teşhis

  1. Hatayı içeren API proxy'sindeki her bir kota sıfırlama politikasını inceleyin ve <Quota> öğesinde belirtilen referans değişkeninin adının düzgün şekilde çözümlenemediği kota sıfırlama politikasını belirleyin.

  2. Değişkenin, Kota Sıfırlama politikasının yürütüldüğü akışta tanımlanıp tanımlanmadığını ve kullanılabilir olup olmadığını belirleyin.

  3. Değişken şu durumlarda:

    1. kapsam dışı (politikanın yürütüldüğü belirli akışta kullanılamaz) veya
    2. çözümlenemiyor (tanımlanmamış)

    Bu durumda hatanın nedeni budur.

    Aşağıda gösterilen örnekte, hedef kota politikasının adının quotapolicy adlı istek başlığından alınması gerekmektedir. Ancak Edge, request.header.quotapolicy'yi çözemiyor. Bu durum, quotapolicy başlığı API isteğinin bir parçası olarak iletilmediğinde ortaya çıkar.

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

    İsteğin bir parçası olarak quotapolicy üstbilgisini geçirmeyen örnek bir API isteğini aşağıda bulabilirsiniz:

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

    quotapolicy başlığı istek kapsamında iletilmediği için yukarıdaki Kota politikasını sıfırla bölümündeki <Quota> öğesinde kullanılan request.header.quotapolicy referansı tanımlanmamış ve çözümlenemez. Sonuç olarak, şu hata yanıtını alırsınız:

    "errorcode": "policies.resetquota.FailedToResolveRLPolicy"
    

Çözünürlük

<Quota> öğesinde referans verilen ref özelliğinin, çalışma zamanında çözümlendiğinden ve Kota Sıfırlama politikasının yürütüldüğü belirli akışta kullanılabildiğinden emin olun.

Yukarıda gösterilen örneği düzeltmek için isteği aşağıdaki gibi değiştirerek quotapolicy başlığını ekleyebilirsiniz:

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