Solução de problemas de erro na implantação da política de cache de resposta

Você está vendo a documentação do Apigee Edge.
Acesse a documentação da Apigee X.
informações

InvalidTimeout

Mensagem de erro

A implantação do proxy de API pela IU do Edge ou pela API Edge Management falha com esta mensagem de erro:

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

Exemplo de mensagem de erro

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

Captura de tela com erro de exemplo

Causa

Se o elemento <CacheLookupTimeoutInSeconds> de uma política ResponseCache estiver definido como um número negativo, a implantação do proxy da API falhará.

Por exemplo, se <CacheLookupTimeoutInSeconds> for -1, a implantação do proxy de API falhará.

Diagnóstico

  1. Identifique o valor inválido usado para o elemento <CacheLookupTimeoutInSeconds> na política ResponseCache. Você encontra essas informações na mensagem de erro. Por exemplo, no erro a seguir, o valor inválido usado para o elemento <CacheLookupTimeoutInSeconds> é -1:

    CacheLookupTimeoutInSeconds -1 value should be greater than zero.
    
  2. Examine todas as políticas ResponseCache no proxy de API específico onde a falha ocorreu. Pode haver uma ou mais políticas ResponseCache em que o elemento <CacheLookupTimeoutInSeconds> é especificado.

    Por exemplo, a seguinte configuração de política define <CacheLookupTimeoutInSeconds> como -1, que corresponde ao que está na mensagem de erro:

    <?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 <CacheLookupTimeoutInSeconds> for especificado como um número inteiro negativo, essa será a causa do erro.

Resolução

Certifique-se de que o valor do elemento <CacheLookupTimeoutInSeconds> da política ResponseCache seja sempre especificado como um número inteiro não negativo.

Para corrigir o exemplo de política ResponseCache mostrado acima, modifique o <CacheLookupTimeoutInSeconds> element para 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

Mensagem de erro

A implantação do proxy de API pela IU do Edge ou pela API Edge Management falha com esta mensagem de erro:

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

Exemplo de mensagem de erro

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

Captura de tela com erro de exemplo

Causa

Esse erro ocorrerá se o elemento <CacheResource> na política ResponseCache estiver definido como um nome que não exista no ambiente em que o proxy de API está sendo implantado.

Diagnóstico

  1. Identifique o cache inválido usado no elemento <CacheResource> da política de cache de resposta e o ambiente em que o erro ocorreu. Você pode encontrar esses dois itens na mensagem de erro. Por exemplo, no erro a seguir, o nome do cache inválido é itemscache e o nome do ambiente é prod.

    Invalid cache resource reference itemscache in Step definition ItemsResponseCache. Context Revision:2;APIProxy:StoresInventory;Organization:kkalckstein-eval;Environment:prod
    
  2. Examine todas as políticas ResponseCache no proxy de API específico, onde ocorreu a falha. Identifique a política ResponseCache específica em que o cache inválido (identificado na etapa 1) é especificado no elemento <CacheResource>.

    Por exemplo, a política abaixo especifica o valor de <CacheResource> como itemscache, que corresponde ao que está na mensagem de erro:

    <?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. Verifique se o cache (determinado na etapa 2) foi definido no ambiente específico (identificado na etapa 1).

    Na IU do Edge, acesse APIs > Configuração do ambiente e verifique se o cache existe na guia Caches do ambiente específico. Se o cache não existir, essa é a causa do erro.

    Por exemplo, observe na captura de tela abaixo que o cache itemscache não existe.

    Como o cache denominado itemscache não está definido no ambiente prod, você recebe o erro:

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

Resolução

Verifique se o nome do cache especificado no elemento <CacheResource> foi criado no ambiente em que você quer implantar o proxy da API.

Consulte Como criar e editar um cache de ambiente para informações sobre como criar o cache.

ResponseCacheStepAttachmentNotAllowedReq

Mensagem de erro

A implantação do proxy de API pela IU do Edge ou pela API Edge Management falha com esta mensagem de erro:

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.

Exemplo de mensagem de erro

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

Captura de tela com erro de exemplo

Causa

Este erro ocorre quando a mesma política ResponseCache está anexada a vários caminhos de solicitação em qualquer fluxo de um proxy de API.

Por exemplo, se você tiver a mesma política ResponseCache anexada no pré-fluxo de solicitações do Endpoints e do Endpoints de destino, esse erro ocorrerá.

