Yanıt Önbelleği politikası dağıtım hatasıyla ilgili sorunları giderme

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

InvalidTimeout

Hata Mesajı

API proxy'sinin Edge kullanıcı arayüzü veya Edge Management API aracılığıyla dağıtılması şu hata mesajıyla başarısız olur:

Error Saving Revision revision_number
CacheLookupTimeoutInSeconds value value should be greater than zero.

Örnek Hata Mesajı

Error Saving Revision 2
CacheLookupTimeoutInSeconds -1 value should be greater than zero.

Örnek Hata Ekran Görüntüsü

Neden

ResponseCache politikasının <CacheLookupTimeoutInSeconds> öğesi negatif bir sayıya ayarlanırsa API proxy'sinin dağıtımı başarısız olur.

Örneğin, <CacheLookupTimeoutInSeconds> değeri -1 ise API proxy'sinin dağıtımı başarısız olur.

Teşhis

  1. ResponseCache politikasında <CacheLookupTimeoutInSeconds> öğesi için kullanılan geçersiz değeri tanımlayın. Bu bilgileri hata mesajında bulabilirsiniz. Örneğin, aşağıdaki hatada <CacheLookupTimeoutInSeconds> öğesi için kullanılan geçersiz değer -1 şeklindedir:

    CacheLookupTimeoutInSeconds -1 value should be greater than zero.
    
  2. Hatanın oluştuğu API Proxy'sinde bulunan tüm ResponseCache politikalarını inceleyin. <CacheLookupTimeoutInSeconds> öğesinin belirtildiği bir veya daha fazla ResponseCache politikası olabilir.

    Örneğin, aşağıdaki politika yapılandırması, <CacheLookupTimeoutInSeconds> değerini -1 olarak ayarlar ve bu değer, hata mesajındaki metinle eşleşir:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ResponseCache async="false" continueOnError="false" enabled="true" name="Response-Cache-1">
        <DisplayName>Response Cache-1</DisplayName>
        <Properties/>
        <CacheKey>
            <Prefix/>
            <KeyFragment ref="request.uri" type="string"/>
        </CacheKey>
        <Scope>Exclusive</Scope>
        <ExpirySettings>
            <ExpiryDate/>
            <TimeOfDay/>
            <TimeoutInSec ref="">3600</TimeoutInSec>
        </ExpirySettings>
        <CacheLookupTimeoutInSeconds>-1</CacheLookupTimeoutInSeconds>
    </ResponseCache>
    
  3. <CacheLookupTimeoutInSeconds> negatif bir tam sayı olarak belirtilirse hatanın nedeni budur.

Çözünürlük

ResponseCache politikasının <CacheLookupTimeoutInSeconds> öğesi değerinin her zaman negatif olmayan bir tam sayı olarak belirtildiğinden emin olun.

Yukarıda gösterilen örnek ResponseCache politikasını düzeltmek için <CacheLookupTimeoutInSeconds> element politikasını 30 olarak değiştirebilirsiniz.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ResponseCache async="false" continueOnError="false" enabled="true" name="Response-Cache-1">
    <DisplayName>Response Cache-1</DisplayName>
    <Properties/>
    <CacheKey>
        <Prefix/>
        <KeyFragment ref="request.uri" type="string"/>
    </CacheKey>
    <Scope>Exclusive</Scope>
    <ExpirySettings>
        <ExpiryDate/>
        <TimeOfDay/>
        <TimeoutInSec ref="">3600</TimeoutInSec>
    </ExpirySettings>
    <CacheLookupTimeoutInSeconds>30</CacheLookupTimeoutInSeconds>
</ResponseCache>

InvalidCacheResourceReference

Hata Mesajı

API proxy'sinin Edge kullanıcı arayüzü veya Edge Management API aracılığıyla dağıtılması şu hata mesajıyla başarısız olur:

Error Deploying Revision revision_number to environment
Invalid cache resource reference cache_resource in Step definition response_cache_policy_name. Context Revision:revision_number;APIProxy:ResponseCache;Organization:organization;Environment:environment

