Fehlerbehebung beim Deployment von Antwort-Cache-Richtlinien

<ph type="x-smartling-placeholder"></ph> Sie sehen die Dokumentation zu Apigee Edge.
Gehen Sie zur Apigee X-Dokumentation.
Weitere Informationen

InvalidTimeout

Fehlermeldung

Die Bereitstellung des API-Proxys über die Edge-Benutzeroberfläche oder die Edge-Verwaltungs-API schlägt mit der folgenden Fehlermeldung fehl:

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

Beispiel für Fehlermeldung

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

Beispiel für einen Fehler-Screenshot

Ursache

Wenn das Element <CacheLookupTimeoutInSeconds> einer ResponseCache-Richtlinie auf eine negative Zahl gesetzt ist, schlägt das Deployment des API-Proxys fehl.

Wenn <CacheLookupTimeoutInSeconds> beispielsweise -1 ist, schlägt das Deployment des API-Proxys fehl.

Diagnose

  1. Ermitteln Sie den ungültigen Wert für das Element <CacheLookupTimeoutInSeconds> in der ResponseCache-Richtlinie. Diese Informationen finden Sie in der Fehlermeldung. Im folgenden Fehler ist beispielsweise -1 der ungültige Wert für das Element <CacheLookupTimeoutInSeconds>:

    CacheLookupTimeoutInSeconds -1 value should be greater than zero.
    
  2. Prüfen Sie alle ResponseCache-Richtlinien im jeweiligen API-Proxy, in dem der Fehler aufgetreten ist. Es kann eine oder mehrere ResponseCache-Richtlinien geben, in denen das Element <CacheLookupTimeoutInSeconds> angegeben ist.

    Die folgende Richtlinie legt beispielsweise das Element <CacheLookupTimeoutInSeconds> auf -1 fest, was mit der Angabe im Fehlerstring übereinstimmt:

    <?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. Wenn <CacheLookupTimeoutInSeconds> als negative Ganzzahl angegeben wird, ist dies die Ursache des Fehlers.

Lösung

Der Wert für das Element <CacheLookupTimeoutInSeconds> der ResponseCache-Richtlinie muss immer als nicht negative ganze Zahl angegeben werden.

Um das oben dargestellte Beispiel für eine ResponseCache-Richtlinie zu korrigieren, können Sie <CacheLookupTimeoutInSeconds> element in 30 ändern.

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

Fehlermeldung

Die Bereitstellung des API-Proxys über die Edge-Benutzeroberfläche oder die Edge-Verwaltungs-API schlägt mit der folgenden Fehlermeldung fehl:

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

Beispiel für Fehlermeldung

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

Beispiel für einen Fehler-Screenshot

Ursache

Dieser Fehler tritt auf, wenn für das Element <CacheResource> in einer ResponseCache-Richtlinie ein Name festgelegt ist, der in der Umgebung, in der der API-Proxy bereitgestellt wird, nicht vorhanden ist.

