回應快取政策部署錯誤

您正在查看 ApigeeApigee Hybrid 說明文件。
查看 Apigee Edge 說明文件。

InvalidTimeout

錯誤訊息

透過 Apigee UI 或 API 部署 API Proxy 時失敗,並顯示以下錯誤訊息:

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

錯誤訊息範例

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

錯誤螢幕截圖範例

儲存修訂版本 2 時發生錯誤。

原因

如果 ResponseCache 政策<CacheLookupTimeoutInSeconds> 元素設為負數,API Proxy 的部署作業就會失敗。

舉例來說,如果 <CacheLookupTimeoutInSeconds>-1,則 API Proxy 的部署作業會失敗。

診斷

  1. 找出 ResponseCache 政策中 <CacheLookupTimeoutInSeconds> 元素使用的無效值。您可以在錯誤訊息中找到這項資訊。舉例來說,在以下錯誤中,<CacheLookupTimeoutInSeconds> 元素使用的無效值為 -1

    CacheLookupTimeoutInSeconds -1 value should be greater than zero.
    
  2. 請檢查發生失敗的特定 API Proxy 中,所有 ResponseCache 政策。您可能會有一或多個 ResponseCache 政策,其中指定了 <CacheLookupTimeoutInSeconds> 元素。

    舉例來說,下列政策設定會將 <CacheLookupTimeoutInSeconds> 設為 -1,這與錯誤訊息中的內容相符:

    <?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> 指定為負整數,則該為錯誤原因。

解決方法

請確認 ResponseCache 政策的 <CacheLookupTimeoutInSeconds> 元素值一律設為非負整數。

如要修正上述 ResponseCache 政策範例,您可以將 <CacheLookupTimeoutInSeconds> element 修改為 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

錯誤訊息

透過 Apigee UI 或 API 部署 API Proxy 時失敗,並顯示以下錯誤訊息:

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

錯誤訊息範例

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

錯誤螢幕截圖範例

將修訂版本 2 部署至產品時發生錯誤。

原因

如果 ResponseCache 政策中的 <CacheResource> 元素設為在部署 API Proxy 的環境中不存在的名稱,就會發生這個錯誤。

診斷

  1. 找出回應快取政策 <CacheResource> 元素中使用的無效快取,以及發生錯誤的環境。您可以在錯誤訊息中找到這兩項項目。舉例來說,在以下錯誤中,無效快取的名稱為 itemscache,環境名稱為 prod

    Invalid cache resource reference itemscache in Step definition ItemsResponseCache. Context Revision:2;APIProxy:StoresInventory;Organization:kkalckstein-eval;Environment:prod
    
  2. 請檢查發生失敗的特定 API Proxy 中,所有 ResponseCache 政策。找出在 <CacheResource> 元素中指定無效快取 (在步驟 1 中指出) 的特定 ResponseCache 政策。

    舉例來說,下列政策會將 <CacheResource> 的值指定為 itemscache,與錯誤訊息中的值相符:

    <?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. 確認快取 (在步驟 2 中判斷) 是否已在特定環境 (在步驟 1 中指出) 中定義。

    在 Apigee UI 中,前往「API」>「環境設定」,然後檢查特定環境的「快取」分頁中是否有快取。如果快取不存在,則是錯誤的原因。

    例如,請注意下方螢幕截圖中,名為 itemscache 的快取不存在。

    「Environment Configuration」(環境設定) 分頁中的「Caches」(快取) 分頁。

    由於 prod 環境中未定義名為 itemscache 的快取,因此您會收到以下錯誤訊息:

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

解決方法

請確認您已在要部署 API Proxy 的環境中,建立 <CacheResource> 元素中指定的快取名稱。

ResponseCacheStepAttachmentNotAllowedReq

錯誤訊息

透過 Apigee UI 或 API 部署 API Proxy 時失敗,並顯示以下錯誤訊息:

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.

錯誤訊息範例

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 至測試時發生錯誤。

原因

如果在 API proxy 的任何流程中,將相同的 ResponseCache 政策附加至多個要求路徑,就會發生這個錯誤。