Örnek Hata Mesajı

Error Deploying Revision 2 to prod
Invalid cache resource reference itemscache in Step definition ItemsResponseCache. Context Revision:2;APIProxy:StoresInventory;Organization:kkalckstein-eval;Environment:prod

Örnek Hata Ekran Görüntüsü

Neden

Bu hata, ResponseCache politikasındaki <CacheResource> öğesi, API proxy'sinin dağıtıldığı ortamda var olmayan bir ada ayarlanırsa ortaya çıkar.

Teşhis

  1. Yanıt Önbelleği politikasının <CacheResource> öğesinde kullanılan geçersiz önbelleği ve hatanın oluştuğu ortamı tanımlayın. Bu öğelerin ikisini de hata mesajında bulabilirsiniz. Örneğin, aşağıdaki hatada geçersiz önbelleğin adı itemscache, ortam adı ise prod şeklindedir.

    Invalid cache resource reference itemscache in Step definition ItemsResponseCache. Context Revision:2;APIProxy:StoresInventory;Organization:kkalckstein-eval;Environment:prod
    
  2. Hatanın oluştuğu API Proxy'sinde tüm ResponseCache politikalarını inceleyin. Geçersiz önbelleğin (1. adımda tanımlanır) <CacheResource> öğesinde belirtildiği spesifik ResponseCache politikasını belirleyin.

    Örneğin, aşağıdaki politikada <CacheResource> değeri itemscache olarak belirtilir. Bu değer, hata mesajındaki metinle eşleşir:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ResponseCache async="false" continueOnError="false" enabled="true" name="ItemsResponseCache">
      <DisplayName>ItemsResponseCache</DisplayName>
      <Properties/>
      <CacheKey>
          <Prefix/>
          <KeyFragment ref="request.uri" type="string"/>
      </CacheKey>
      <CacheResource>itemscache</CacheResource>
      <Scope>Exclusive</Scope>
      <ExpirySettings>
          <ExpiryDate/>
          <TimeOfDay/>
          <TimeoutInSec ref="">3600</TimeoutInSec>
      </ExpirySettings>
      <SkipCacheLookup/>
      <SkipCachePopulation/>
    </ResponseCache>
    
  3. Önbelleğin (2. adımda belirlenir) belirli ortamda (1. adımda tanımlanır) tanımlanıp tanımlanmadığını doğrulayın.

    Edge kullanıcı arayüzünde API'ler > Ortam Yapılandırması'na gidin ve önbelleğin, belirli ortamdaki Önbellekler sekmesinde mevcut olup olmadığını kontrol edin. Önbellek yoksa hatanın nedeni budur.

    Örneğin, aşağıdaki ekran görüntüsünde itemscache adlı önbelleğin var olmadığına dikkat edin.

    itemscache adlı önbellek prod ortamında tanımlanmadığı için şu hatayı alırsınız:

    Invalid cache resource reference does_not_exist in Step definition Response-Cache-1. Context Revision:2;APIProxy:ResponseCache;Organization:kkalckstein-eval;Environment:prod
    

Çözünürlük

<CacheResource> öğesinde belirtilen önbellek adının, API proxy'sini dağıtmak istediğiniz ortamda oluşturulduğundan emin olun.

Önbelleğin nasıl oluşturulacağıyla ilgili bilgi için Ortam önbelleği oluşturma ve düzenleme başlıklı makaleye bakın.

ResponseCacheStepAttachmentNotAllowedReq

Hata Mesajı

API proxy'sinin Edge kullanıcı arayüzü veya Edge Management API aracılığıyla dağıtılması şu hata mesajıyla başarısız olur:

Error Deploying Revision revision_number to environment
Response cache step definition response_cache_policy_name can not be attached more than once in the request path.

Örnek Hata Mesajı

Error Deploying Revision 2 to test
Response cache step definition Response-Cache-1 can not be attached more than once in the request path.

Örnek Hata Ekran Görüntüsü

