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

Przeglądasz dokumentację Apigee Edge.
Przejdź do Dokumentacja Apigee X.
informacje.

InvalidTimeout

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge UI lub Edge Management API nie powiedzie się i wyświetli się 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 się nie uda.

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

Diagnostyka

  1. Identyfikuje nieprawidłową wartość używaną dla elementu <CacheLookupTimeoutInSeconds> w zasadzie 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 na konkretnym serwerze proxy interfejsu API, na którym 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 tym, co podano 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 parametr <CacheLookupTimeoutInSeconds> jest określony jako ujemna liczba całkowita, to jest przyczyną błędu.

Rozdzielczość

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

Aby poprawić widoczną powyżej przykładową zasadę ResponseCache, 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

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge UI lub Edge Management API nie powiedzie się i wyświetli się 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 jest ustawiony na 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> zasady pamięci podręcznej odpowiedzi i środowisku, 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 na konkretnym serwerze proxy API, na którym wystąpił błąd miało miejsce. Określ konkretną zasadę ResponseCache, w której nieprawidłowa pamięć podręczna (określony w kroku 1) jest określony w elemencie <CacheResource>.

    Na przykład ta zasada określa wartość <CacheResource> jako itemscache, który pasuje do 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) jest zdefiniowana w konkretnym środowisku (określone w kroku 1).

    W interfejsie Edge otwórz Interfejsy API > Environment Configuration (Konfiguracja środowiska) i sprawdź, czy pamięć podręczna jest dostępna na karcie Caches (Pamięci podręczne) w danym środowisku. Jeśli pamięć podręczna nie istnieje, to jest przyczyną błędu.

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

    Pamięć podręczna o nazwie itemscache nie jest zdefiniowana w środowisku prod, dlatego pojawia 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.

Więcej informacji o tworzeniu pamięci podręcznej 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 UI lub Edge Management API nie powiedzie się i wyświetli się 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 dowolnych przepływach serwera proxy interfejsu API.

Jeśli na przykład masz tę samą zasadę ResponseCache do żądania wstępnego przepływu żądania zarówno dla serwera proxy, jak i docelowego punktu końcowego, to 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 request path.
    
  2. Sprawdź wszystkie przepływy żądań w serwerach proxy i docelowych punktach końcowych serwera proxy interfejsu API, w których wystąpił błąd. Jeśli ta sama zasada ResponseCache jest przyłączona do co najmniej 2 przepływów żądań, to jest przyczyną 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ślnym docelowym punkcie końcowym 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 serwera proxy interfejsu API.

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

ResponseCacheStepAttachmentNotAllowedResp

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API za pomocą interfejsu Edge UI lub Edge Management API nie powiedzie się i wyświetli się 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, jeśli ta sama zasada ResponseCache jest dołączona do wielu ścieżek odpowiedzi w dowolnych przepływach serwera proxy interfejsu API.

Jeśli na przykład masz tę samą zasadę ResponseCache we wstępnym przepływie odpowiedzi zarówno serwera proxy, jak i docelowego punktu końcowego, to 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 serwerach proxy i docelowych punktach końcowych serwera proxy interfejsu API, w których wystąpił błąd. Jeśli ta sama zasada ResponseCache jest dołączona w co najmniej dwóch przepływach odpowiedzi, to 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 dołączona tylko do jednej ścieżki odpowiedzi we wszystkich przepływach serwera proxy interfejsu API.

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

InvalidMessagePatternForErrorCode

Komunikat o błędzie

Wdrożenie serwera proxy interfejsu API przy użyciu interfejsu Edge UI lub Edge Management API zakończy się niepowodzeniem 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, 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órym wystąpił błąd, i sprawdź, czy istnieją zasady z warunkami określonymi dla elementów <SkipCacheLookup> lub <SkipCachePopulation>.

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

    W poniższym przykładzie element <SkipCachePopulation>element używa operatora JavaScript === do wyszukania tej samej wartości i typu równego, który 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>
    

    Operator === jest nieprawidłowy, więc pojawia się błąd:

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

Rozdzielczość

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

Aby poprawić widoczną powyżej przykładową zasadę ResponseCache, możesz 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 przy użyciu 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 pamięć podręczna wspomniana 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 instrukcje:

  1. Wyświetl listę wdrożeń proxy interfejsu API i określ, w których procesorach wiadomości występuje 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órych występuje błąd steps.cache.CacheNotFound. Zidentyfikuj nazwę hosta/adres IP procesora wiadomości na podstawie identyfikatora UUID.

  3. Zaloguj się w określonym procesorze wiadomości i uruchom go ponownie za pomocą następującego polecenia:

    apigee-service edge-message-processor restart

Jeśli korzystasz z usługi Public Cloud lub jeśli problem występuje w usłudze Private Cloud, skontaktuj się z zespołem pomocy Apigee.