Respons untuk Pemecahan masalah error deployment kebijakan Cache

Anda sedang melihat dokumentasi Apigee Edge.
Buka dokumentasi Apigee X.
info

InvalidTimeout

Pesan Error

Deployment proxy API melalui UI Edge atau Edge management API gagal dengan pesan error ini:

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

Contoh Pesan Error

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

Contoh Screenshot Error

Penyebab

Jika elemen <CacheLookupTimeoutInSeconds> dari kebijakan ResponsCache ditetapkan ke angka negatif, deployment proxy API akan gagal.

Misalnya, jika <CacheLookupTimeoutInSeconds> adalah -1, deployment proxy API akan gagal.

Diagnosis

  1. Identifikasi nilai tidak valid yang digunakan untuk elemen <CacheLookupTimeoutInSeconds> dalam kebijakan ResponseCache. Anda dapat menemukan informasi ini di pesan error. Misalnya, dalam error berikut, nilai yang tidak valid digunakan untuk elemen <CacheLookupTimeoutInSeconds> adalah -1:

    CacheLookupTimeoutInSeconds -1 value should be greater than zero.
    
  2. Periksa semua kebijakan ResponseCache di Proxy API tertentu tempat kegagalan terjadi. Mungkin ada satu atau beberapa kebijakan ResponseCache yang menentukan elemen <CacheLookupTimeoutInSeconds>.

    Misalnya, konfigurasi kebijakan berikut menetapkan <CacheLookupTimeoutInSeconds> ke -1, yang cocok dengan pesan error:

    <?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. Jika <CacheLookupTimeoutInSeconds> ditentukan sebagai bilangan bulat negatif, berarti itulah penyebab error.

Resolusi

Pastikan nilai untuk elemen <CacheLookupTimeoutInSeconds> dalam kebijakan ResponseCache selalu ditentukan sebagai bilangan bulat non-negatif.

Untuk memperbaiki contoh kebijakan ResponseCache yang ditampilkan di atas, Anda dapat mengubah <CacheLookupTimeoutInSeconds> element menjadi 30.

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

Pesan Error

Deployment proxy API melalui UI Edge atau Edge management API gagal dengan pesan error ini:

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

Contoh Pesan Error

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

Contoh Screenshot Error

Penyebab

Error ini terjadi jika elemen <CacheResource> dalam kebijakanResponseCache disetel ke nama yang tidak ada di lingkungan tempat proxy API di-deploy.