Neden

Bu hata, bir API proxy'sinin herhangi bir akışındaki birden fazla istek yoluna aynı ResponseCache politikası eklenirse ortaya çıkar.

Örneğin, hem Proxy hem de Hedef Uç Noktalar'ın istek Preflow'una aynı ResponseCache politikası eklenmişse bu hata oluşur.

Teşhis

  1. Birden fazla kez eklenen ResponseCache politikasının adını tanımlayın. Bu bilgileri hata mesajında bulabilirsiniz. Örneğin, aşağıdaki hatada ResponseCache politikasının adı Response‐Cache‐1'dir.

    Error Deploying Revision 2 to test
    Response cache step definition Response-Cache-1 can not be attached more than once in the request path.
    
  2. Hatanın oluştuğu API Proxy'sindeki Proxy ve Hedef Uç Noktaları'ndaki tüm istek akışlarını inceleyin. Aynı ResponseCache politikası iki veya daha fazla istek akışına eklenmişse hatanın nedeni budur.

    Aşağıdaki örnekte aynı ResponseCache politikası Response-Cache-1, varsayılan proxy uç noktası PreFlow'un ve varsayılan hedef uç noktası PreFlow'un istek yolunda yapılandırılmıştır:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ProxyEndpoint name="default">
        <Description/>
        <FaultRules/>
        <PreFlow name="PreFlow">
            <Request>
                <Step>
                    <Name>Response-Cache-1</Name>
                </Step>
            </Request>
        ...
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <TargetEndpoint name="default">
        <Description/>
        <FaultRules/>
        <PreFlow name="PreFlow">
            <Request/>
            <Response/>
        </PreFlow>
        <PostFlow name="PostFlow">
            <Request>
                <Step>
                    <Name>Response-Cache-1</Name>
                </Step>
            </Request>
        ...
    

Çözünürlük

API Proxy'sinin tüm akışlarında yalnızca bir istek yoluna bir ResponseCache politikası eklendiğinden emin olun.

Yukarıda gösterilen örneği düzeltmek için Response-Cache-1 ResponseCache politikasını iki istek akışından birinden kaldırın.

ResponseCacheStepAttachmentNotAllowedResp

Hata Mesajı

API proxy'sinin Edge kullanıcı arayüzü veya Edge Management API aracılığıyla dağıtılması şu hata mesajıyla başarısız olur:

Error Deploying Revision revision_number to environment
Response cache step definition response_cache_policy_name can not be attached more than once in the response path.

Örnek Hata Mesajı

Error Deploying Revision 2 to test
Response cache step definition Response-Cache-1 can not be attached more than once in the response path.

Örnek Hata Ekran Görüntüsü

Neden

Bu hata, aynı ResponseCache politikası bir API proxy'sinin herhangi bir akışındaki birden fazla yanıt yoluna eklenirse ortaya çıkar.

Örneğin, hem Proxy hem de Hedef Uç Noktaları'nın yanıt Preflow'unda aynı ResponseCache politikası varsa bu hata oluşur.

Teşhis

  1. Birden fazla kez eklenen ResponseCache politikasının adını tanımlayın. Bu bilgileri hata mesajında bulabilirsiniz. Örneğin, aşağıdaki hatada ResponseCache politikasının adı Response-Cache-1'dir.

    Error Deploying Revision 2 to test
    Response cache step definition Response-Cache-1 can not be attached more than once in the response path.
    
  2. Hatanın oluştuğu API Proxy'sindeki Proxy ve Hedef Uç Noktaları'ndaki tüm istek akışlarını inceleyin. Aynı ResponseCache politikası iki veya daha fazla yanıt akışına eklenmişse hatanın nedeni budur.

    Aşağıdaki örnekte, varsayılan proxy uç noktası PreFlow'un yanıt yolunda ve varsayılan hedef uç nokta PreFlow'un yanıt yolunda aynı ResponseCache politikası Response-Cache-1 yapılandırılmıştır:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ProxyEndpoint name="default">
        <Description/>
        <FaultRules/>
        <PreFlow name="PreFlow">
            <Request>
                <Step>
                    <Name>Response-Cache</Name>
                </Step>
            </Request>
            <Response>
                <Step>
                    <Name>Response-Cache-1</Name>
                </Step>
            </Response>
        </PreFlow>
        ...
    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <TargetEndpoint name="default">
        <Description/>
        <FaultRules/>
        <PreFlow name="PreFlow">
            <Request/>
            <Response/>
        </PreFlow>
        <PostFlow name="PostFlow">
            <Request/>
            <Response>
                <Step>
                    <Name>Response-Cache-1</Name>
                </Step>
            </Response>
        </PostFlow>
        ...
    

