Khắc phục sự cố lỗi triển khai chính sách Bộ nhớ đệm phản hồi

Bạn đang xem tài liệu về Apigee Edge.
Truy cập vào tài liệu Apigee X.
thông tin

InvalidTimeout

Thông báo Lỗi

Việc triển khai proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge không thành công và xuất hiện thông báo lỗi sau:

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

Thông báo lỗi mẫu

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

Ảnh chụp màn hình ví dụ về lỗi

Nguyên nhân

Nếu phần tử <CacheLookupTimeoutInSeconds> của chính sách ResponseCache được đặt thành một số âm, thì việc triển khai proxy API sẽ không thành công.

Ví dụ: nếu <CacheLookupTimeoutInSeconds> là -1, thì việc triển khai proxy API sẽ không thành công.

Chẩn đoán

  1. Xác định giá trị không hợp lệ được dùng cho phần tử <CacheLookupTimeoutInSeconds> trong chính sách ResponseCache. Bạn có thể tìm thấy thông tin này trong thông báo lỗi. Ví dụ: trong lỗi sau, giá trị không hợp lệ được dùng cho phần tử <CacheLookupTimeoutInSeconds> là -1:

    CacheLookupTimeoutInSeconds -1 value should be greater than zero.
    
  2. Kiểm tra tất cả các chính sách ResponseCache trong API Proxy cụ thể nơi xảy ra lỗi. Có thể có một hoặc nhiều chính sách ResponseCache trong đó phần tử <CacheLookupTimeoutInSeconds> được chỉ định.

    Ví dụ: cấu hình chính sách sau đây đặt <CacheLookupTimeoutInSeconds> thành -1, khớp với nội dung trong thông báo lỗi:

    <?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. Nếu <CacheLookupTimeoutInSeconds> được chỉ định là một số nguyên âm, thì đó là nguyên nhân gây ra lỗi.

Độ phân giải

Đảm bảo rằng giá trị cho phần tử <CacheLookupTimeoutInSeconds> của chính sách ResponseCache luôn được chỉ định là một số nguyên không âm.

Để sửa chính sách ResponseCache trong ví dụ nêu trên, bạn có thể sửa đổi <CacheLookupTimeoutInSeconds> element thành 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

Thông báo Lỗi

Việc triển khai proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge không thành công và xuất hiện thông báo lỗi sau:

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

Thông báo lỗi mẫu

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

Ảnh chụp màn hình ví dụ về lỗi

Nguyên nhân

Lỗi này xảy ra nếu phần tử <CacheResource> trong chính sách ResponseCache được đặt thành một tên không tồn tại trong môi trường mà proxy API đang được triển khai.

Chẩn đoán

  1. Xác định bộ nhớ đệm không hợp lệ được dùng trong phần tử <CacheResource> của chính sách Bộ nhớ đệm phản hồi và môi trường xảy ra lỗi. Bạn có thể tìm thấy cả hai mục này trong thông báo lỗi. Ví dụ: trong lỗi sau, tên của bộ nhớ đệm không hợp lệ là itemscache và tên môi trường là prod.

    Invalid cache resource reference itemscache in Step definition ItemsResponseCache. Context Revision:2;APIProxy:StoresInventory;Organization:kkalckstein-eval;Environment:prod
    
  2. Kiểm tra tất cả các chính sách ResponseCache trong API Proxy cụ thể nơi xảy ra lỗi. Xác định chính sách ResponseCache cụ thể mà bộ nhớ đệm không hợp lệ (được xác định ở bước 1) được chỉ định trong phần tử <CacheResource>.

    Ví dụ: chính sách sau đây chỉ định giá trị của <CacheResource> là itemscache, khớp với giá trị trong thông báo lỗi:

    <?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. Xác minh xem bộ nhớ đệm (được xác định ở bước 2) đã được xác định trong môi trường cụ thể (được xác định ở bước 1) hay chưa.

    Trong giao diện người dùng Edge, hãy chuyển đến APIs > Environment Configuration (API > Cấu hình môi trường) rồi kiểm tra xem bộ nhớ đệm có tồn tại trong thẻ Caches (Bộ nhớ đệm) trong môi trường cụ thể hay không. Nếu bộ nhớ đệm không tồn tại, thì đó là nguyên nhân gây ra lỗi.

    Ví dụ: trong ảnh chụp màn hình bên dưới, bạn sẽ thấy bộ nhớ đệm có tên itemscache không tồn tại.

    Vì bộ nhớ đệm có tên itemscache không được xác định trong môi trường prod, nên bạn sẽ gặp lỗi:

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

