การแก้ปัญหาข้อผิดพลาดในการทำให้นโยบายแคชตอบกลับใช้งานได้

คุณกำลังดูเอกสารประกอบ Apigee Edge
ไปที่ เอกสารประกอบเกี่ยวกับ Apigee X.
ข้อมูล

InvalidTimeout

ข้อความแสดงข้อผิดพลาด

การทำให้พร็อกซี API ใช้งานได้ผ่าน Edge UI หรือ Edge Management API จะล้มเหลวโดยมีข้อความแสดงข้อผิดพลาดต่อไปนี้

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

ตัวอย่างข้อความแสดงข้อผิดพลาด

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

ตัวอย่างภาพหน้าจอแสดงข้อผิดพลาด

สาเหตุ

หากตั้งค่าองค์ประกอบ <CacheLookupTimeoutInSeconds> ของนโยบาย ResponseCache เป็นจำนวนลบ การทำให้พร็อกซี API ใช้งานได้จะล้มเหลว

ตัวอย่างเช่น หาก <CacheLookupTimeoutInSeconds> คือ -1 การทำให้พร็อกซี API ใช้งานได้จะล้มเหลว

การวินิจฉัย

  1. ระบุค่าที่ไม่ถูกต้องที่ใช้กับองค์ประกอบ <CacheLookupTimeoutInSeconds> ในนโยบาย ResponseCache ซึ่งคุณจะเห็นข้อมูลนี้ในข้อความแสดงข้อผิดพลาด ตัวอย่างเช่น ในข้อผิดพลาดต่อไปนี้ ค่าที่ไม่ถูกต้องที่ใช้กับองค์ประกอบ <CacheLookupTimeoutInSeconds> คือ -1

    CacheLookupTimeoutInSeconds -1 value should be greater than zero.
    
  2. ตรวจสอบนโยบาย ResponseCache ทั้งหมดในพร็อกซี API ที่เกิดความล้มเหลวขึ้น อาจมีนโยบาย ResponseCache อย่างน้อย 1 รายการที่ระบุองค์ประกอบ <CacheLookupTimeoutInSeconds>

    ตัวอย่างเช่น การกำหนดค่านโยบายต่อไปนี้ตั้งค่า <CacheLookupTimeoutInSeconds> เป็น -1 ซึ่งตรงกับข้อความแสดงข้อผิดพลาด

    <?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. หากระบุ <CacheLookupTimeoutInSeconds> เป็นจำนวนเต็มลบ ค่าที่ได้คือสาเหตุของข้อผิดพลาด

ความละเอียด

ตรวจสอบว่าระบุค่าสำหรับองค์ประกอบ <CacheLookupTimeoutInSeconds> ของนโยบาย ResponseCache เป็นจำนวนเต็มที่ไม่เป็นลบเสมอ

หากต้องการแก้ไขตัวอย่างนโยบาย ResponseCache ที่แสดงด้านบน ให้แก้ไข <CacheLookupTimeoutInSeconds> element เป็น 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

ข้อความแสดงข้อผิดพลาด

การทำให้พร็อกซี API ใช้งานได้ผ่าน Edge UI หรือ Edge Management API จะล้มเหลวโดยมีข้อความแสดงข้อผิดพลาดต่อไปนี้

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

ตัวอย่างข้อความแสดงข้อผิดพลาด

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

ตัวอย่างภาพหน้าจอแสดงข้อผิดพลาด

สาเหตุ

ข้อผิดพลาดนี้เกิดขึ้นหากมีการตั้งค่าองค์ประกอบ <CacheResource> ในนโยบาย ResponseCache เป็นชื่อที่ไม่มีอยู่ในสภาพแวดล้อมที่ใช้งานพร็อกซี API

