Rozwiązywanie problemów związanych z błędem wdrożenia zasady pamięci podręcznej odpowiedzi

Przeglądasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
Informacje

InvalidTimeout

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetlany jest ten komunikat o błędzie:

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

Przykładowy komunikat o błędzie

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

Zrzut ekranu z przykładowym błędem

Przyczyna

Jeśli element <CacheLookupTimeoutInSeconds> zasady ResponseCache jest ustawiony na liczbę ujemną, wdrożenie serwera proxy interfejsu API nie powiedzie się.

Jeśli na przykład <CacheLookupTimeoutInSeconds> to -1, wdrożenie serwera proxy interfejsu API nie powiedzie się.

Diagnostyka

  1. Wskaż nieprawidłową wartość używaną dla elementu <CacheLookupTimeoutInSeconds> w zasadzie ResponseCache. Informacje te znajdziesz w komunikacie o błędzie. Na przykład w poniższym błędzie nieprawidłowa wartość użyta w elemencie <CacheLookupTimeoutInSeconds> to -1:

    CacheLookupTimeoutInSeconds -1 value should be greater than zero.
    
  2. Sprawdź wszystkie zasady ResponseCache w konkretnym serwerze proxy interfejsu API, gdzie wystąpił błąd. Element <CacheLookupTimeoutInSeconds> może zawierać co najmniej 1 zasadę ResponseCache.

    Na przykład ta konfiguracja zasad ustawia <CacheLookupTimeoutInSeconds> na -1, co jest zgodne z treścią komunikatu o błędzie:

    <?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. Jeśli <CacheLookupTimeoutInSeconds> jest podany jako ujemna liczba całkowita, to jest przyczyną błędu.

Rozdzielczość

Upewnij się, że wartość elementu <CacheLookupTimeoutInSeconds> zasady ResponseCache jest zawsze określona jako nieujemna liczba całkowita.

Aby poprawić powyższą przykładową zasadę ResponseCache, można zmienić <CacheLookupTimeoutInSeconds> element na 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

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetlany jest ten komunikat o błędzie:

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

Przykładowy komunikat o błędzie

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

Zrzut ekranu z przykładowym błędem

Przyczyna

Ten błąd występuje, jeśli element <CacheResource> w zasadzie ResponseCache jest ustawiony na nazwę, która nie istnieje w środowisku, w którym wdrażany jest serwer proxy interfejsu API.

Diagnostyka

  1. Zidentyfikuj nieprawidłową pamięć podręczną używaną w elemencie <CacheResource> zasady buforowania odpowiedzi oraz w środowisku, w którym wystąpił błąd. Oba te elementy znajdziesz w komunikacie o błędzie. Na przykład w poniższym błędzie nazwa nieprawidłowej pamięci podręcznej to itemscache, a nazwa środowiska to prod.

    Invalid cache resource reference itemscache in Step definition ItemsResponseCache. Context Revision:2;APIProxy:StoresInventory;Organization:kkalckstein-eval;Environment:prod
    
  2. Sprawdź wszystkie zasady ResponseCache w konkretnym serwerze proxy interfejsu API, gdzie wystąpił błąd. Zidentyfikuj konkretną zasadę ResponseCache, w której podana jest nieprawidłowa pamięć podręczna (określona w kroku 1) w elemencie <CacheResource>.

    Na przykład ta zasada określa wartość <CacheResource> jako itemscache, która jest zgodna z treścią komunikatu o błędzie:

    <?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. Sprawdź, czy pamięć podręczna (określona w kroku 2) została zdefiniowana w konkretnym środowisku (określonym w kroku 1).

    W interfejsie użytkownika Edge otwórz Interfejsy API > Konfiguracja środowiska i na karcie Pamięć podręczna sprawdź, czy pamięć podręczna znajduje się w danym środowisku. Jeśli pamięć podręczna nie istnieje, jest to przyczyna błędu.

    Na przykład na zrzucie ekranu poniżej widać, że pamięć podręczna o nazwie itemscache nie istnieje.

    Ponieważ pamięć podręczna o nazwie itemscache nie jest zdefiniowana w środowisku prod, występuje błąd:

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

Rozdzielczość

Upewnij się, że nazwa pamięci podręcznej określona w elemencie <CacheResource> została utworzona w środowisku, w którym chcesz wdrożyć serwer proxy interfejsu API.

Informacje o tym, jak utworzyć pamięć podręczną, znajdziesz w artykule Tworzenie i edytowanie pamięci podręcznej środowiska.

ResponseCacheStepAttachmentNotAllowedReq

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetlany jest ten komunikat o błędzie:

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.

Przykładowy komunikat o błędzie

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

Zrzut ekranu z przykładowym błędem

Przyczyna

Ten błąd występuje, jeśli ta sama zasada ResponseCache jest połączona z wieloma ścieżkami żądań w dowolnym przepływie serwera proxy interfejsu API.

Jeśli na przykład masz tę samą zasadę ResponseCache, która jest dołączana do wstępnego przepływu żądania zarówno serwera proxy, jak i docelowych punktów końcowych, występuje ten błąd.

