חיפוש בעיות בפריסה של מדיניות המטמון

כרגע מוצג התיעוד של Apigee Edge.
כניסה למסמכי התיעוד של Apigee X.
מידע

InvalidTimeout

הודעת שגיאה

כשפורסים את ה-API של ה-API דרך ממשק המשתמש של Edge או 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> של מדיניות LookupCache מוגדר למספר שלילי, הפריסה של שרת ה-proxy של ה-API תיכשל.

לדוגמה, אם הרכיב <CacheLookupTimeoutInSeconds> הוא -1, הפריסה של שרת ה-proxy של ה-API תיכשל.

אבחון

  1. זיהוי הערך הלא חוקי שצוין לרכיב <CacheLookupTimeoutInSeconds> במדיניות LookupCache. המידע הזה מופיע בהודעת השגיאה. לדוגמה, בשגיאה הבאה, הערך הלא חוקי שמשמש לרכיב <CacheLookupTimeoutInSeconds> הוא -1:

    CacheLookupTimeoutInSeconds -1 value should be greater than zero.
    
  2. יש לבדוק את כל כללי המדיניות של LookupCache בשרת ה-proxy הספציפי של ה-API שבו אירעה הכשל. יכול להיות מדיניות LookupCache אחת או יותר שבה צוין הרכיב <CacheLookupTimeoutInSeconds>. זיהוי המדיניות של LookUpCache שבה מצוין הערך הלא חוקי (שזוהה בשלב 1 למעלה) עבור הרכיב <CacheLookupTimeoutInSeconds>.

    לדוגמה, הגדרת המדיניות הבאה מציינת את הערך של <CacheLookupTimeoutInSeconds> של -1, שתואם להודעת השגיאה:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <LookupCache async="false" continueOnError="false" enabled="true" name="LookupCache-Token">
        <DisplayName>LookupCache-Token</DisplayName>
        <Properties/>
        <CacheKey>
            <Prefix/>
            <KeyFragment ref="request.queryparam.client_id"/>
        </CacheKey>
        <CacheLookupTimeoutInSeconds>-1</CacheLookupTimeoutInSeconds>
        <Scope>Exclusive</Scope>
        <ExpirySettings>
            <TimeoutInSec>3600</TimeoutInSec>
        </ExpirySettings>
        <AssignTo>usertoken</AssignTo>
    </LookupCache>
    
  3. אם <CacheLookupTimeoutInSeconds> מצוין כמספר שלם שלילי, זו הסיבה לשגיאה.

רזולוציה

יש לוודא שהערך של הרכיב <CacheLookupTimeoutInSeconds> במדיניות LookupCache מצוין תמיד כמספר שלם לא שלילי.

כדי לתקן את המדיניות לדוגמה של LookupCache שמוצגת למעלה, אפשר לשנות את הרכיב <CacheLookupTimeoutInSeconds> ל-30.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<LookupCache async="false" continueOnError="false" enabled="true" name="LookupCache-Token">
    <DisplayName>LookupCache-Token</DisplayName>
    <Properties/>
    <CacheKey>
        <Prefix/>
        <KeyFragment ref="request.queryparam.client_id"/>
    </CacheKey>
    <CacheResource>tokencache</CacheResource>
    <CacheLookupTimeoutInSeconds>30</CacheLookupTimeoutInSeconds>
    <Scope>Exclusive</Scope>
    <ExpirySettings>
        <TimeoutInSec>3600</TimeoutInSec>
    </ExpirySettings>
    <AssignTo>usertoken</AssignTo>
</LookupCache>

InvalidCacheResourceReference

הודעת שגיאה

כשפורסים את ה-API של ה-API דרך ממשק המשתמש של Edge או Edge management API, מוצגת הודעת השגיאה הבאה:

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:ResponseCache;Organization:[organization];Environment:[environment]

הודעת שגיאה לדוגמה

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

צילום מסך של שגיאה לדוגמה

סיבה

השגיאה הזו מתרחשת אם הרכיב <CacheResource> מוגדר לשם שלא קיים בסביבה שבה נפרס שרת ה-proxy של ה-API.