Çözünürlük

API Proxy'sinin tüm akışlarında yalnızca bir yanıt yoluna bir ResponseCache politikası eklendiğinden emin olun.

Yukarıda gösterilen örneği düzeltmek için Response-Cache-1 ResponseCache politikasını iki yanıt yolundan birinden kaldırın.

InvalidMessagePatternForErrorCode

Hata Mesajı

API proxy'sinin Edge kullanıcı arayüzü veya Edge Management API üzerinden dağıtımı, aşağıdaki hata mesajlarından biriyle başarısız olur:

Error Deploying Revision revision_number to environment
Invalid message pattern found for error code steps.cache.InvalidSkipCacheLookUpCondition.

VEYA

Error Deploying Revision revision_number to environment
Invalid message pattern found for error code steps.cache.InvalidSkipCachePopulationCondition.

Örnek Hata Mesajı

Error Deploying Revision 2 to prod
Invalid message pattern found for error code steps.cache.InvalidSkipCacheLookUpCondition.

VEYA

Error Deploying Revision 2 to prod
Invalid message pattern found for error code steps.cache.InvalidSkipCachePopulationCondition.

Örnek Hata Ekran Görüntüsü

VEYA

Neden

Bu hata, ResponseCache politikasındaki <SkipCacheLookup> veya <SkipCachePopulation> öğesi geçersiz bir koşul içeriyorsa ortaya çıkar.

Teşhis

  1. API Proxy'sinde hatanın oluştuğu tüm ResponseCache politikalarını inceleyin ve <SkipCacheLookup> ve/veya <SkipCachePopulation> öğeleri için koşul belirten politikalar olup olmadığını kontrol edin.

  2. <SkipCacheLookup> ve/veya <SkipCachePopulation> öğesi için belirtilen koşulun geçersiz olup olmadığını kontrol edin. Yanıtınız evetse, hatanın nedeni budur.

    Aşağıdaki örnekte <SkipCachePopulation> öğesi, geçersiz olan eşit değeri ve eşit türü kontrol etmek için === JavaScript operatörünü kullanır.

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <ResponseCache async="false" continueOnError="false" enabled="true" name="Response-Cache-1">
        <DisplayName>Response Cache-1</DisplayName>
        <Properties/>
        <CacheKey>
            <Prefix/>
            <KeyFragment ref="request.uri" type="string"/>
        </CacheKey>
        <Scope>Exclusive</Scope>
        <ExpirySettings>
            <ExpiryDate/>
            <TimeOfDay/>
            <TimeoutInSec ref="">3600</TimeoutInSec>
        </ExpirySettings>
        <CacheLookupTimeoutInSeconds>2</CacheLookupTimeoutInSeconds>
        <SkipCacheLookup>request.header.bypass-cache === "true"</SkipCacheLookup>
    </ResponseCache>
    

    === operatörü geçersiz olduğundan şu hatayı alırsınız:

    Invalid message pattern found for error code steps.cache.InvalidSkipCacheLookUpCondition.
    

Çözünürlük

<SkipCacheLookup> ve/veya <SkipCachePopulation> öğeleri için belirtilen koşulun her zaman geçerli olduğundan emin olun.

