عیب‌یابی خطای استقرار خط‌مشی «حافظه نهان پاسخ»

درحال مشاهده اسناد Apigee Edge هستید.
به اسناد Apigee X بروید.
اطلاعات

InvalidTimeout

پیام خطا

استقرار پراکسی API ازطریق «واسط کاربر Edge» یا «میانای برنامه‌سازی کاربردی مدیریت Edge» با این پیام خطا ناموفق است:

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 باشد، استقرار پراکسی «میانای برنامه‌سازی کاربردی» ناموفق خواهد بود.

تشخیص

  1. مقدار نامعتبر استفاده‌شده برای عنصر <CacheLookupTimeoutInSeconds> در خط‌مشی ResponseCache را شناسایی کنید. می‌توانید این اطلاعات را در پیام خطا پیدا کنید. برای مثال، در خطای زیر، مقدار نامعتبر استفاده‌شده برای عنصر <CacheLookupTimeoutInSeconds>، -1 است:

    CacheLookupTimeoutInSeconds -1 value should be greater than zero.
    
  2. همه خط‌مشی‌های ResponseCache را در «پراکسی API» خاصی که در آن خرابی رخ داده است بررسی کنید. ممکن است یک یا چند خط‌مشی ResponseCache وجود داشته باشد که عنصر <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» یا «میانای برنامه‌سازی کاربردی مدیریت Edge» با این پیام خطا ناموفق است:

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> خط‌مشی «حافظه نهان پاسخ» و محیطی را که خطا در آن رخ داده است شناسایی کنید. می‌توانید هر دو مورد را در پیام خطا پیدا کنید. برای مثال، در خطای زیر، نام حافظه نهان نامعتبر 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 خاصی را که در آن حافظه نهان نامعتبر (شناسایی‌شده در مرحله #۱) در عنصر <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. بررسی کنید که آیا حافظه نهان (تعیین‌شده در مرحله #۲) در محیط خاص (شناسایی‌شده در مرحله #۱) تعریف شده است یا نه.

    در «میانای کاربر Edge»، به میاناهای برنامه‌سازی کاربردی > پیکربندی محیط پیمایش کنید و بررسی کنید که آیا حافظه نهان در برگه حافظه‌های نهان در محیط خاص وجود دارد یا نه. اگر حافظه نهان وجود نداشته باشد، دلیل خطا همین است.

    برای مثال، در نماگرفت زیر توجه کنید که حافظه نهان با نام 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» یا «میانای برنامه‌سازی کاربردی مدیریت Edge» با این پیام خطا ناموفق است:

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 یکسانی را در Preflow درخواست هر دو «نقطه پایانی پراکسی» و «هدف» پیوست کرده باشید، این خطا رخ می‌دهد.

تشخیص

  1. نام خط‌مشی ResponseCache را که بیش‌از یک‌بار پیوست شده است شناسایی کنید. می‌توانید این اطلاعات را در پیام خطا پیدا کنید. برای مثال، در خطای زیر، نام خط‌مشی 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 یکسانی در دو یا چند جریان درخواست پیوست شده باشد، این دلیل خطا است.

    در مثال زیر، خط‌مشی یکسان 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 را از یکی از دو جریان درخواست بردارید.

ResponseCacheStepAttachmentNotAllowedResp

پیام خطا

استقرار پراکسی API ازطریق «واسط کاربر Edge» یا «میانای برنامه‌سازی کاربردی مدیریت Edge» با این پیام خطا ناموفق است:

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 یکسانی را در Preflow پاسخ هر دو «نقطه پایانی پراکسی» و «هدف» پیوست کرده باشید، این خطا رخ می‌دهد.

تشخیص

  1. نام خط‌مشی ResponseCache را که بیش‌از یک‌بار پیوست شده است شناسایی کنید. می‌توانید این اطلاعات را در پیام خطا پیدا کنید. برای مثال، در خطای زیر، نام خط‌مشی 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 یکسانی در دو یا چند جریان پاسخ پیوست شده باشد، این دلیل خطا است.

    در مثال زیر، خط‌مشی 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 فقط به یک مسیر پاسخ در سراسر جریان‌های «پراکسی میانای برنامه‌سازی کاربردی» پیوست شده باشد.

برای اصلاح کردن مثال نشان‌داده‌شده در بالا، خط‌مشی ResponseCache Response-Cache-1 را از یکی از دو مسیر پاسخ بردارید.

InvalidMessagePatternForErrorCode

پیام خطا

استقرار پراکسی API ازطریق «واسط کاربر Edge» یا «میانای برنامه‌سازی کاربردی مدیریت Edge» با یکی از این پیام‌های خطا ناموفق است:

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>از عامل جاوا اسکریپت === برای بررسی مقدار و نوع یکسان استفاده می‌کند که نامعتبر است.

    <?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» یا «میانای برنامه‌سازی کاربردی مدیریت Edge» منجر به پیام خطایی مانند این می‌شود و وضعیت استقرار «پراکسی API» به‌عنوان «استقرار جزئی» علامت‌گذاری می‌شود:

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

نمونه پیام خطا

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

علت

این خطا زمانی رخ می‌دهد که حافظه نهان خاص ذکرشده در پیام خطا در یک جزء «پردازشگر پیام» خاص ایجاد نشده باشد.

وضوح

اگر کاربر ابر خصوصی هستید، دستورالعمل‌های زیر را دنبال کنید:

  1. فهرست استقرار پراکسی «میانای برنامه‌سازی کاربردی» را تهیه کنید و مشخص کنید کدام «پردازنده‌های پیام» خطای 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. بااستفاده از فرمان زیر، به سیستم «پردازشگر پیام» موردنظر وارد شوید و آن را بازراه‌اندازی کنید:

    apigee-service edge-message-processor restart

اگر کاربر ابر عمومی هستید یا اگر مشکل در «ابر خصوصی» همچنان ادامه دارد، برای دریافت راهنمایی با پشتیبانی Apigee تماس بگیرید.