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

Apigee Edge belgelerini görüntülüyorsunuz.
. Git: Apigee X belgeleri.
bilgi

InvalidTimeout

Hata Mesajı

API proxy'sinin Edge Kullanıcı Arayüzü veya Edge management API üzerinden dağıtılması şu hata mesajını gösterir:

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

Bir 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> -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 değeridir:

    CacheLookupTimeoutInSeconds -1 value should be greater than zero.
    
  2. Hatanın oluştuğu ilgili API Proxy'sinde 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, hata mesajındaki değerle eşleşen -1 olarak ayarlar:

    <?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 değerini 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 üzerinden dağıtılması şu hata mesajını gösterir:

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, bir 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. İlgili API Proxy'sindeki tüm ResponseCache politikalarını inceleyin. olmuştur. Geçersiz önbelleğin bulunduğu belirli ResponseCache politikasını tanımlayın (1. adımda tanımlanır) <CacheResource> öğesinde belirtilir.

    Örneğin, aşağıdaki politika <CacheResource> değerini itemscache değeri, hata mesajındakiyle eşleşiyor:

    <?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) ilgili 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ı'nı tıklayın ve önbelleğin, ilgili ortamda Önbellekler sekmesinde olup olmadığını kontrol edin. Önbellek mevcut değilse hatanın nedeni budur.

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

    itemscache adlı önbellek prod ortamında tanımlanmadığından hata mesajını 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 üzerinden dağıtılması şu hata mesajını gösterir:

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, API proxy'sinin herhangi bir akışı içindeki birden fazla istek yoluna aynı ResponseCache politikası eklendiğinde ortaya çıkar.

Örneğin, hem Proxy hem de Hedef Uç Uç Nokta'nın istek ön akışına aynı ResponseCache politikası eklenmişse bu hata oluşur.

Teşhis

  1. Birden çok 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'sinin 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 varsayılan proxy uç noktası PreFlow'un istek yolunda aynı ResponseCache politikası Response-Cache-1 ve varsayılan hedef uç nokta PreFlow 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

ResponseCache politikasının tüm API Proxy'lerinde yalnızca bir istek yoluna eklendiğinden emin olun.

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

ResponseCacheStepAttachmentNotAllowedResp

Hata Mesajı

API proxy'sinin Edge Kullanıcı Arayüzü veya Edge management API üzerinden dağıtılması şu hata mesajını gösterir:

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, API proxy'sinin herhangi bir akışı içindeki birden fazla yanıt yoluna aynı ResponseCache politikası eklenirse ortaya çıkar.

Örneğin, hem Proxy hem de Hedef Uç Uç Nokta'nın yanıt Ön Akışına aynı ResponseCache politikası eklenmişse bu hata oluşur.

Teşhis

  1. Birden çok 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 şeklindedir.

    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'sinin Proxy ve Hedef Uç Noktalarındaki tüm istek akışlarını inceleyin. İki veya daha fazla yanıt akışına aynı ResponseCache politikası eklenirse hatanın nedeni budur.

    Aşağıdaki örnekte varsayılan proxy uç noktası PreFlow'un yanıt yolunda aynı ResponseCache politikası Response-Cache-1 ve varsayılan hedef uç noktası PreFlow 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

ResponseCache politikasının tüm API Proxy'lerinde yalnızca bir yanıt yoluna eklendiğinden emin olun.

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

InvalidMessagePatternForErrorCode

Hata Mesajı

API proxy'sinin Edge Kullanıcı Arayüzü veya Edge management API üzerinden dağıtılması 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. Hatanın oluştuğu API Proxy'sinde tüm ResponseCache politikalarını inceleyin ve <SkipCacheLookup> ve/veya <SkipCachePopulation> öğeleri için belirtilmiş koşullara sahip herhangi bir politika olup olmadığını kontrol edin.

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

    Aşağıdaki örnekte <SkipCachePopulation> öğesi, geçersiz değer ve eşittir türünü 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> öğesini, = 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ı sonucunda şu şekilde bir hata mesajı görüntülenir ve API Proxy'sinin dağıtım durumu kısmen dağıtıldı 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 önbellek, belirli bir İleti İşleyici bileşeninde oluşturulmadıysa ortaya çıkar.

Çö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 işleyicilerin steps.cache.CacheNotFound hatasına sahip 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ördüğünüz Mesaj İşleyici'nin UUID'lerini not edin. UUID'den Mesaj İşleyici'nin ana makine adını/IP adresini tanımlayın.

  3. Belirtilen İleti İşleyen'e giriş yapın ve aşağıdaki komutu kullanarak yeniden başlatın:

    apigee-service edge-message-processor restart

Public Cloud'u kullanıyorsanız veya Private Cloud ile ilgili sorun devam ediyorsa yardım için Apigee Destek Ekibi ile iletişime geçin.