การวินิจฉัย

  1. ระบุแคชที่ไม่ถูกต้องที่ใช้ในองค์ประกอบ <CacheResource> ของนโยบายแคชการตอบกลับและสภาพแวดล้อมที่เกิดข้อผิดพลาด ซึ่งคุณจะเห็นทั้ง 2 รายการนี้ในข้อความแสดงข้อผิดพลาด ตัวอย่างเช่น ในข้อผิดพลาดต่อไปนี้ ชื่อของแคชที่ไม่ถูกต้องคือ itemscache และชื่อสภาพแวดล้อมคือ prod

    Invalid cache resource reference itemscache in Step definition ItemsResponseCache. Context Revision:2;APIProxy:StoresInventory;Organization:kkalckstein-eval;Environment:prod
    
  2. ตรวจสอบนโยบาย ResponseCache ทั้งหมดในพร็อกซี API ที่ล้มเหลว เกิดขึ้น ระบุนโยบาย ResponseCache เฉพาะที่มีแคชที่ไม่ถูกต้อง (ระบุในขั้นตอนที่ 1) ระบุไว้ในองค์ประกอบ <CacheResource>

    ตัวอย่างเช่น นโยบายต่อไปนี้ระบุค่า <CacheResource> เป็น itemscache ซึ่งตรงกับข้อความแสดงข้อผิดพลาด

    <?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. ตรวจสอบว่าแคช (ระบุในขั้นตอนที่ 2) ได้รับการกำหนดในสภาพแวดล้อมที่เฉพาะเจาะจงหรือไม่ (ระบุในขั้นตอนที่ 1)

    ใน Edge UI ให้ไปที่ API > การกำหนดค่าสภาพแวดล้อมและตรวจสอบว่ามีแคชอยู่ในแท็บแคชในสภาพแวดล้อมที่ระบุหรือไม่ หากไม่มีแคชอยู่ แสดงว่าเกิดข้อผิดพลาด

    เช่น โปรดสังเกตในภาพหน้าจอด้านล่างว่าไม่มีแคชชื่อ itemscache อยู่

    เนื่องจากไม่มีการระบุแคชชื่อ itemscache ไว้ในสภาพแวดล้อม prod คุณจึงได้รับข้อผิดพลาด

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

ความละเอียด

ตรวจสอบว่าชื่อแคชที่ระบุในองค์ประกอบ <CacheResource> ได้รับการสร้างขึ้นในสภาพแวดล้อมที่คุณต้องการทำให้พร็อกซี API ใช้งานได้

โปรดดูข้อมูลเกี่ยวกับวิธีสร้างแคชในการสร้างและแก้ไขแคชของสภาพแวดล้อม

ResponseCacheStepAttachmentNotAllowedReq

ข้อความแสดงข้อผิดพลาด

การทำให้พร็อกซี API ใช้งานได้ผ่าน Edge UI หรือ Edge Management API จะล้มเหลวโดยมีข้อความแสดงข้อผิดพลาดต่อไปนี้

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.

ตัวอย่างข้อความแสดงข้อผิดพลาด

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

ตัวอย่างภาพหน้าจอแสดงข้อผิดพลาด

สาเหตุ

ข้อผิดพลาดนี้เกิดขึ้นหากมีนโยบาย ResponseCache เดียวกันแนบอยู่กับเส้นทางคำขอหลายรายการภายในขั้นตอนใดก็ตามของพร็อกซี API

เช่น ถ้าคุณแนบนโยบาย ResponseCache เดียวกันไว้ในคำขอโฟลว์ล่วงหน้าของทั้งพร็อกซีและปลายทางเป้าหมาย ข้อผิดพลาดนี้จะเกิดขึ้น

