Merespons pemecahan masalah error deployment kebijakan cache

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

ini.

InvalidTimeout

Pesan Error

Penyebaran proxy API melalui Edge UI atau Edge API pengelolaan gagal dengan pesan kesalahan 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 yang tidak valid yang digunakan untuk elemen <CacheLookupTimeoutInSeconds> dalam kebijakan ResponseCache. Anda dapat menemukan informasi ini dalam pesan error. Misalnya, dalam error berikut, nilai yang tidak valid yang 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 tempat elemen <CacheLookupTimeoutInSeconds> ditentukan.

    Misalnya, konfigurasi kebijakan berikut menetapkan <CacheLookupTimeoutInSeconds> ke -1, yang cocok dengan isi 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, maka itulah penyebab error.

Resolusi

Pastikan nilai untuk elemen <CacheLookupTimeoutInSeconds> dari 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

Penyebaran proxy API melalui Edge UI atau Edge API pengelolaan gagal dengan pesan kesalahan 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> di kebijakan ResponsCache ditetapkan ke nama yang tidak ada di lingkungan tempat proxy API di-deploy.

Diagnosis

  1. Identifikasi cache yang tidak valid yang digunakan dalam elemen <CacheResource> kebijakan Cache Respons dan lingkungan tempat error terjadi. Anda dapat menemukan kedua item ini di 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 dengan kegagalan yang terjadi. Identifikasi kebijakan ResponseCache tertentu dengan cache yang tidak valid (yang diidentifikasi pada langkah #1) ditentukan dalam elemen <CacheResource>.

    Misalnya, kebijakan berikut menentukan nilai <CacheResource> sebagai itemscache, yang cocok dengan isi 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 pada langkah #2) telah ditentukan dalam lingkungan tertentu (diidentifikasi pada langkah #1).

    Di UI Edge, buka APIs > Konfigurasi Lingkungan dan periksa apakah cache ada di tab Cache di lingkungan tertentu. Jika cache tidak ada, maka itulah penyebab error.

    Misalnya, perhatikan dalam screenshot di bawah bahwa cache dengan nama itemscache tidak ada.

    Karena cache bernama itemscache tidak ditentukan di 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.

Lihat Membuat dan mengedit cache lingkungan untuk informasi tentang cara membuat cache.

ResponseCacheStepAttachmentNotAllowedReq

Pesan Error

Penyebaran proxy API melalui Edge UI atau Edge API pengelolaan gagal dengan pesan kesalahan 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 disertakan ke beberapa jalur permintaan dalam alur proxy API.

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

Diagnosis

  1. Identifikasi nama kebijakan ResponseCache yang dilampirkan lebih dari sekali. Anda dapat menemukan informasi ini dalam 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 Endpoint Target pada Proxy API tempat error terjadi. Jika kebijakan ResponseCache yang sama dilampirkan 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

Penyebaran proxy API melalui Edge UI atau Edge API pengelolaan gagal dengan pesan kesalahan 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 kebijakanResponseCache yang sama disertakan ke beberapa jalur respons dalam alur proxy API apa pun.

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

Diagnosis

  1. Identifikasi nama kebijakan ResponseCache yang dilampirkan lebih dari sekali. Anda dapat menemukan informasi ini dalam 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 Endpoint Target pada Proxy API tempat error terjadi. Jika kebijakan ResponseCache yang sama dilampirkan di dua alur respons atau lebih, maka 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

Penyebaran proxy API melalui Edge UI atau Edge API pengelolaan gagal karena salah satu pesan error ini:

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> di kebijakan ResponsCache 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 ditentukan 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 yang sama dan jenis yang 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 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> agar 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 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 belum dibuat pada komponen Pemroses Pesan tertentu.

Resolusi

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

  1. Buat daftar deployment proxy API dan tentukan Pemroses Pesan yang memiliki 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 Cloud Publik atau jika masalah terus berlanjut untuk Private Cloud, hubungi Dukungan Apigee untuk mendapatkan bantuan.