Diagnose

  1. Ermitteln Sie den ungültigen Cache, der im Element <CacheResource> der ResponseCache-Richtlinie verwendet wird, und die Umgebung, in der der Fehler aufgetreten ist. Sie finden beides in der Fehlermeldung. Im folgenden Fehler lautet der Name des ungültigen Cache beispielsweise itemscache und der Name der Umgebung prod.

    Invalid cache resource reference itemscache in Step definition ItemsResponseCache. Context Revision:2;APIProxy:StoresInventory;Organization:kkalckstein-eval;Environment:prod
    
  2. Prüfen Sie alle ResponseCache-Richtlinien im jeweiligen API-Proxy, in dem der Fehler aufgetreten ist. Ermitteln Sie die spezifische ResponseCache-Richtlinie, bei der der in Schritt 1 ermittelte ungültige Cache in Element <CacheResource> angegeben ist.

    Die folgende Richtlinie gibt beispielsweise den Wert von <CacheResource> so an: itemscache, was mit dem Inhalt der Fehlermeldung übereinstimmt:

    <?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. Prüfen Sie, ob der Cache (in Schritt #2 ermittelt) in der spezifischen Umgebung (in Schritt #1 identifiziert) definiert wurde.

    Gehen Sie in der Edge-Benutzeroberfläche zu APIs > Umgebungskonfiguration und prüfen Sie auf dem Tab Caches in der jeweiligen Umgebung, ob der Cache vorhanden ist. Wenn der Cache nicht vorhanden ist, ist dies die Ursache des Fehlers.

    Beachten Sie beispielsweise im folgenden Screenshot, dass der Cache mit dem Namen itemscache nicht existiert.

    Da der Cache mit dem Namen itemscache nicht in der prod-Umgebung definiert ist, wird dieser Fehler ausgegeben:

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

Lösung

Achten Sie darauf, dass der Cache im Element <CacheResource> in der Umgebung erstellt wurde, in der Sie den API-Proxy bereitstellen möchten.

Informationen zum Erstellen des Cache finden Sie unter Erstellen und Bearbeiten eines Umgebungscaches.

ResponseCacheStepAttachmentNotAllowedReq

Fehlermeldung

Die Bereitstellung des API-Proxys über die Edge-Benutzeroberfläche oder die Edge-Verwaltungs-API schlägt mit der folgenden Fehlermeldung fehl:

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.

Beispiel für Fehlermeldung

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

Beispiel für einen Fehler-Screenshot

Ursache

Dieser Fehler tritt auf, wenn dieselbe ResponseCache-Richtlinie an mehrere Anfragepfade innerhalb eines Ablaufs eines API-Proxys angehängt wird.

Wenn Sie beispielsweise dieselbe ResponseCache-Richtlinie im Anfrage-PreFlow der Proxy- und der Ziel-Endpunkte angehängt haben, tritt dieser Fehler auf.

Diagnose

  1. Ermitteln Sie den Namen der ResponseCache-Richtlinie, die mehrmals angehängt ist. Diese Informationen finden Sie in der Fehlermeldung. Im folgenden Fehler lautet der Name der ResponseCache-Richtlinie beispielsweise "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. Prüfen Sie alle Anfrageabläufe in den Proxy- und den Ziel-Endpunkten des API-Proxys, in denen der Fehler aufgetreten ist. Wenn dieselbe ResponseCache-Richtlinie in zwei oder mehr Anfrageabläufen angehängt ist, ist dies die Ursache des Fehlers.

    Im folgenden Beispiel ist dieselbe ResponseCache-Richtlinie Response-Cache-1 im Anfragepfad der PreFlows "Standard-Proxy-Endpunkt" und "Standard-Ziel-Endpunkt" konfiguriert:

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

Lösung

Achten Sie darauf, dass eine ResponseCache-Richtlinie nur einem einzigen Anfragepfad für alle Abläufe des API-Proxys angehängt ist.

Entfernen Sie zur Behebung des Fehlers im Beispiel oben die ResponseCache-Richtlinie Response-Cache-1 aus einem der beiden Anfrageabläufe.

ResponseCacheStepAttachmentNotAllowedResp

Fehlermeldung

Die Bereitstellung des API-Proxys über die Edge-Benutzeroberfläche oder die Edge-Verwaltungs-API schlägt mit der folgenden Fehlermeldung fehl:

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.

Beispiel für Fehlermeldung

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

Beispiel für einen Fehler-Screenshot

Ursache

Dieser Fehler tritt auf, wenn dieselbe ResponseCache-Richtlinie an mehrere Antwortpfade innerhalb eines Ablaufs eines API-Proxys angehängt wird.

Wenn Sie beispielsweise dieselbe ResponseCache-Richtlinie im Antwort-PreFlow der Proxy- und der Ziel-Endpunkte angehängt haben, tritt dieser Fehler auf.

Diagnose

  1. Ermitteln Sie den Namen der ResponseCache-Richtlinie, die mehrmals angehängt ist. Diese Informationen finden Sie in der Fehlermeldung. In der folgenden Fehlermeldung lautet der Name der ResponseCache-Richtlinie beispielsweise 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. Prüfen Sie alle Anfrageabläufe in den Proxy- und den Ziel-Endpunkten des API-Proxys, in denen der Fehler aufgetreten ist. Wenn dieselbe ResponseCache-Richtlinie in zwei oder mehr Antwortabläufen angehängt ist, ist dies die Ursache des Fehlers.

    Im folgenden Beispiel ist dieselbe ResponseCache-Richtlinie Response-Cache-1 im Antwortpfad der PreFlows "Standard-Proxy-Endpunkt" und "Standard-Ziel-Endpunkt" konfiguriert:

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

Lösung

Achten Sie darauf, dass eine ResponseCache-Richtlinie nur einem einzigen Antwortpfad für alle Abläufe des API-Proxys angehängt ist.

Entfernen Sie zur Behebung des Fehlers im Beispiel oben die ResponseCache-Richtlinie Response-Cache-1 aus einem der beiden Antwortpfade.

InvalidMessagePatternForErrorCode

Fehlermeldung

Die Bereitstellung des API-Proxys über die Edge-Benutzeroberfläche oder die Edge-Verwaltungs-API schlägt mit einer der folgenden Fehlermeldungen fehl:

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

ODER

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

Beispiel für Fehlermeldung

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

OR

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

Beispiel für einen Fehler-Screenshot

ODER

Ursache

Dieser Fehler tritt auf, wenn das Element <SkipCacheLookup> oder <SkipCachePopulation> in einer ResponseCache-Richtlinie eine ungültige Bedingung enthält.

Diagnose

  1. Prüfen Sie alle ResponseCache-Richtlinien im API-Proxy mit dem Fehler und prüfen Sie, ob Richtlinien mit Bedingungen für <SkipCacheLookup> und/oder <SkipCachePopulation> angegeben sind.

  2. Prüfen Sie, ob die für die Elemente <SkipCacheLookup> und/oder <SkipCachePopulation> angegebene Bedingung ungültig ist. Wenn ja, ist dies die Ursache des Fehlers.

    Im folgenden Beispiel verwendet das <SkipCachePopulation>-Element den JavaScript-Operator ===, um auf einen gleichen Wert und Typ zu prüfen. Dies ist ungültig.

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

    Da der Operator === ungültig ist, erhalten Sie den Fehler:

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

Lösung

Achten Sie darauf, dass die für <SkipCacheLookup> und/oder <SkipCachePopulation> angegebene Bedingung immer gültig ist.

Zum Korrigieren der oben gezeigten Beispielantwort ResponseCache können Sie <SkipCacheLookup> ändern, um den Operator = zu verwenden:

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

Fehlermeldung

Die Bereitstellung des API-Proxys über die Edge-Benutzeroberfläche oder die Edge-Verwaltungs-API führt zu einer Fehlermeldung wie dieser und der Bereitstellungsstatus des API-Proxys wird als teilweise bereitgestellt markiert:

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

Beispiel für Fehlermeldung

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

Ursache

Dieser Fehler tritt auf, wenn der in der Fehlermeldung erwähnte Cache nicht auf einer bestimmten Message Processor-Komponente erstellt wurde.

Auflösung

Wenn Sie Private Cloud-Nutzer sind, gehen Sie so vor:

  1. Listen Sie die API-Proxy-Bereitstellungen auf und ermitteln Sie, bei welchen Message Processor der Fehler steps.cache.CacheNotFound auftritt.

    Beispielausgabe

    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. Notieren Sie sich die UUID(s) des Message Processor, in der der Fehler steps.cache.CacheNotFound auftritt. Identifizieren Sie den Hostnamen bzw. die IP-Adresse des Message Processor anhand der UUID.

  3. Melden Sie sich beim jeweiligen Message Processor an und starten Sie ihn mit dem folgenden Befehl neu:

    apigee-service edge-message-processor restart

Wenn Sie Public Cloud nutzen oder das Problem bei Private Cloud weiterhin besteht, wenden Sie sich an den Apigee-Support.