Risoluzione dell'errore di deployment del criterio della cache di risposta

Stai visualizzando la documentazione di Apigee Edge.
Vai alla sezione Documentazione di Apigee X.
Informazioni

InvalidTimeout

Messaggio di errore

Il deployment del proxy API tramite la UI o l'API di gestione perimetrale non va a buon fine e questo messaggio di errore:

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

Messaggio di errore di esempio

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

Screenshot di errore di esempio

Causa

Se l'elemento <CacheLookupTimeoutInSeconds> di un criterio ResponseCache è impostato su un numero negativo, il deployment del proxy API non va a buon fine.

Ad esempio, se <CacheLookupTimeoutInSeconds> è -1, il deployment del proxy API non va a buon fine.

Diagnosi

  1. Identifica il valore non valido utilizzato per l'elemento <CacheLookupTimeoutInSeconds> nel criterio ResponseCache. Puoi trovare queste informazioni nel messaggio di errore. Ad esempio, nel seguente errore, il valore non valido utilizzato per l'elemento <CacheLookupTimeoutInSeconds> è -1:

    CacheLookupTimeoutInSeconds -1 value should be greater than zero.
    
  2. Esamina tutti i criteri di ResponseCache nel proxy API specifico in cui si è verificato l'errore. Potrebbero esserci uno o più criteri di ResponseCache in cui è specificato l'elemento <CacheLookupTimeoutInSeconds>.

    Ad esempio, la seguente configurazione dei criteri imposta <CacheLookupTimeoutInSeconds> su -1, che corrisponde al contenuto del messaggio di errore:

    <?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. Se il valore <CacheLookupTimeoutInSeconds> viene specificato come numero intero negativo, questo è la causa dell'errore.

Risoluzione

Assicurati che il valore dell'elemento <CacheLookupTimeoutInSeconds> del criterio ResponseCache sia sempre specificato come numero intero non negativo.

Per correggere il criterio ResponseCache di esempio mostrato sopra, puoi modificare <CacheLookupTimeoutInSeconds> element in 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

Messaggio di errore

Il deployment del proxy API tramite la UI o l'API di gestione perimetrale non va a buon fine e questo messaggio di errore:

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

Messaggio di errore di esempio

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

Screenshot di errore di esempio

Causa

Questo errore si verifica se l'elemento <CacheResource> in un criterio diResponseCache è impostato su un nome che non esiste nell'ambiente in cui viene eseguito il deployment del proxy API.

Diagnosi

  1. Identifica la cache non valida utilizzata nell'elemento <CacheResource> del criterio Cache di risposta e l'ambiente in cui si è verificato l'errore. Puoi trovare entrambe le voci nel messaggio di errore. Ad esempio, nell'errore seguente, il nome della cache non valida è itemscache e il nome dell'ambiente è prod.

    Invalid cache resource reference itemscache in Step definition ItemsResponseCache. Context Revision:2;APIProxy:StoresInventory;Organization:kkalckstein-eval;Environment:prod
    
  2. Esamina tutti i criteri di ResponseCache nel proxy API specifico in cui l'errore si è verificato un errore. Identifica il criterio ResponseCache specifico in cui la cache non valida (identificato nel passaggio 1) è specificato nell'elemento <CacheResource>.

    Ad esempio, il seguente criterio specifica il valore di <CacheResource> come itemscache, che corrisponde al contenuto del messaggio di errore:

    <?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. Verifica se la cache (determinata nel passaggio 2) è stata definita nell'ambiente specifico (identificato nel passaggio 1).

    Nella UI di Edge, vai ad API > Configurazione dell'ambiente e verifica se la cache esiste nella scheda Cache nell'ambiente specifico. Se la cache non esiste, ciò è la causa dell'errore.

    Ad esempio, nello screenshot seguente puoi notare che la cache denominata itemscache non esiste.

    Poiché la cache denominata itemscache non è definita nell'ambiente prod, viene visualizzato l'errore:

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

Risoluzione

Assicurati che il nome della cache specificato nell'elemento <CacheResource> sia stato creato nell'ambiente in cui vuoi eseguire il deployment del proxy API.

Per informazioni su come creare la cache, consulta Creazione e modifica della cache di un ambiente.

ResponseCacheStepAttachmentNotAllowedReq

Messaggio di errore

Il deployment del proxy API tramite la UI o l'API di gestione perimetrale non va a buon fine e questo messaggio di errore:

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.

Messaggio di errore di esempio

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

Screenshot di errore di esempio

Causa

Questo errore si verifica se lo stesso criterioResponseCache è collegato a più percorsi di richiesta all'interno di qualsiasi flusso di un proxy API.

Ad esempio, se hai collegato lo stesso criterio ResponseCache nel Preflow della richiesta sia dell'endpoint del proxy sia dell'endpoint di destinazione, si verifica questo errore.