Độ phân giải

Đảm bảo rằng tên bộ nhớ đệm được chỉ định trong phần tử <CacheResource> đã được tạo trong môi trường mà bạn muốn triển khai proxy API.

Hãy tham khảo bài viết Tạo và chỉnh sửa bộ nhớ đệm môi trường để biết thông tin về cách tạo bộ nhớ đệm.

ResponseCacheStepAttachmentNotAllowedReq

Thông báo Lỗi

Việc triển khai proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge không thành công và xuất hiện thông báo lỗi sau:

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.

Thông báo lỗi mẫu

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

Ảnh chụp màn hình ví dụ về lỗi

Nguyên nhân

Lỗi này xảy ra nếu cùng một chính sách ResponseCache được đính kèm vào nhiều đường dẫn yêu cầu trong bất kỳ luồng nào của một proxy API.

Ví dụ: nếu bạn có cùng chính sách ResponseCache được đính kèm trong Preflow của cả Proxy và Target Endpoints, thì lỗi này sẽ xảy ra.

Chẩn đoán

  1. Xác định tên của chính sách ResponseCache được đính kèm nhiều lần. Bạn có thể tìm thấy thông tin này trong thông báo lỗi. Ví dụ: trong lỗi sau, tên của chính sách ResponseCache là 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. Kiểm tra tất cả các luồng yêu cầu trong Proxy và Target Endpoints của API Proxy nơi xảy ra lỗi. Nếu cùng một chính sách ResponseCache được đính kèm trong 2 hoặc nhiều luồng yêu cầu, thì đó là nguyên nhân gây ra lỗi.

    Trong ví dụ sau, cùng một chính sách ResponseCache Response-Cache-1 được định cấu hình trong đường dẫn yêu cầu của PreFlow điểm cuối proxy mặc định và PreFlow điểm cuối mục tiêu mặc định:

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

Độ phân giải

Đảm bảo rằng chính sách ResponseCache chỉ được đính kèm vào một đường dẫn yêu cầu trong tất cả các luồng của API Proxy.

Để sửa ví dụ nêu trên, hãy xoá chính sách ResponseCache Response-Cache-1 khỏi một trong hai luồng yêu cầu.

ResponseCacheStepAttachmentNotAllowedResp

Thông báo Lỗi

Việc triển khai proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge không thành công và xuất hiện thông báo lỗi sau:

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.

Thông báo lỗi mẫu

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

Ảnh chụp màn hình ví dụ về lỗi

Nguyên nhân

Lỗi này xảy ra nếu cùng một chính sách ResponseCache được đính kèm vào nhiều đường dẫn phản hồi trong bất kỳ luồng nào của một proxy API.

Ví dụ: nếu bạn có cùng chính sách ResponseCache được đính kèm trong Preflow phản hồi của cả Proxy và Target Endpoint, thì lỗi này sẽ xảy ra.

