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

شما در حال مشاهده اسناد 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 وجود داشته باشد که در آن عنصر <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> خط مشی 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 خاصی که در آن شکست رخ داده است، بررسی کنید. خط مشی 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، به APIs > Environment Configuration بروید و بررسی کنید که آیا کش در تب 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 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 را که بیش از یک بار پیوست شده است، شناسایی کنید. شما می توانید این اطلاعات را در پیام خطا پیدا کنید. به عنوان مثال، در خطای زیر نام سیاست 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 Proxy 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 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 را که بیش از یک بار پیوست شده است، شناسایی کنید. شما می توانید این اطلاعات را در پیام خطا پیدا کنید. به عنوان مثال، در خطای زیر نام سیاست 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 Proxy 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 تنها به یک مسیر پاسخ در تمام جریان‌های پروکسی API متصل است.

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

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

    <?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 Proxy به عنوان نیمه مستقر شده علامت گذاری می شود:

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

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

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

علت

این خطا در صورتی رخ می دهد که حافظه پنهان ذکر شده در پیام خطا روی یک جزء خاص Message Processor ایجاد نشده باشد.

قطعنامه

اگر کاربر 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 تماس بگیرید.