舉例來說,如果您在 Proxy 和 Target 端點的請求 Preflow 中附加相同的 ResponseCache 政策,就會發生這個錯誤。

診斷

  1. 找出附加多次的 ResponseCache 政策名稱。您可以在錯誤訊息中找到這項資訊。舉例來說,在以下錯誤中,ResponseCache 政策的名稱為 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. 請檢查發生錯誤的 API Proxy 中 Proxy 和目標端點的所有要求流程。如果在兩個以上的要求流程中附加相同的 ResponseCache 政策,就會導致錯誤。

    在下列範例中,同一個 ResponseCache 政策 Response-Cache-1 會在預設 Proxy 端點 PreFlow 和預設目標端點 PreFlow 的要求路徑中設定:

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

解決方法

請確認 ResponseCache 政策只會附加至 API Proxy 所有流程中的一個要求路徑。

如要修正上述範例,請從兩個要求流程中移除 ResponseCache 政策 Response-Cache-1

ResponseCacheStepAttachmentNotAllowedResp

錯誤訊息

透過 Apigee UI 或 API 部署 API Proxy 時失敗,並顯示以下錯誤訊息:

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.

錯誤訊息範例

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 至測試時發生錯誤。

原因

如果在 API Proxy 的任何流程中,將相同的 ResponseCache 政策附加至多個回應路徑,就會發生這項錯誤。

舉例來說,如果您在 Proxy 和 Target 端點的回應 Preflow 中附加相同的 ResponseCache 政策,就會發生這個錯誤。

診斷

  1. 找出附加多次的 ResponseCache 政策名稱。您可以在錯誤訊息中找到這項資訊。舉例來說,在以下錯誤中,ResponseCache 政策的名稱為 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. 請檢查發生錯誤的 API Proxy 中 Proxy 和目標端點的所有要求流程。如果在兩個以上的回應流程中附加相同的 ResponseCache 政策,就會導致錯誤。

    在以下範例中,相同的 ResponseCache 政策 Response-Cache-1 會在預設 Proxy 端點 PreFlow 的回應路徑和預設目標端點 PreFlow 中設定:

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

解決方法

請確認 ResponseCache 政策只附加至 API Proxy 所有流程中的單一回應路徑。

如要修正上述範例,請從兩個回應路徑中移除 ResponseCache 政策 Response-Cache-1

InvalidMessagePatternForErrorCode

錯誤訊息

透過 Apigee UI 或 API 部署 API Proxy 失敗,並顯示下列任一錯誤訊息:

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

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

錯誤訊息範例

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

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

錯誤螢幕截圖範例

將修訂版本 2 部署至產品時發生錯誤 - LookUp。

將修訂版本 2 部署至產品時發生錯誤 - 人口統計資料。

原因

如果 ResponseCache 政策中的 <SkipCacheLookup><SkipCachePopulation> 元素包含無效條件,就會發生這個錯誤。

診斷

  1. 檢查發生錯誤的 API Proxy 中所有 ResponseCache 政策,並確認是否有任何政策針對 <SkipCacheLookup> 和/或 <SkipCachePopulation> 元素指定條件。

  2. 檢查針對 <SkipCacheLookup> 和/或 <SkipCachePopulation> 元素指定的條件是否無效。如果是,那就是錯誤的原因。

    在以下範例中,<SkipCachePopulation> 元素使用 JavaScript 運算子 === 來檢查值和類型是否相等,這項操作無效。

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

    由於運算子 === 無效,因此您會收到以下錯誤訊息:

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

解決方法

確認為 <SkipCacheLookup> 和/或 <SkipCachePopulation> 元素指定的條件一律有效。

如要修正上述範例的 ResponseCache 政策,您可以修改 <SkipCacheLookup> 以使用 = 運算子:

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

錯誤訊息

透過 Apigee UI 或 API 部署 API Proxy 會產生類似以下的錯誤訊息,且 API Proxy 的部署狀態會標示為已部分部署:

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

錯誤訊息範例

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

原因

如果未在特定的 Message Processor 元件上建立錯誤訊息中提及的特定快取,就會發生這個錯誤。

解決方法

如需協助,請與 Apigee 支援團隊聯絡。