Resolução de problemas de erros de implementação da política de cache de respostas

Está a ver a documentação do Apigee e do Apigee Hybrid.
Ver documentação do Apigee Edge.

InvalidTimeout

Mensagem de erro

A implementação do proxy de API através da IU ou da API Apigee 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 ecrã de erro de exemplo

Ocorreu um erro ao guardar a revisão 2.

Causa

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

Por exemplo, se o <CacheLookupTimeoutInSeconds> for -1, a implementação do proxy da API falha.

Diagnóstico

  1. Identifique o valor inválido usado para o elemento <CacheLookupTimeoutInSeconds> na política ResponseCache. Pode encontrar estas informações na mensagem de erro. Por exemplo, no erro seguinte, 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 ocorreu a falha. Pode haver uma ou mais políticas ResponseCache nas quais o elemento <CacheLookupTimeoutInSeconds> é especificado.

    Por exemplo, a seguinte configuração da política define <CacheLookupTimeoutInSeconds> como -1, o 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 o <CacheLookupTimeoutInSeconds> for especificado como um número inteiro negativo, essa é a causa do erro.

Resolução

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

Para corrigir a política ResponseCache de exemplo apresentada acima, pode modificar 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 implementação do proxy de API através da IU ou da API Apigee 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 ecrã de erro de exemplo

Erro ao implementar a revisão 2 na produção.

Causa

Este erro ocorre se o elemento <CacheResource> numa política ResponseCache estiver definido para um nome que não existe no ambiente onde o proxy de API está a ser implementado.

Diagnóstico

  1. Identifique a cache inválida usada no elemento <CacheResource> da política de cache de respostas e o ambiente onde ocorreu o erro. Pode encontrar ambos os itens na mensagem de erro. Por exemplo, no erro seguinte, o nome da cache inválida é 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 onde a cache inválida (identificada no passo n.º 1) é especificada no elemento <CacheResource>.

    Por exemplo, a seguinte política 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 a cache (determinada no passo n.º 2) foi definida no ambiente específico (identificado no passo n.º 1).

    Na IU do Apigee, navegue para APIs > Environment Configuration e verifique se a cache existe no separador Caches no ambiente específico. Se a cache não existir, essa é a causa do erro.

    Por exemplo, repare na captura de ecrã abaixo que a cache denominada itemscache não existe.

    Separador Caches de configuração do ambiente.

    Uma vez que a cache denominada itemscache não está definida no ambiente prod, é apresentado o seguinte 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

Certifique-se de que o nome da cache especificado no elemento <CacheResource> foi criado no ambiente onde quer implementar o proxy de API.

ResponseCacheStepAttachmentNotAllowedReq

Mensagem de erro

A implementação do proxy de API através da IU ou da API Apigee 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 ecrã de erro de exemplo

Erro ao implementar a revisão 2 para teste.

Causa

Este erro ocorre se a mesma política ResponseCache estiver anexada a vários caminhos de pedidos em quaisquer fluxos de um proxy de API.

Por exemplo, se tiver a mesma política ResponseCache anexada no Preflow dos pontos finais Proxy e Target, ocorre este erro.

Diagnóstico

  1. Identifique o nome da política ResponseCache que está anexada mais do que uma vez. Pode encontrar estas informações na mensagem de erro. Por exemplo, no erro seguinte, 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 pedidos nos pontos finais de proxy e de destino do proxy de API onde ocorreu o erro. Se a mesma política ResponseCache estiver anexada em dois ou mais fluxos de pedidos, essa é a causa do erro.

    No exemplo seguinte, a mesma política ResponseCache Response-Cache-1 está configurada no caminho do pedido do PreFlow do ponto final do proxy predefinido e no PreFlow do ponto final de destino predefinido:

    <?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 está anexada apenas a um caminho de pedido em todos os fluxos do proxy de API.

Para corrigir o exemplo apresentado acima, remova a política ResponseCache Response-Cache-1 de um dos dois fluxos de pedidos.

ResponseCacheStepAttachmentNotAllowedResp

Mensagem de erro

A implementação do proxy de API através da IU ou da API Apigee 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 ecrã de erro de exemplo

Erro ao implementar a revisão 2 para teste.

Causa

Este erro ocorre se a mesma política ResponseCache estiver anexada a vários caminhos de resposta em quaisquer fluxos de um proxy de API.

Por exemplo, se tiver a mesma política ResponseCache anexada no Preflow da resposta dos pontos finais de proxy e de destino, ocorre este erro.

Diagnóstico

  1. Identifique o nome da política ResponseCache que está anexada mais do que uma vez. Pode encontrar estas informações na mensagem de erro. Por exemplo, no erro seguinte, 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 pedidos nos pontos finais de proxy e de destino do proxy de API onde ocorreu o erro. Se a mesma política ResponseCache estiver anexada em dois ou mais fluxos de respostas, essa é a causa do erro.

    No exemplo seguinte, a mesma política ResponseCache Response-Cache-1 está configurada no caminho de resposta do PreFlow do ponto final do proxy predefinido e no PreFlow do ponto final de destino predefinido:

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

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

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

InvalidMessagePatternForErrorCode

Mensagem de erro

A implementação do proxy de API através da IU ou da API Apigee 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 ecrã de erro de exemplo

Erro ao implementar a revisão 2 na produção – LookUp.

OU

Erro ao implementar a revisão 2 na produção: população.

Causa

Este erro ocorre se o elemento <SkipCacheLookup> ou <SkipCachePopulation> numa política ResponseCache contiver uma condição inválida.

Diagnóstico

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

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

    No exemplo seguinte, o elemento <SkipCachePopulation>usa o operador JavaScript === para verificar se o valor e o tipo são iguais, o que é inválido.

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

    Uma vez que o operador === é inválido, é apresentado o seguinte erro:

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

Resolução

Certifique-se de que a condição especificada para os elementos <SkipCacheLookup> e/ou <SkipCachePopulation> é sempre válida.

Para corrigir a política ResponseCache de exemplo apresentada acima, pode modificar 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 implementação do proxy de API através da IU ou da API Apigee resulta numa mensagem de erro como esta, e o estado de implementação do proxy de API é marcado como parcialmente implementado:

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

Este erro ocorre se a cache específica mencionada na mensagem de erro não tiver sido criada num componente do processador de mensagens específico.

Resolução

Contacte o apoio técnico do Apigee para receber assistência.