Diagnosi

  1. Identifica il nome del criterio ResponseCache collegato più di una volta. Puoi trovare queste informazioni nel messaggio di errore. Ad esempio, nell'errore seguente il nome del criterio 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. Esamina tutti i flussi di richieste nel proxy e negli endpoint di destinazione del proxy API in cui si è verificato l'errore. Se lo stesso criterio ResponseCache è collegato in due o più flussi di richiesta, questo è la causa dell'errore.

    Nell'esempio seguente, viene configurato lo stesso criterio ResponseCache Response-Cache-1 nel percorso di richiesta dell'endpoint proxy predefinito PreFlow e dell'endpoint di destinazione predefinito 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>
        ...
    

Risoluzione

Assicurati che un criterio ResponseCache sia collegato a un solo percorso di richiesta in tutti i flussi del proxy API.

Per correggere l'esempio mostrato sopra, rimuovi il criterio ResponseCache Response-Cache-1 da uno dei due flussi di richiesta.

ResponseCacheStepAttachmentNotAllowedResp

Messaggio di errore

Il deployment del proxy API tramite la UI o l'API di gestione perimetrale non va a buon fine e questo messaggio di errore:

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.

Messaggio di errore di esempio

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

Screenshot di errore di esempio

Causa

Questo errore si verifica se lo stesso criterio ResponseCache è collegato a più percorsi di risposta all'interno di qualsiasi flusso di un proxy API.

Ad esempio, se hai collegato lo stesso criterio ResponseCache nel Preflow di risposta sia dell'endpoint del proxy che di quello di destinazione, si verifica questo errore.

Diagnosi

  1. Identifica il nome del criterio ResponseCache collegato più di una volta. Puoi trovare queste informazioni nel messaggio di errore. Ad esempio, nell'errore seguente il nome del criterio 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. Esamina tutti i flussi di richieste nel proxy e negli endpoint di destinazione del proxy API in cui si è verificato l'errore. Se lo stesso criterio ResponseCache è collegato in due o più flussi di risposta, questo è la causa dell'errore.

    Nell'esempio seguente, viene configurato lo stesso criterio ResponseCache Response-Cache-1 nel percorso di risposta dell'endpoint proxy predefinito PreFlow e dell'endpoint di destinazione predefinito 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>
        ...
    

Risoluzione

Assicurati che un criterio ResponseCache sia collegato a un solo percorso di risposta in tutti i flussi del proxy API.

Per correggere l'esempio mostrato sopra, rimuovi il criterio ResponseCache Response-Cache-1 da uno dei due percorsi di risposta.

InvalidMessagePatternForErrorCode

Messaggio di errore

Il deployment del proxy API tramite l'UI o l'API di gestione Edge ha esito negativo con uno dei seguenti messaggi di errore:

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

OPPURE

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

Messaggio di errore di esempio

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

OPPURE

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

Screenshot di errore di esempio

OPPURE

Causa

Questo errore si verifica se l'elemento <SkipCacheLookup> o <SkipCachePopulation> di un criterio diResponseCache contiene una condizione non valida.

Diagnosi

  1. Esamina tutti i criteri di ResponseCache nel proxy API in cui si è verificato l'errore e controlla se esistono criteri con condizioni specificate per <SkipCacheLookup> e/o per gli elementi <SkipCachePopulation>.

  2. Verifica se la condizione specificata per l'elemento <SkipCacheLookup> e/o <SkipCachePopulation> non è valida. Se sì, questa è la causa dell'errore.

    Nell'esempio riportato di seguito, l'elemento <SkipCachePopulation> utilizza l'operatore JavaScript === per verificare che il valore e il tipo uguale non siano validi.

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

    Poiché l'operatore === non è valido, viene visualizzato l'errore:

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

Risoluzione

Assicurati che la condizione specificata per gli elementi <SkipCacheLookup> e/o <SkipCachePopulation> sia sempre valida.

Per correggere il criterio ResponseCache di esempio mostrato sopra, puoi modificare <SkipCacheLookup> in modo che utilizzi l'operatore =:

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

Messaggio di errore

Il deployment del proxy API tramite l'interfaccia utente di Edge o l'API di gestione Edge genera un messaggio di errore simile al seguente e lo stato di deployment del proxy API è contrassegnato come eseguito parzialmente:

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

Messaggio di errore di esempio

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

Causa

Questo errore si verifica se la cache specifica menzionata nel messaggio di errore non è stata creata in un componente specifico del processore di messaggi.

Risoluzione

Se sei un utente di Private Cloud, segui le istruzioni riportate di seguito:

  1. Elenca i deployment del proxy API e determina quali processori di messaggi presentano l'errore steps.cache.CacheNotFound.

    Output di esempio

    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. Prendi nota degli UUID del processore di messaggi in cui riscontri l'errore steps.cache.CacheNotFound. Identifica il nome host/indirizzo IP del processore di messaggi dall'UUID.

  3. Accedi allo specifico processore di messaggi e riavvialo utilizzando il seguente comando:

    apigee-service edge-message-processor restart

Se sei un utente di Public Cloud o se il problema persiste per Private Cloud, contatta l'Assistenza Apigee per ricevere assistenza.