Diagnosis

  1. Identifikasi cache tidak valid yang digunakan di elemen <CacheResource> dari kebijakan Cache Respons dan lingkungan tempat error terjadi. Anda dapat menemukan kedua item ini dalam pesan error. Misalnya, dalam error berikut, nama cache yang tidak valid adalah itemscache dan nama lingkungannya adalah prod.

    Invalid cache resource reference itemscache in Step definition ItemsResponseCache. Context Revision:2;APIProxy:StoresInventory;Organization:kkalckstein-eval;Environment:prod
    
  2. Periksa semua kebijakan ResponseCache di Proxy API tertentu tempat kegagalan terjadi. Identifikasi kebijakan ResponseCache tertentu tempat cache yang tidak valid (diidentifikasi pada langkah #1) ditentukan dalam elemen <CacheResource>.

    Misalnya, kebijakan berikut menentukan nilai <CacheResource> sebagai itemscache, yang cocok dengan apa yang ada dalam pesan error:

    <?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. Verifikasi apakah cache (ditentukan di langkah #2) telah ditetapkan di lingkungan tertentu (diidentifikasi pada langkah #1).

    Di UI Edge, buka APIs > Environment Configuration dan periksa apakah cache ada di tab Caches di lingkungan tertentu. Jika cache tidak ada, berarti itulah penyebab error.

    Misalnya, perhatikan pada screenshot di bawah bahwa cache yang bernama itemscache tidak ada.

    Karena cache bernama itemscache tidak ditentukan dalam lingkungan prod, Anda mendapatkan error:

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

Resolusi

Pastikan nama cache yang ditentukan dalam elemen <CacheResource> telah dibuat di lingkungan tempat Anda ingin men-deploy proxy API.

Baca artikel Membuat dan mengedit cache lingkungan untuk informasi tentang cara membuat cache.

ResponseCacheStepAttachmentNotAllowedReq

Pesan Error

Deployment proxy API melalui UI Edge atau Edge management API gagal dengan pesan error ini:

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.

Contoh Pesan Error

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

Contoh Screenshot Error

Penyebab

Error ini terjadi jika kebijakan ResponsCache yang sama dilampirkan ke beberapa jalur permintaan dalam alur proxy API apa pun.

Misalnya, jika Anda memiliki kebijakan ResponseCache yang sama yang dilampirkan dalam Preflow permintaan untuk Proxy dan Target Endpoints, error ini akan terjadi.

Diagnosis

  1. Identifikasi nama kebijakan ResponseCache yang dilampirkan lebih dari sekali. Anda dapat menemukan informasi ini di pesan error. Misalnya, dalam error berikut, nama kebijakan ResponseCache adalah Response‐Cache‐1.

    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. Periksa semua alur permintaan di Proxy dan Target Endpoints Proxy API tempat error terjadi. Jika kebijakan ResponseCache yang sama disertakan dalam dua alur permintaan atau lebih, berarti itulah penyebab error.

    Pada contoh berikut, kebijakan ResponseCache yang sama Response-Cache-1 dikonfigurasi di jalur permintaan PreFlow endpoint proxy default, dan PreFlow endpoint target default:

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

Resolusi

Pastikan kebijakan ResponseCache hanya disertakan ke satu jalur permintaan di semua alur Proxy API.

Untuk memperbaiki contoh yang ditampilkan di atas, hapus kebijakan ResponseCache Response-Cache-1 dari salah satu dari dua alur permintaan.

ResponseCacheStepAttachmentNotAllowedResp

Pesan Error

Deployment proxy API melalui UI Edge atau Edge management API gagal dengan pesan error ini:

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.

Contoh Pesan Error

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

Contoh Screenshot Error

Penyebab

Error ini terjadi jika kebijakan ResponseCache yang sama dilampirkan ke beberapa jalur respons dalam setiap alur proxy API.

Misalnya, jika Anda memiliki kebijakan ResponseCache yang sama yang dilampirkan dalam Preflow respons untuk Proxy dan Target Endpoints, error ini akan terjadi.

Diagnosis

  1. Identifikasi nama kebijakan ResponseCache yang dilampirkan lebih dari sekali. Anda dapat menemukan informasi ini di pesan error. Misalnya, dalam error berikut, nama kebijakan ResponseCache adalah Response-Cache-1.

    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. Periksa semua alur permintaan di Proxy dan Target Endpoints Proxy API tempat error terjadi. Jika kebijakan ResponseCache yang sama disertakan dalam dua atau lebih alur respons, berarti itulah penyebab error.

    Pada contoh berikut, kebijakan ResponseCache yang sama Response-Cache-1 dikonfigurasi di jalur respons PreFlow endpoint proxy default, dan PreFlow endpoint target default:

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

Resolusi

Pastikan kebijakan ResponseCache hanya disertakan ke satu jalur respons di semua alur Proxy API.

Untuk memperbaiki contoh yang ditampilkan di atas, hapus kebijakan ResponseCache Response-Cache-1 dari salah satu dari dua jalur respons.

InvalidMessagePatternForErrorCode

Pesan Error

Deployment proxy API melalui UI Edge atau API pengelolaan Edge gagal dengan salah satu pesan error berikut:

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

ATAU

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

Contoh Pesan Error

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

ATAU

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

Contoh Screenshot Error

ATAU

Penyebab

Error ini terjadi jika elemen <SkipCacheLookup> atau <SkipCachePopulation> dalam kebijakan ResponseCache berisi kondisi yang tidak valid.

Diagnosis

  1. Periksa semua kebijakan ResponseCache di Proxy API tempat error terjadi dan periksa apakah ada kebijakan yang memiliki kondisi yang ditetapkan untuk elemen <SkipCacheLookup> dan/atau <SkipCachePopulation>.

  2. Periksa apakah kondisi yang ditentukan untuk elemen <SkipCacheLookup> dan/atau <SkipCachePopulation> tidak valid. Jika ya, maka itulah penyebab error.

    Pada contoh berikut, elemen <SkipCachePopulation> menggunakan operator JavaScript === untuk memeriksa nilai setara dan jenis sama yang tidak valid.

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

    Karena operator === tidak valid, Anda akan mendapatkan error:

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

Resolusi

Pastikan kondisi yang ditentukan untuk elemen <SkipCacheLookup> dan/atau <SkipCachePopulation> selalu valid.

Untuk memperbaiki contoh kebijakan ResponsCache yang ditampilkan di atas, Anda dapat mengubah <SkipCacheLookup> untuk menggunakan operator =:

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

Pesan Error

Deployment proxy API melalui Edge UI atau Edge management API akan menghasilkan pesan error seperti ini, dan status deployment Proxy API ditandai sebagai di-deploy sebagian:

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

Contoh Pesan Error

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

Penyebab

Error ini terjadi jika cache tertentu yang disebutkan dalam pesan error tidak dibuat di komponen Pemroses Pesan tertentu.

Resolusi

Jika Anda adalah pengguna Private Cloud, ikuti petunjuk di bawah ini:

  1. Cantumkan deployment proxy API, lalu tentukan Pemroses Pesan mana yang mengalami error steps.cache.CacheNotFound.

    Contoh Output

    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. Perhatikan UUID Pemroses Pesan tempat Anda mengamati error steps.cache.CacheNotFound. Identifikasi nama host/alamat IP Pemroses Pesan dari UUID.

  3. Login ke Pemroses Pesan tertentu, lalu mulai ulang menggunakan perintah berikut:

    apigee-service edge-message-processor restart

Jika Anda adalah pengguna Public Cloud atau jika masalah terus berlanjut untuk Private Cloud, hubungi Dukungan Apigee untuk mendapatkan bantuan.