การวินิจฉัย

  1. ระบุชื่อนโยบาย ResponseCache ที่แนบมากกว่า 1 ครั้ง ซึ่งคุณจะเห็นข้อมูลนี้ในข้อความแสดงข้อผิดพลาด ตัวอย่างเช่น ในข้อผิดพลาดต่อไปนี้ ชื่อของนโยบาย ResponseCache คือ 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. ตรวจสอบโฟลว์คำขอทั้งหมดในพร็อกซีและปลายทางเป้าหมายของพร็อกซี API ที่เกิดข้อผิดพลาด หากมีการแนบนโยบาย ResponseCache เดียวกันในขั้นตอนคำขอ 2 ขั้นตอนขึ้นไป ข้อผิดพลาดดังกล่าวจึงเกิดขึ้น

    ในตัวอย่างต่อไปนี้ จะมีการกำหนดค่านโยบาย ResponseCache Response-Cache-1 เดียวกันในเส้นทางคำขอของ PreFlow เริ่มต้นของพร็อกซีและ 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>
        ...
    

ความละเอียด

ตรวจสอบว่าได้แนบนโยบาย ResponseCache กับเส้นทางคำขอเพียงเส้นทางเดียวในทุกขั้นตอนของพร็อกซี API

หากต้องการแก้ไขตัวอย่างที่แสดงด้านบน ให้นำนโยบาย ResponseCache Response-Cache-1 ออกจากขั้นตอนคำขอแบบใดแบบหนึ่งจาก 2 ขั้นตอน

ResponseCacheStepAttachmentNotAllowedResp

ข้อความแสดงข้อผิดพลาด

การทำให้พร็อกซี API ใช้งานได้ผ่าน Edge UI หรือ Edge Management API จะล้มเหลวโดยมีข้อความแสดงข้อผิดพลาดต่อไปนี้

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.

ตัวอย่างข้อความแสดงข้อผิดพลาด

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

ตัวอย่างภาพหน้าจอแสดงข้อผิดพลาด

สาเหตุ

ข้อผิดพลาดนี้เกิดขึ้นหากมีนโยบาย ResponseCache เดียวกันแนบอยู่กับเส้นทางการตอบกลับหลายเส้นทางภายในโฟลว์ต่างๆ ของพร็อกซี API

เช่น ถ้าคุณแนบนโยบาย ResponseCache เดียวกันไว้ในการส่งล่วงหน้าการตอบกลับของทั้งพร็อกซีและปลายทางเป้าหมาย ข้อผิดพลาดนี้จะเกิดขึ้น

การวินิจฉัย

  1. ระบุชื่อนโยบาย ResponseCache ที่แนบมากกว่า 1 ครั้ง ซึ่งคุณจะเห็นข้อมูลนี้ในข้อความแสดงข้อผิดพลาด ตัวอย่างเช่น ในข้อผิดพลาดต่อไปนี้ ชื่อของนโยบาย ResponseCache คือ 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. ตรวจสอบโฟลว์คำขอทั้งหมดในพร็อกซีและปลายทางเป้าหมายของพร็อกซี API ที่เกิดข้อผิดพลาด หากมีการแนบนโยบาย ResponseCache เดียวกันในขั้นตอนการตอบกลับตั้งแต่ 2 ขั้นตอนขึ้นไป ข้อผิดพลาดดังกล่าวจึงเกิดขึ้น

    ในตัวอย่างต่อไปนี้ จะมีการกำหนดค่านโยบาย ResponseCache Response-Cache-1 เดียวกันในเส้นทางการตอบสนองของ PreFlow เริ่มต้นของพร็อกซีและ 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>
        ...
    

ความละเอียด

ตรวจสอบว่าได้แนบนโยบาย ResponseCache กับเส้นทางการตอบกลับเพียงเส้นทางเดียวในทุกขั้นตอนของพร็อกซี API

หากต้องการแก้ไขตัวอย่างที่แสดงด้านบน ให้นำนโยบาย ResponseCache Response-Cache-1 ออกจากเส้นทางการตอบกลับหนึ่งใน 2 เส้นทาง

InvalidMessagePatternForErrorCode

ข้อความแสดงข้อผิดพลาด

การทำให้พร็อกซี API ใช้งานได้ผ่าน Edge UI หรือ Edge Management API จะล้มเหลวโดยมีข้อความแสดงข้อผิดพลาดอย่างใดอย่างหนึ่งต่อไปนี้

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

