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

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

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 [populate_cache_policy_name]. Context Revision:[revision_number];APIProxy:[apiproxy_name];Organization:[organization];Environment:[environment]

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

Error Deploying Revision 2 to test
Invalid cache resource reference tokencache in Step definition PopulateCache-Token. Context Revision:2;APIProxy:TestCache;Organization:kkalckstein-eval;Environment:test

Ả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 PopulateCache đượ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 tên chính sách PopulateCache, bộ nhớ đệm không hợp lệ được dùng trong phần tử <CacheResource> của chính sách và môi trường xảy ra lỗi. Bạn có thể tìm thấy tất cả các mục này trong thông báo lỗi. Ví dụ: trong lỗi sau, tên chính sách PopulateCache là PopulateCache-Token, tên của bộ nhớ đệm không hợp lệ là tokencache và tên môi trường là test.

    Invalid cache resource reference tokencache in Step definition PopulateCache-Token. Context Revision:2;APIProxy:TestCache;Organization:kkalckstein-eval;Environment:test
    
  2. Kiểm tra XML chính sách PopulateCache không thành công và xác minh xem tên bộ nhớ đệm được chỉ định cho phần tử <CacheResource> có khớp với thông báo lỗi hay không.

    Trong ví dụ này, tên bộ nhớ đệm được chỉ định trong phần tử <CacheResource>tokencache:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <PopulateCache async="false" continueOnError="false" enabled="true" name="PopulateCache-Token">
        <DisplayName>PopulateCache-Token</DisplayName>
        <Properties/>
        <CacheKey>
            <Prefix/>
            <KeyFragment ref="request.queryparam.client_id"/>
        </CacheKey>
        <CacheResource>tokencache</CacheResource>
        <Scope>Exclusive</Scope>
        <ExpirySettings>
            <TimeoutInSec>3600</TimeoutInSec>
        </ExpirySettings>
        <Source>token</Source>
    </PopulateCache>
    
  3. Xác minh xem bộ nhớ đệm (được xác định ở bước 1) đã đượ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 ADMIN > Environment > test (Quản trị > Môi trường > kiểm thử) rồi kiểm tra xem bộ nhớ đệm có tồn tại trong thẻ Caches (Bộ nhớ đệm) của Environment Configuration (Cấu hình môi trường) 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 rằng bộ nhớ đệm có tên tokencache không tồn tại.

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

    Invalid cache resource reference tokencache in Step definition PopulateCache-Token. Context Revision:2;APIProxy:TestCache;Organization:kkalckstein-eval;Environment:test
    

Độ phân giải

Đảm bảo rằng bộ nhớ đệm được chỉ định trong phần tử <CacheResource> của chính sách PopulateCache đã đượ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.

CacheNotFound

Thông báo Lỗi

Việc triển khai API proxy 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 API Proxy đượ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 : configCache, not found in organization : kkalckstein-eval__test

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 Trình xử lý thông báo cụ thể. Message Processor là một thành phần nội bộ của Edge, xử lý luồng lưu lượng truy cập API thông qua Apigee Edge.

Độ phân giải

Nếu bạn là người dùng Đám mây riêng, vui lòng 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.

    curl -u $USERID:$USERPASSWORD http://:8080/v1/organizations//environments//apis//revisions//deployments

    Đầu ra mẫu

      {
        "aPIProxy" : "TestCache",
        "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 : configCache, not found in organization : kkalckstein-eval__test",
          "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 Trình xử lý thông báo 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ương ứng với 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.