Yukarıda gösterilen örnek ResponseCache politikasını düzeltmek için <SkipCacheLookup> parametresini = operatörünü kullanacak şekilde değiştirebilirsiniz:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<ResponseCache async="false" continueOnError="false" enabled="true" name="Response-Cache-1">
    <DisplayName>Response Cache-1</DisplayName>
    <Properties/>
    <CacheKey>
        <Prefix/>
        <KeyFragment ref="request.uri" type="string"/>
    </CacheKey>
    <Scope>Exclusive</Scope>
    <ExpirySettings>
        <ExpiryDate/>
        <TimeOfDay/>
        <TimeoutInSec ref="">3600</TimeoutInSec>
    </ExpirySettings>
    <CacheLookupTimeoutInSeconds>2</CacheLookupTimeoutInSeconds>
    <SkipCacheLookup>request.header.bypass-cache = "true"</SkipCacheLookup>
</ResponseCache>

CacheNotFound

Hata Mesajı

API proxy'sinin Edge Kullanıcı Arayüzü veya Edge Management API aracılığıyla dağıtılması aşağıdaki gibi bir hata mesajıyla sonuçlanır ve API Proxy'sinin dağıtım durumu kısmen dağıtılmış olarak işaretlenir:

Error: Cache : cache_resource, not found in organization : organization__environment.

Örnek Hata Mesajı

Error Cache : Response-Cache-1, not found in organization : kkalckstein-eval__prod

Neden

Bu hata, hata mesajında bahsedilen belirli önbellek, belirli bir İleti İşleyici bileşeninde oluşturulmamışsa oluşur.

Çözünürlük

Private Cloud kullanıcısıysanız aşağıdaki talimatları uygulayın:

  1. API proxy dağıtımlarını listeleyin ve hangi Mesaj İşleyicilerinde steps.cache.CacheNotFound hatasının olduğunu belirleyin.

    Örnek Çıkış

    curl -u $USERID:$USERPASSWORD http://<management-server-host>:8080/v1/organizations/<org-name>/environments/<env-name>/apis/<apiproxy-name>/revisions/<revision-number>/deployments
    {
      "aPIProxy" : "ResponseCache",
      "environment" : [ {
        "configuration" : {
          "basePath" : "/",
          "configVersion" : "SHA-512:45d3f39783414d3859bf2dec4135d8f5f9960ee6b2d361db2799c82693a8e3f8b95dbbb37c547eb3c0a3819d8ca51727f390502bcaefdf1f113263521a9023b6",
          "steps" : [ ]
        },
        "name" : "prod",
        "server" : [ {
          "pod" : {
            "name" : "pod1",
            "region" : "us-central1"
          },
          "status" : "deployed",
          "type" : [ "message-processor" ],
          "uUID" : "f2e5e34a-5630-43a9-8fef-48a5b9da76d1"
        }, {
          "pod" : {
            "name" : "pod1",
            "region" : "us-central1"
          },
          "status" : "deployed",
          "type" : [ "message-processor" ],
          "uUID" : "879a6538-a5e0-4503-b142-9cb2b4e0623d"
        }, {
        "error" : "Cache : Response-Cache-1, not found in organization : kkalckstein-eval__prod",
        "errorCode" : "steps.cache.CacheNotFound",
        "status" : "error",
        "type" : [ "message-processor" ],
         "uUID" : "a8f9ce0b-c32d-48a9-b26c-9c75d8bf467d"
    },
    ...
        "state" : "deployed"
      } ],
      "name" : "2",
      "organization" : "kkalckstein-eval"
    
  2. steps.cache.CacheNotFound hatasını gözlemlediğiniz İleti İşleyici'nin UUID'lerini not edin. UUID'den mesaj işleyenin ana makine adını/IP adresini tanımlayın.

  3. İlgili İleti İşleyiciye giriş yapın ve aşağıdaki komutu kullanarak yeniden başlatın:

    apigee-service edge-message-processor restart

Herkese Açık Bulut kullanıcısıysanız veya Private Cloud'da sorun devam ediyorsa yardım için Apigee Destek Ekibi ile iletişime geçin.