หรือ

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

ตัวอย่างข้อความแสดงข้อผิดพลาด

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

หรือ

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

ตัวอย่างภาพหน้าจอแสดงข้อผิดพลาด

หรือ

สาเหตุ

ข้อผิดพลาดนี้เกิดขึ้นหากองค์ประกอบ <SkipCacheLookup> หรือ <SkipCachePopulation> ในนโยบาย ResponseCache มีเงื่อนไขที่ไม่ถูกต้อง

การวินิจฉัย

  1. ตรวจสอบนโยบาย ResponseCache ทั้งหมดในพร็อกซี API ที่เกิดข้อผิดพลาดขึ้น แล้วดูว่ามีนโยบายที่ระบุเงื่อนไขสำหรับองค์ประกอบ <SkipCacheLookup> และ/หรือ <SkipCachePopulation> หรือไม่

  2. ตรวจสอบว่าเงื่อนไขที่ระบุสำหรับองค์ประกอบ <SkipCacheLookup> และ/หรือ <SkipCachePopulation> ไม่ถูกต้องหรือไม่ หากใช่ นั่นคือสาเหตุของข้อผิดพลาด

    ในตัวอย่างต่อไปนี้ องค์ประกอบ <SkipCachePopulation> ใช้โอเปอเรเตอร์ JavaScript === เพื่อตรวจหาค่าที่เท่ากันและประเภทที่เท่ากันซึ่งไม่ถูกต้อง

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

    เนื่องจากโอเปอเรเตอร์ === ไม่ถูกต้อง คุณจึงได้รับข้อผิดพลาด:

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

ความละเอียด

ตรวจสอบว่าเงื่อนไขที่ระบุสำหรับองค์ประกอบ <SkipCacheLookup> และ/หรือ <SkipCachePopulation> ถูกต้องเสมอ

หากต้องการแก้ไขตัวอย่าง นโยบาย ResponseCache ที่แสดงด้านบน ให้แก้ไข <SkipCacheLookup> ให้ใช้โอเปอเรเตอร์ = ดังนี้

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

ข้อความแสดงข้อผิดพลาด

การทำให้พร็อกซี API ใช้งานได้ผ่าน Edge UI หรือ Edge Management API จะแสดงข้อความแสดงข้อผิดพลาดดังนี้ และสถานะการติดตั้งใช้งานของพร็อกซี API จะมีสถานะเป็นทำให้ใช้งานได้บางส่วน ดังนี้

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

ตัวอย่างข้อความแสดงข้อผิดพลาด

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

สาเหตุ

ข้อผิดพลาดนี้เกิดขึ้นหากไม่ได้สร้างแคชเฉพาะที่ระบุไว้ในข้อความแสดงข้อผิดพลาดบนคอมโพเนนต์ตัวประมวลผลข้อความที่เฉพาะเจาะจง

ความละเอียด

หากคุณเป็นผู้ใช้ Private Cloud ให้ทำตามวิธีการด้านล่าง

  1. แสดงรายการการทำให้พร็อกซี API ใช้งานได้และระบุว่าเครื่องมือประมวลผลข้อความใดมีข้อผิดพลาด steps.cache.CacheNotFound

    ตัวอย่างเอาต์พุต

    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. จดบันทึก UUID ของโปรแกรมประมวลผลข้อความที่คุณเห็นข้อผิดพลาด steps.cache.CacheNotFound ระบุชื่อโฮสต์/ที่อยู่ IP ของเครื่องมือประมวลผลข้อความจาก UUID

  3. เข้าสู่ระบบ Message Processor ที่ต้องการ และรีสตาร์ทโดยใช้คำสั่งต่อไปนี้:

    apigee-service edge-message-processor restart

หากคุณเป็นผู้ใช้ Public Cloud หรือหากยังคงพบปัญหาเกี่ยวกับ Private Cloud โปรดติดต่อทีมสนับสนุนของ Apigee เพื่อขอความช่วยเหลือ