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, Kotayı Sıfırla politikasının <Quota> öğesinde belirtilen Kota politikası API proxy'sinde tanımlı değilse ortaya çıkar. <Quota> öğesi zorunludur ve sayacının Kota Sıfırlama politikası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ımlı değilse yukarıdaki hatayı alırsınız.

<Quota name="MyQuotaPolicy">

Teşhis

  1. Kotayı Sıfırlama 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ı adı MyQuotaPolicy: şeklindedir.

    "faultstring": "Invalid rate limit policy MyQuotaPolicy"
    
  2. Hatanın meydana geldiği API Proxy'sinde Kota Sıfırlama politikalarının her birini inceleyin. Zorunlu <Quota> öğesinde belirtilen Kota politikasının, yukarıdaki 1. adımda belirtilen adla eşleştiği özel Kota Sıfırlama politikasını tanımlayın.

    Örneğin, aşağıdaki Kota Sıfırlama politikası, hata dizesindekiyle eşleşen MyQuotaPolicy adlı bir Kota politikasını 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ıda gösterilen örnekte, Kotayı Sıfırlama politikası (Reset_Quota_Demo) yürütülmeden önce akışta MyQuotaPolicy Kota politikasının mevcut olması gerekir.

    Akışta Kota Politikası MyQuotaPolicy bulunmadığı için şu hata kodunu alırsınız:

"errorcode": "policies.resetquota.InvalidRLPolicy"

Çözünürlük

<Quota> öğesinde tanımlanan Kota Politikası'nın API proxy'sinde tanımlandığından emin olun. Bu hedef Kota politikası, Kotayı Sıfırla 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 basit olarak şu şekildedir: policies.ratelimit.QuotaViolation.

Neden

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

Teşhis

  1. Hatanın ortaya çıktığı Kotayı Sıfırlama politikasını ve çözümlenemeyen referans değişkeninin adını tanımlayın. Bu öğelerin ikisini de hata yanıtında bulabilirsiniz.

    Örneğin, aşağıdaki hata dizesinde politika adı ResetQuota ve referans request.header.allowcount'tır:

    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 hatadaki öğeyle eşleşen request.header.allowcount adlı referansa sahip olacak şekilde 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şkenin, Kota Sıfırlama politikasının yürüttüğü akışta tanımlı ve kullanılabilir olup olmadığı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ımlanmadı)

    hatanın nedeni budur.

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

    Aşağıda, isteğin bir parçası olarak allowcount başlığını iletmeyen bir API isteği örneği verilmiştir:

    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ımsızdır ve bu nedenle çözümlenemez. Bu durumda bir hata yanıtı 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 başvurulan 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ğı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 referans verilen 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 mevcut değilse yukarıdaki hatayı alırsınız.

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

Teşhis

  1. Hatanın meydana geldiği API Proxy'sinde Kota Sıfırlama politikalarının her birini inceleyin ve <Quota> öğesinde belirtilen referans değişkeninin adının doğru bir şekilde çözümlenemediği Kotayı Sıfırlama politikasını belirleyin.

  2. Değişkenin tanımlanmış ve Kota Sıfırla politikasının yürütüldüğü akışta kullanılabilir olup olmadığını belirleyin.

  3. Değişken şunlardan biriyse:

    1. kapsam dışı (politikanın uygulandığı belirli akışta kullanılamaz) veya
    2. çözülemiyor (tanımlanmadı)

    hatanın nedeni budur.

    Aşağıdaki örnekte, hedef Kota politikasının adının QUOTApolicy adlı istek başlığından alınması gerekir. Ancak Edge, request.header.quotapolicy sorununu çözemez. Bu durum, QUOTApolicy başlığı API isteğinin bir parçası olarak iletilmezse meydana gelir.

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

    Aşağıda, isteğin bir parçası olarak QUOTApolicy başlığını iletmeyen bir API isteği örneği verilmiştir:

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

    Kotalar başlığı istek kapsamında iletilmediği için, yukarıdaki Kotayı Sıfırla politikasındaki <Quota> öğesinde kullanılan request.header.QUOTApolicy referansı tanımsızdır ve çözümlenemez. Sonuç olarak, şu hata yanıtını alırsınız:

    "errorcode": "policies.resetquota.FailedToResolveRLPolicy"
    

Çözünürlük

<Quota> öğesinde başvurulan ref özelliğinin çalışma zamanında çözümlendiğinden ve Kotayı Sıfırla politikasının yürüttüğü belirli akışta kullanılabilir olduğundan 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"