Diagnóstico

  1. Identifique o nome da política ResponseCache anexada a mais de uma vez. Você encontra essas informações na mensagem de erro. Por exemplo, no erro a seguir, o nome da política 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. Examine todos os fluxos de solicitação no proxy e proxy de destino do proxy da API em que o erro ocorreu. Se a mesma política ResponseCache estiver anexada em dois ou mais fluxos de solicitação, essa é a causa do erro.

    No exemplo a seguir, a mesma política Response-Cache-1 do ResponseCache está configurada no caminho de solicitação do pré-fluxo de endpoint do proxy padrão e do endpoint pré-destino padrão do endpoint:

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

Resolução

Certifique-se de que uma política ResponseCache esteja anexada a apenas um caminho de solicitação em todos os fluxos do proxy da API.

Para corrigir o exemplo mostrado acima, remova a política ResponseCache Response-Cache-1 de um dos dois fluxos de solicitação.

ResponseCacheStepAttachmentNotAllowedResp

Mensagem de erro

A implantação do proxy de API pela IU do Edge ou pela API Edge Management falha com esta mensagem de erro:

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.

Exemplo de mensagem de erro

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

Captura de tela com erro de exemplo

Causa

Esse erro ocorre quando a mesma política do ResponseCache está anexada a vários caminhos de resposta em qualquer fluxo de um proxy de API.

Por exemplo, se você tiver a mesma política ResponseCache anexada no pré-fluxo de respostas do Endpoints e do Endpoints de destino, esse erro ocorrerá.

Diagnóstico

  1. Identifique o nome da política ResponseCache anexada a mais de uma vez. Você encontra essas informações na mensagem de erro. Por exemplo, no erro a seguir, o nome da política 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. Examine todos os fluxos de solicitação no proxy e proxy de destino do proxy da API em que o erro ocorreu. Se a mesma política ResponseCache estiver anexada em dois ou mais fluxos de resposta, essa será o motivo do erro.

    No exemplo a seguir, a mesma política Response-Cache-1 do ResponseCache é configurada no caminho de resposta do pré-fluxo de endpoint do proxy padrão e no endpoint pré-destino do endpoint padrão:

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

Resolução

Verificar se uma política ResponseCache está anexada a apenas um caminho de resposta em todos os fluxos do proxy da API.

Para corrigir o exemplo mostrado acima, remova a política ResponseCache Response-Cache-1 de um dos dois caminhos de resposta.

InvalidMessagePatternForErrorCode

Mensagem de erro

A implantação do proxy de API pela IU do Edge ou pela API Edge Management falha com uma destas mensagens de erro:

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

OU

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

Exemplo de mensagem de erro

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

OU

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

Captura de tela com erro de exemplo

OU

Causa

Esse erro ocorrerá se o elemento <SkipCacheLookup> ou <SkipCachePopulation> em uma política ResponseCache contiver uma condição inválida.

Diagnóstico

  1. Examine todas as políticas ResponseCache no proxy de API em que o erro ocorreu e verifique se há políticas com condições especificadas para <SkipCacheLookup> e/ou elementos <SkipCachePopulation>.

  2. Verifique se a condição especificada para o elemento <SkipCacheLookup> e/ou <SkipCachePopulation> é inválida. Em caso afirmativo, essa é a causa do erro.

    No exemplo a seguir, o elemento <SkipCachePopulation> usa o operador JavaScript === para verificar valores iguais e iguais, inválidos.

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

    Como o operador === é inválido, você recebe o erro:

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

Resolução

Garanta que a condição especificada para os elementos <SkipCacheLookup> e/ou <SkipCachePopulation> seja sempre válida.

Para corrigir o exemplo da Política de resposta em cache mostrada acima, modifique o <SkipCacheLookup> para usar o operador =:

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

Mensagem de erro

A implantação do proxy de API pela interface do Edge ou pela API Edge Management resulta em uma mensagem de erro como esta, e o status da implantação do proxy de API é marcado como parcialmente implantado:

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

Exemplo de mensagem de erro

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

Causa

Esse erro ocorre quando o cache específico mencionado na mensagem de erro não tiver sido criado em um componente de processador de mensagens específico.

Resolução

Se você for um usuário de nuvem privada, siga as instruções abaixo:

  1. Liste as implantações de proxy de API e determine quais processadores de mensagens têm o erro steps.cache.CacheNotFound.

    Exemplo de saída

    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. Observe os UUIDs do processador de mensagens em que você observa o erro steps.cache.CacheNotFound. Identifique o nome do host/endereço IP do processador de mensagens do UUID.

  3. Faça login no processador de mensagens específico e reinicie-o usando o seguinte comando:

    apigee-service edge-message-processor restart

Se você for usuário da nuvem pública ou se o problema persistir na nuvem privada, entre em contato com o suporte da Apigee para receber ajuda.