Diagnostyka

  1. Wskaż nazwę zasady ResponseCache, która jest dołączona więcej niż raz. Informacje te znajdziesz w komunikacie o błędzie. Na przykład w tym błędzie nazwa zasady ResponseCache to 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. Sprawdź wszystkie przepływy żądań w serwerze proxy i docelowych punktach końcowych interfejsu API serwera proxy, w których wystąpił błąd. Jeśli ta sama zasada ResponseCache jest powiązana w co najmniej 2 przepływach żądań, jest to przyczyna błędu.

    W poniższym przykładzie ta sama zasada ResponseCache (Response-Cache-1) jest skonfigurowana w ścieżce żądania domyślnego punktu końcowego serwera proxy PreFlow i domyślnego docelowego punktu końcowego 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>
        ...
    

Rozdzielczość

Sprawdź, czy zasada ResponseCache jest połączona tylko z jedną ścieżką żądania we wszystkich przepływach interfejsu API serwera proxy.

Aby poprawić powyższy przykład, usuń zasadę ResponseCache (Response-Cache-1) z jednego z dwóch przepływów żądań.

ResponseCacheStepAttachmentNotAllowedResp

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetlany jest ten komunikat o błędzie:

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.

Przykładowy komunikat o błędzie

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

Zrzut ekranu z przykładowym błędem

Przyczyna

Ten błąd występuje, jeśli ta sama zasada ResponseCache jest połączona z wieloma ścieżkami odpowiedzi w obrębie dowolnych przepływów serwera proxy interfejsu API.

Jeśli na przykład masz tę samą zasadę ResponseCache, która jest dołączana do wstępnego przepływu odpowiedzi zarówno serwera proxy, jak i docelowych punktów końcowych, występuje ten błąd.

Diagnostyka

  1. Wskaż nazwę zasady ResponseCache, która jest dołączona więcej niż raz. Informacje te znajdziesz w komunikacie o błędzie. Na przykład w poniższym błędzie nazwa zasady ResponseCache to 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. Sprawdź wszystkie przepływy żądań w serwerze proxy i docelowych punktach końcowych interfejsu API serwera proxy, w których wystąpił błąd. Jeśli ta sama zasada ResponseCache jest powiązana w co najmniej 2 przepływach odpowiedzi, jest to przyczyna błędu.

    W poniższym przykładzie ta sama zasada ResponseCache (Response-Cache-1) jest skonfigurowana w ścieżce odpowiedzi domyślnego punktu końcowego serwera proxy PreFlow i domyślnego docelowego punktu końcowego 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>
        ...
    

Rozdzielczość

Sprawdź, czy zasada ResponseCache jest połączona tylko z jedną ścieżką odpowiedzi we wszystkich przepływach interfejsu API serwera proxy.

Aby poprawić powyższy przykład, usuń zasadę ResponseCache (Response-Cache-1) z jednej z 2 ścieżek odpowiedzi.

InvalidMessagePatternForErrorCode

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetlany jest jeden z tych komunikatów o błędach:

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

LUB

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

Przykładowy komunikat o błędzie

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

LUB

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

Zrzut ekranu z przykładowym błędem

LUB

Przyczyna

Ten błąd występuje, jeśli element <SkipCacheLookup> lub <SkipCachePopulation> w zasadzie ResponseCache zawiera nieprawidłowy warunek.

Diagnostyka

  1. Sprawdź wszystkie zasady ResponseCache na serwerze proxy interfejsu API, w których wystąpił błąd, i sprawdź, czy istnieją zasady z warunkami określonymi dla <SkipCacheLookup> lub elementów <SkipCachePopulation>.

  2. Sprawdź, czy warunek określony w elemencie <SkipCacheLookup> lub <SkipCachePopulation> jest nieprawidłowy. Jeśli tak, to jest przyczyna błędu.

    W poniższym przykładzie element <SkipCachePopulation> używa operatora JavaScript === do sprawdzania, czy wartości są równe i typ równości, co jest nieprawidłowy.

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

    Ponieważ operator === jest nieprawidłowy, występuje błąd:

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

Rozdzielczość

Upewnij się, że warunek określony dla elementów <SkipCacheLookup> lub <SkipCachePopulation> jest zawsze prawidłowy.

Aby poprawić przykładową zasadę ResponseCache powyższą, można zmodyfikować <SkipCacheLookup>, używając operatora =:

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

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge lub Edge Management API powoduje wyświetlenie takiego komunikatu o błędzie, a stan wdrożenia serwera proxy interfejsu API jest oznaczony jako częściowo wdrożony:

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

Przykładowy komunikat o błędzie

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

Przyczyna

Ten błąd występuje, jeśli określona pamięć podręczna wymieniona w komunikacie o błędzie nie została utworzona w konkretnym komponencie procesora wiadomości.

Rozdzielczość

Jeśli jesteś użytkownikiem Private Cloud, wykonaj te czynności:

  1. Wyświetl listę wdrożeń proxy interfejsu API i sprawdź, które procesory wiadomości mają błąd steps.cache.CacheNotFound.

    Przykładowe dane wyjściowe

    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. Zapisz identyfikatory UUID procesora wiadomości, w którym występuje błąd steps.cache.CacheNotFound. Na podstawie identyfikatora UUID określ nazwę hosta/adres IP procesora wiadomości.

  3. Zaloguj się do określonego procesora wiadomości i uruchom go ponownie za pomocą tego polecenia:

    apigee-service edge-message-processor restart

Jeśli jesteś użytkownikiem chmury publicznej lub problem występuje w chmurze Private Cloud, skontaktuj się z zespołem pomocy Apigee.