Lookup Cache ポリシーのデプロイエラーのトラブルシューティング

InvalidTimeout

エラー メッセージ

Edge UI または Edge 管理 API を使用した API プロキシのデプロイに失敗し、次のエラー メッセージが表示されます。

    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.
    

エラーのスクリーンショットの例

原因

LookupCache ポリシー<CacheLookupTimeoutInSeconds> 要素が負の数に設定されている場合、API プロキシのデプロイは失敗します。

たとえば、<CacheLookupTimeoutInSeconds> 要素が -1 場合、API プロキシのデプロイは失敗します。

診断

  1. LookupCache ポリシー<CacheLookupTimeoutInSeconds> 要素に指定された無効な値を特定します。この情報はエラー メッセージから見つけることができます。たとえば、次のエラーでは、<CacheLookupTimeoutInSeconds> 要素に対して使用されている無効な値は -1 です。

    CacheLookupTimeoutInSeconds -1 value should be greater than zero.
        
  2. エラーが発生した特定の API プロキシで、すべての LookupCache ポリシーを調べます。<CacheLookupTimeoutInSeconds> 要素が指定された LookupCache ポリシーが 1 つ以上存在する可能性もあります。<CacheLookupTimeoutInSeconds> 要素に無効な値(上記のステップ 1 で特定されているもの)が指定されている LookUpCache ポリシーを特定します。

    たとえば、次のポリシー構成では、<CacheLookupTimeoutInSeconds> 値が -1 に指定されており、これはエラー メッセージの内容と一致します。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <LookupCache async="false" continueOnError="false" enabled="true" name="LookupCache-Token">
            <DisplayName>LookupCache-Token</DisplayName>
            <Properties/>
            <CacheKey>
                <Prefix/>
                <KeyFragment ref="request.queryparam.client_id"/>
            </CacheKey>
            <CacheLookupTimeoutInSeconds>-1</CacheLookupTimeoutInSeconds>
            <Scope>Exclusive</Scope>
            <ExpirySettings>
                <TimeoutInSec>3600</TimeoutInSec>
            </ExpirySettings>
            <AssignTo>usertoken</AssignTo>
        </LookupCache>
        
  3. <CacheLookupTimeoutInSeconds> が負の整数として指定されている場合、それがエラーの原因です。

解決策

LookupCache ポリシーの <CacheLookupTimeoutInSeconds> 要素の値が、負でない整数として必ず指定するようにします。

上記の LookupCache ポリシーの例を修正するには、<CacheLookupTimeoutInSeconds> 要素を 30 に変更します。

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <LookupCache async="false" continueOnError="false" enabled="true" name="LookupCache-Token">
        <DisplayName>LookupCache-Token</DisplayName>
        <Properties/>
        <CacheKey>
            <Prefix/>
            <KeyFragment ref="request.queryparam.client_id"/>
        </CacheKey>
        <CacheResource>tokencache</CacheResource>
        <CacheLookupTimeoutInSeconds>30</CacheLookupTimeoutInSeconds>
        <Scope>Exclusive</Scope>
        <ExpirySettings>
            <TimeoutInSec>3600</TimeoutInSec>
        </ExpirySettings>
        <AssignTo>usertoken</AssignTo>
    </LookupCache>
    

InvalidCacheResourceReference

エラー メッセージ

Edge UI または Edge 管理 API を使用した API プロキシのデプロイに失敗し、次のエラー メッセージが表示されます。

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

エラー メッセージの例

Error Deploying Revision 2 to test
    Invalid cache resource reference tokencache in Step definition LookupCache-Token. Context Revision:2;APIProxy:TestCache;Organization:kkalckstein-eval;Environment:test
    

エラーのスクリーンショットの例

原因

このエラーは、<CacheResource> 要素が、API プロキシがデプロイされている環境に存在しない名前に設定されている場合に発生します。

診断

  1. LookupCache ポリシー<CacheResource> 要素で使用されている無効なキャッシュと、エラーが発生した環境を特定します。これらの両方の項目は、エラー メッセージの中から見つけることができます。たとえば、次のエラーでは、無効なキャッシュの名前は tokencache で、環境名は test です。

    Invalid cache resource reference tokencache in Step definition LookupCache-Token. Context Revision:2;APIProxy:TestCache;Organization:kkalckstein-eval;Environment:test
        
  2. エラーが発生した特定の API プロキシで、すべての LookupCache ポリシーを調べます。<CacheResource> 要素で無効なキャッシュ(ステップ 1 で識別される)が指定されている特定の LookupCache ポリシーを特定します。

    たとえば、次のポリシーでは、<CacheResource> の値を tokencache として指定しており、これはエラー メッセージの内容と一致します。

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
        <LookupCache async="false" continueOnError="false" enabled="true" name="LookupCache-Token">
            <DisplayName>LookupCache-Token</DisplayName>
            <Properties/>
            <CacheKey>
                <Prefix/>
                <KeyFragment ref="request.queryparam.client_id"/>
            </CacheKey>
            <CacheResource>tokencache</CacheResource>
            <CacheLookupTimeoutInSeconds/>
            <Scope>Exclusive</Scope>
            <ExpirySettings>
                <TimeoutInSec>3600</TimeoutInSec>
            </ExpirySettings>
            <AssignTo>usertoken</AssignTo>
        </LookupCache>
        
  3. (ステップ 1 で判別した)キャッシュが、(ステップ 1 で特定された)特定の環境で定義されているかどうかを確認します。

    Edge UI で、[ADMIN] > [Environment] > [test] に移動し、[Environment Configuration] の [Caches] タブにキャッシュが存在するかどうかを確認します。キャッシュが存在しない場合は、それがエラーの原因です。

    たとえば、以下のスクリーンショットでは、tokencache という名前のキャッシュが存在しないことがわかります。

    tokencache という名前のキャッシュが test 環境で定義されていないため、次のエラーが発生します。

    Invalid cache resource reference tokencache in Step definition LookupCache-Token. Context Revision:2;APIProxy:TestCache;Organization:kkalckstein-eval;Environment:test
    
        

解決策

<CacheResource> 要素で指定されたキャッシュ名が、API プロキシをデプロイする環境で作成されているようにします。

キャッシュの作成方法については、環境キャッシュの作成と編集をご覧ください。

CacheNotFound

エラー メッセージ

Edge UI または Edge 管理 API を使用した API プロキシのデプロイで、次のようなエラー メッセージが表示され、API プロキシのデプロイ ステータスは部分的にデプロイされたものとしてマークされます。

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

エラー メッセージの例

    Error Cache : configCache, not found in organization : kkalckstein-eval__test
    

原因

このエラーは、エラー メッセージに記載されている特定のキャッシュが特定の Message Processor コンポーネント上に作成されていない場合に発生します。

解決策

Private Cloud ユーザーは、次の手順に従います。

  1. デプロイ管理 API を実行し、どの Message Processor にエラー steps.cache.CacheNotFound があるかを判別します。

        curl -u $USERID:$USERPASSWORD http://:8080/v1/organizations//environments//apis//revisions//deployments

    出力例

    {
          "aPIProxy" : "TestCache",
          "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 : configCache, not found in organization : kkalckstein-eval__test",
            "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 が発生した Message Processor の UUID をメモします。その UUID に関連付けられている Message Processor のホスト名 / IP アドレスを特定します。

  3. 特定の Message Processor にログインし、次のコマンドを使用して再起動します。

    apigee-service edge-message-processor restart

Public Cloud ユーザーである場合、または Private Cloud で問題が解決しない場合は、Apigee サポートに連絡して支援を求めてください。