Chẩn đoán

  1. Xác định tên của chính sách ResponseCache được đính kèm nhiều lần. Bạn có thể tìm thấy thông tin này trong thông báo lỗi. Ví dụ: trong lỗi sau, tên của chính sách ResponseCache là 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. Kiểm tra tất cả các luồng yêu cầu trong Proxy và Target Endpoints của API Proxy nơi xảy ra lỗi. Nếu cùng một chính sách ResponseCache được đính kèm trong hai hoặc nhiều luồng phản hồi, thì đó là nguyên nhân gây ra lỗi.

    Trong ví dụ sau, cùng một chính sách ResponseCache Response-Cache-1 được định cấu hình trong đường dẫn phản hồi của PreFlow điểm cuối proxy mặc định và PreFlow điểm cuối mục tiêu mặc định:

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

Độ phân giải

Đảm bảo rằng chính sách ResponseCache chỉ được đính kèm vào một đường dẫn phản hồi trong tất cả các luồng của API Proxy.

Để sửa ví dụ nêu trên, hãy xoá chính sách ResponseCache Response-Cache-1 khỏi một trong hai đường dẫn phản hồi.

InvalidMessagePatternForErrorCode

Thông báo Lỗi

Việc triển khai proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge không thành công và bạn sẽ nhận được một trong những thông báo lỗi sau:

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

HOẶC

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

Thông báo lỗi mẫu

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

HOẶC

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

Ảnh chụp màn hình ví dụ về lỗi

HOẶC

Nguyên nhân

Lỗi này xảy ra nếu phần tử <SkipCacheLookup> hoặc <SkipCachePopulation> trong chính sách ResponseCache chứa một điều kiện không hợp lệ.

Chẩn đoán

  1. Kiểm tra tất cả các chính sách ResponseCache trong API Proxy nơi xảy ra lỗi và kiểm tra xem có chính sách nào có điều kiện được chỉ định cho <SkipCacheLookup> và/hoặc các phần tử <SkipCachePopulation> hay không.

  2. Kiểm tra xem điều kiện được chỉ định cho phần tử <SkipCacheLookup> và/hoặc <SkipCachePopulation> có không hợp lệ hay không. Nếu có, thì đó là nguyên nhân gây ra lỗi.

    Trong ví dụ sau, phần tử <SkipCachePopulation> sử dụng toán tử JavaScript === để kiểm tra giá trị bằng nhau và loại bằng nhau (không hợp lệ).

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

    Vì toán tử === không hợp lệ, nên bạn sẽ gặp lỗi:

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

Độ phân giải

Đảm bảo điều kiện được chỉ định cho các phần tử <SkipCacheLookup> và/hoặc <SkipCachePopulation> luôn hợp lệ.

Để sửa chính sách ResponseCache trong ví dụ nêu trên, bạn có thể sửa đổi <SkipCacheLookup> để sử dụng toán tử =:

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

Thông báo Lỗi

Việc triển khai proxy API thông qua giao diện người dùng Edge hoặc API quản lý Edge sẽ dẫn đến một thông báo lỗi như thế này và trạng thái triển khai của Proxy API được đánh dấu là đã triển khai một phần:

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

Thông báo lỗi mẫu

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

Nguyên nhân

Lỗi này xảy ra nếu bộ nhớ đệm cụ thể được đề cập trong thông báo lỗi chưa được tạo trên một thành phần Message Processor cụ thể.

Độ phân giải

Nếu bạn là người dùng Đám mây riêng, hãy làm theo hướng dẫn bên dưới:

  1. Liệt kê các hoạt động triển khai proxy API và xác định Bộ xử lý thông báo nào gặp lỗi steps.cache.CacheNotFound.

    Đầu ra mẫu

    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. Ghi lại(các) UUID của Message Processor mà bạn thấy lỗi steps.cache.CacheNotFound. Xác định tên máy chủ/địa chỉ IP của Trình xử lý thông báo từ UUID.

  3. Đăng nhập vào Trình xử lý thông báo cụ thể và khởi động lại bằng lệnh sau:

    apigee-service edge-message-processor restart

Nếu bạn là người dùng Đám mây công khai hoặc nếu vấn đề vẫn tiếp diễn đối với Đám mây riêng tư, hãy liên hệ với Nhóm hỗ trợ Apigee để được trợ giúp.