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

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

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 sıfırlama politikasının <Quota> öğesinde belirtilen kota politikası API proxy'sinde tanımlanmamışsa ortaya çıkar. <Quota> öğesi zorunludur ve sayacı Kotayı Sıfırla 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örüldüğü gibi tanımlandığını varsayalım. Ancak MyQuotaPolicy, API Proxy'sinde tanımlanmazsa yukarıdaki hatayı alırsınız.

<Quota name="MyQuotaPolicy">

Teşhis

  1. Kotayı Sıfırla politikasında belirtilen geçersiz kota politikası adını tanımlayın. Kota politikasının adını hata dizesinde bulabilirsiniz. Örneğin, aşağıdaki hata dizesinde Kota politikasının adı MyQuotaPolicy: şeklindedir

    "faultstring": "Invalid rate limit policy MyQuotaPolicy"
    
  2. Hatanın oluştuğu API Proxy'sindeki Kotayı Sıfırla politikalarının her birini inceleyin. Zorunlu <Quota> öğesinde belirtilen Kota politikasının yukarıdaki 1. Adım'da belirtilen adla eşleştiği özel Kota Sıfırlama politikasını tanımlayın.

    Örneğin, aşağıdaki Kotayı Sıfırla 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'si içinde yer almıyorsa hatanın nedeni budur.

    Yukarıda gösterilen örnekte, Kotayı Sıfırla politikası Reset_Quota_Demo yürütülmeden önce Kota politikası MyQuotaPolicy'ün akışta bulunması gerekir.

    MyQuotaPolicy kota politikası akışta bulunmadığından aşağıdaki hata kodunu alırsınız:

"errorcode": "policies.resetquota.InvalidRLPolicy"

Çözünürlük

<Quota> öğesinde beyan edilen kota politikasının API proxy'sinde tanımlandığından emin olun. Bu hedef Kota politikasının, Kota Sıfırlama politikası yürütüldüğünde kullanılabilir olması gerekir.

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 şöyle olur: policies.ratelimit.QuotaViolation.

Neden

Bu hata, politikanın <Allow> öğesinde izin sayısını içeren değişkene yapılan referans bir değere çözülemiyorsa ortaya çıkar. Bu öğe zorunludur ve kota sayacının azaltılacağı miktarı belirtir.

Teşhis

  1. Hatanın oluştuğu kota sıfırlama politikasını ve çözülemeyen referans değişkeninin adını belirleyin. Bu iki öğeyi de hata yanıtında bulabilirsiniz.

    Örneğin, aşağıdaki hata dizesinde politika adı ResetQuota, referans ise request.header.allowcount şeklindedir:

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

    Örneğin, aşağıdaki politika, öğeyi request.header.allowcount adlı referansla ayarlar. Bu referans, hatada belirtilen referansla eşleşir:

    <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ılıp kullanılamayacağını belirleyin.

  4. Değişken şunlardan biriyse:

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

    Bu durumda, hatanın nedeni budur.

    Yukarıda gösterilen örnekte, <Allow> öğesindeki izin verilen sayının değerinin allowcount adlı istek başlığından alınması gerekir. Ancak Edge, request.header.allowcount parametresini çözemiyor. Bu durum, allowcount başlığı, API isteğinin bir parçası olarak iletilmez.

    İsteğin bir parçası olarak allowcount başlığını iletmeyen örnek bir API isteği aşağıda verilmiştir:

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

    allowcount başlığı, isteğin bir parçası olarak iletilmediğinden, yukarıdaki Kota Sıfırlama politikasında <Allow> öğesinde kullanılan request.header.allowcount değişkeni tanımsızdı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 atıfta bulunulan değişkenin mevcut olduğundan/tanımlandığından 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ğıda gösterildiği gibi allowcount başlığını içerecek şekilde değiştirebilirsiniz:

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 başvurulan değişken çözümlenemezse ortaya çıkar.

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

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

Teşhis

  1. API Proxy'de hatanın oluştuğu kota sıfırlama politikalarının her birini inceleyin ve <Quota> öğesinde belirtilen referans değişkeninin adının düzgün şekilde çözülemediğ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ılıp kullanılamayacağını belirleyin.

  3. Değişken şunlardan biriyse:

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

    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ı beklenmektedir. Ancak Edge, request.header.quotapolicy parametresini çözemiyor. Bu durum, quotapolicy başlığının API isteğinin bir parçası olarak iletilmemesi durumunda gerçekleşir.

    <?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 üst bilgisini iletmeyen örnek bir API isteği aşağıda verilmiştir:

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

    quotapolicy üstbilgisi istek kapsamında iletilmediğinden, yukarıdaki "Kota politikasını sıfırla" bölümündeki <Quota> öğesinde kullanılan request.header.quotapolicy referansı tanımlanmamış ve çözülememiştir. 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üldüğünden 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ğıda gösterildiği gibi quotapolicy başlığını içerecek şekilde değiştirebilirsiniz:

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