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

Wyświetlasz dokumentację Apigee Edge.
Otwórz dokumentację Apigee X.
info

InvalidTimeout

Komunikat o błędzie

Wdrażanie serwera proxy interfejsu API za pomocą interfejsu Edge UI lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetla 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.

Przykładowy zrzut ekranu z błędem

Przyczyna

Jeśli element <CacheLookupTimeoutInSeconds> zasady ResponseCache ma wartość ujemną, wdrożenie serwera proxy interfejsu API nie powiedzie się.

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

Diagnostyka

  1. Określ nieprawidłową wartość używaną w elemencie <CacheLookupTimeoutInSeconds> w zasadach ResponseCache. Te informacje znajdziesz w komunikacie o błędzie. Na przykład w tym 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, w którym wystąpił błąd. Może istnieć co najmniej jedna zasada ResponseCache, w której określony jest element <CacheLookupTimeoutInSeconds>.

    Na przykład ta konfiguracja zasad ustawia wartość <CacheLookupTimeoutInSeconds> na -1, co odpowiada temu, co znajduje się w komunikacie 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 liczbą całkowitą ujemną, to jest to przyczyną błędu.

Rozdzielczość

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

Aby poprawić przykładowe zasady ResponseCache pokazane powyżej, możesz 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

Wdrażanie serwera proxy interfejsu API za pomocą interfejsu Edge UI lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetla 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

Przykładowy zrzut ekranu z błędem

Przyczyna

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

Diagnostyka

  1. Określ nieprawidłową pamięć podręczną używaną w elemencie <CacheResource> zasad Response Cache oraz środowisko, w którym wystąpił błąd. Oba te elementy znajdziesz w komunikacie o błędzie. Na przykład w tym 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, w którym wystąpił błąd. Znajdź konkretne zasady ResponseCache, w których nieprawidłowa pamięć podręczna (zidentyfikowana w kroku 1) jest określona w elemencie <CacheResource>.

    Na przykład te zasady określają wartość <CacheResource> jako itemscache, co odpowiada wartości w komunikacie 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 (zidentyfikowanym w kroku 1).

    W interfejsie Edge kliknij Interfejsy API > Konfiguracja środowiska i sprawdź, czy pamięć podręczna istnieje na karcie Pamięci podręczne w danym środowisku. Jeśli pamięć podręczna nie istnieje, to jest to przyczyną błędu.

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

    Pamięć podręczna o nazwie itemscache nie jest zdefiniowana w środowisku prod, więc pojawi się 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ść

Sprawdź, czy 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 tworzeniu pamięci podręcznej środowiska znajdziesz w artykule Tworzenie i edytowanie pamięci podręcznej środowiska.

ResponseCacheStepAttachmentNotAllowedReq

Komunikat o błędzie

Wdrażanie serwera proxy interfejsu API za pomocą interfejsu Edge UI lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetla 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.

Przykładowy zrzut ekranu z błędem

Przyczyna

Ten błąd występuje, jeśli ta sama zasada ResponseCache jest dołączona do wielu ścieżek żądań w ramach dowolnych przepływów w proxy interfejsu API.

Ten błąd występuje np. wtedy, gdy ta sama zasada ResponseCache jest dołączona do przepływu wstępnego żądania zarówno w przypadku punktów końcowych proxy, jak i punktów końcowych docelowych.

Diagnostyka

  1. Określ nazwę zasady ResponseCache, która jest dołączona więcej niż raz. Te informacje 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 punktach końcowych proxy i docelowych proxy interfejsu API, w których wystąpił błąd. Jeśli te same zasady ResponseCache są dołączone do co najmniej 2 przepływów żądań, to jest to przyczyną błędu.

    W tym przykładzie te same zasady ResponseCache Response-Cache-1 są skonfigurowane w ścieżce żądania domyślnego punktu końcowego proxy PreFlow i domyślnego punktu końcowego docelowego 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 dołączona tylko do jednej ścieżki żądania we wszystkich przepływach proxy interfejsu API.

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

Wdrażanie serwera proxy interfejsu API za pomocą interfejsu Edge UI lub interfejsu Edge Management API kończy się niepowodzeniem i wyświetla 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.

Przykładowy zrzut ekranu z błędem

Przyczyna

Ten błąd występuje, gdy ta sama zasada ResponseCache jest dołączona do wielu ścieżek odpowiedzi w dowolnych przepływach serwera proxy interfejsu API.

Na przykład jeśli masz tę samą zasadę ResponseCache dołączoną w odpowiedzi przed przepływem zarówno punktu końcowego proxy, jak i punktu końcowego docelowego, wystąpi ten błąd.

Diagnostyka

  1. Określ nazwę zasady ResponseCache, która jest dołączona więcej niż raz. Te informacje 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 response path.
    
  2. Sprawdź wszystkie przepływy żądań w punktach końcowych proxy i docelowych proxy interfejsu API, w których wystąpił błąd. Jeśli te same zasady ResponseCache są dołączone do co najmniej 2 przepływów odpowiedzi, to jest to przyczyną błędu.

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

Upewnij się, że zasada ResponseCache jest dołączona tylko do jednej ścieżki odpowiedzi we wszystkich przepływach proxy interfejsu API.

Aby poprawić przykład pokazany powyżej, usuń zasadę ResponseCache Response-Cache-1 z jednej z dwóch ścieżek odpowiedzi.

InvalidMessagePatternForErrorCode

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge UI lub interfejsu Edge Management API nie powiedzie się i wyświetli się jeden z tych komunikatów o błędzie:

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.

Przykładowy zrzut ekranu z błędem

LUB

Przyczyna

Ten błąd występuje, gdy element <SkipCacheLookup> lub <SkipCachePopulation> w zasadach ResponseCache zawiera nieprawidłowy warunek.

Diagnostyka

  1. Sprawdź wszystkie zasady ResponseCache w serwerze proxy interfejsu API, w którym wystąpił błąd, i zobacz, czy są jakieś zasady, które mają określone warunki dla elementów <SkipCacheLookup> lub <SkipCachePopulation>.

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

    W przykładzie poniżej element <SkipCachePopulation> używa operatora JavaScript === do sprawdzenia, czy wartość i typ są równe, co jest nieprawidłowe.

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

    Operator === jest nieprawidłowy, więc pojawi się 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ć pokazaną powyżej przykładową zasadę ResponseCache, możesz zmodyfikować <SkipCacheLookup>, aby używać 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 proxy interfejsu API za pomocą interfejsu Edge lub interfejsu Edge Management API powoduje wyświetlenie komunikatu o błędzie podobnego do tego, a stan wdrożenia 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 określonym komponencie procesora komunikatów.

Rozdzielczość

Jeśli jesteś użytkownikiem chmury prywatnej, wykonaj te czynności:

  1. Wyświetl wdrożenia serwera proxy interfejsu API i określ, 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. Zanotuj identyfikatory UUID procesora wiadomości, w którym występuje błąd steps.cache.CacheNotFound. Określ nazwę hosta lub adres IP procesora komunikatów na podstawie identyfikatora UUID.

  3. Zaloguj się na konkretnym procesorze komunikatów i uruchom go ponownie za pomocą tego polecenia:

    apigee-service edge-message-processor restart

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