אבחון

  1. זיהוי המטמון הלא חוקי המשמש ברכיב <CacheResource> של המדיניות של LookupCache והסביבה שבה אירעה השגיאה. ניתן למצוא את שני הפריטים האלה בהודעת השגיאה. לדוגמה, בשגיאה הבאה, השם של המטמון הלא חוקי הוא tokencache ושם הסביבה הוא test.

    Invalid cache resource reference tokencache in Step definition LookupCache-Token. Context Revision:2;APIProxy:TestCache;Organization:kkalckstein-eval;Environment:test
    
  2. יש לבדוק את כל כללי המדיניות של LookupCache בשרת ה-proxy הספציפי של ה-API שבו אירעה הכשל. זיהוי המדיניות הספציפית של LookupCache שבה מצוין המטמון הלא חוקי (שזוהה בשלב #1) ברכיב <CacheResource>.

    לדוגמה, במדיניות הבאה מצוין הערך של <CacheResource> בתור tokencache, שתואם להודעת השגיאה:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <LookupCache async="false" continueOnError="false" enabled="true" name="LookupCache-Token">
        <DisplayName>LookupCache-Token</DisplayName>
        <Properties/>
        <CacheKey>
            <Prefix/>
            <KeyFragment ref="request.queryparam.client_id"/>
        </CacheKey>
        <CacheResource>tokencache</CacheResource>
        <CacheLookupTimeoutInSeconds/>
        <Scope>Exclusive</Scope>
        <ExpirySettings>
            <TimeoutInSec>3600</TimeoutInSec>
        </ExpirySettings>
        <AssignTo>usertoken</AssignTo>
    </LookupCache>
    
  3. בודקים אם המטמון (שנקבע בשלב #1) הוגדר בסביבה הספציפית (שזוהה בשלב #1).

    בממשק המשתמש של Edge, עוברים אל ADMIN (אדמין) > Environment (סביבה) > test (בדיקה) ובודקים אם המטמון קיים בכרטיסייה Caches (מטמון) של Environment Configuration (הגדרת סביבה). אם המטמון לא קיים, זו הסיבה לשגיאה.

    לדוגמה, יש לשים לב בצילום המסך שלמטה שהמטמון בשם tokencache לא קיים.

    מאחר שהמטמון בשם tokencache לא מוגדר בסביבה test, מתקבלת הודעת השגיאה:

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

רזולוציה

צריך לוודא ששם המטמון שצוין ברכיב <CacheResource> נוצר בסביבה שבה רוצים לפרוס את שרת ה-API של שרת ה-API.

למידע על אופן היצירה של המטמון, אפשר לעיין במאמר יצירה ועריכה של מטמון של סביבה.

CacheNotFound

הודעת שגיאה

כשפורסים את ה-API של שרת ה-proxy דרך ממשק המשתמש של Edge או Edge management API, מתקבלת הודעת שגיאה כמו זו. סטטוס הפריסה של שרת ה-proxy של ה-API מסומן כפרוס באופן חלקי:

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

הודעת שגיאה לדוגמה

Error Cache : configCache, not found in organization : kkalckstein-eval__test

סיבה

השגיאה הזאת מתרחשת אם המטמון הספציפי שמוזכר בהודעת השגיאה לא נוצר ברכיב מסוים של מעבד ההודעות.

רזולוציה

אם אתם משתמשים בענן פרטי, עליכם לפעול לפי ההוראות הבאות:

  1. פירוט הפריסות של שרת ה-API של שרת ה-proxy ובדיקה באילו מעבדי הודעות מוצגת השגיאה steps.cache.CacheNotFound.

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

    פלט לדוגמה

    {
      "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. יש לשים לב למזהי ה-UUID של מעבד ההודעות שבהם הבחנת בשגיאה steps.cache.CacheNotFound. מזהים את שם המארח/כתובת ה-IP של מעבד ההודעות המשויך ל-UUID.

  3. מתחברים למעבד ההודעות הספציפי ומפעילים אותו מחדש באמצעות הפקודה הבאה:

    apigee-service edge-message-processor restart

אם אתם משתמשים ב-Public Cloud או אם הבעיה נמשכת בענן פרטי, תוכלו לפנות לתמיכה של Apigee כדי לקבל עזרה.