عیب یابی خطای استقرار خط مشی کش پاسخ

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

زمان نامعتبر

پیام خطا

استقرار پروکسی 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 باشد، پیاده‌سازی پروکسی API با شکست مواجه می‌شود.

تشخیص

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

    CacheLookupTimeoutInSeconds -1 value should be greater than zero.
    
  2. تمام سیاست‌های ResponseCache را در API Proxy خاصی که خطا در آن رخ داده است، بررسی کنید. ممکن است یک یا چند سیاست 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>

مرجع منبع نامعتبرCache

پیام خطا

استقرار پروکسی 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> از سیاست Response Cache و محیطی که خطا در آن رخ داده است را شناسایی کنید. می‌توانید هر دوی این موارد را در پیام خطا پیدا کنید. برای مثال، در خطای زیر، نام کش نامعتبر itemscache و نام محیط prod است.

    Invalid cache resource reference itemscache in Step definition ItemsResponseCache. Context Revision:2;APIProxy:StoresInventory;Organization:kkalckstein-eval;Environment:prod
    
  2. تمام سیاست‌های ResponseCache را در API Proxy خاصی که خرابی در آن رخ داده است، بررسی کنید. سیاست 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. بررسی کنید که آیا حافظه پنهان (تعیین‌شده در مرحله ۲) در محیط خاص (شناسایی‌شده در مرحله ۱) تعریف شده است یا خیر.

    در رابط کاربری Edge، به APIها > پیکربندی محیط بروید و بررسی کنید که آیا حافظه پنهان در تب Caches در محیط خاص وجود دارد یا خیر. اگر حافظه پنهان وجود ندارد، پس علت خطا همین است.

    برای مثال، در تصویر زیر توجه کنید که حافظه پنهانی با نام 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 برای هر دو Proxy و Target Endpoints پیوست کرده باشید، این خطا رخ می‌دهد.

تشخیص

  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. تمام جریان‌های درخواست در Proxy و Target Endpointهای API Proxy که خطا در آنها رخ داده است را بررسی کنید. اگر سیاست 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 Proxy متصل شده است.

برای اصلاح مثال نشان داده شده در بالا، سیاست 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 پاسخ هر دو Proxy و Target Endpoints پیوست کرده باشید، این خطا رخ می‌دهد.

تشخیص

  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. تمام جریان‌های درخواست در Proxy و Target Endpointهای API Proxy که خطا در آنها رخ داده است را بررسی کنید. اگر سیاست 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 فقط به یک مسیر پاسخ در تمام جریان‌های API Proxy متصل شده است.

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

الگوی پیام نامعتبربرای کد خطا

پیام خطا

استقرار پروکسی 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 Proxy که خطا در آن رخ داده است، بررسی کنید و بررسی کنید که آیا سیاست‌هایی وجود دارند که شرایط مشخص شده‌ای برای عناصر <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>

حافظه پنهان یافت نشد

پیام خطا

استقرار پروکسی API از طریق رابط کاربری Edge یا API مدیریت Edge منجر به پیام خطایی مانند این می‌شود و وضعیت استقرار پروکسی API به صورت «تا حدی مستقر» علامت‌گذاری می‌شود:

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

مثال پیام خطا

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

علت

این خطا زمانی رخ می‌دهد که حافظه پنهان (cache) مشخص ذکر شده در پیام خطا، روی یک جزء خاص پردازشگر پیام (Message Processor) ایجاد نشده باشد.

وضوح تصویر

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

  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. به پردازشگر پیام خاص وارد شوید و با استفاده از دستور زیر آن را مجدداً راه اندازی کنید:

    apigee-service edge-message-processor restart

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