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

מוצג המסמך של Apigee Edge.
עוברים אל מסמכי תיעוד של Apigee X.
מידע

InvalidCacheResourceReference

הודעת שגיאה

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

Error Deploying Revision revision_number to environment
Invalid cache resource reference [cache_resource] in Step definition [invalidate_cache_policy_name]. Context Revision:[revision_number];APIProxy:[apiproxy_name];Organization:[organization];Environment:[environment]

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

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

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

סיבה

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

אבחון

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

    Invalid cache resource reference tokencache in Step definition InvalidateCache-Token. Context Revision:2;APIProxy:TestCache;Organization:kkalckstein-eval;Environment:test
    
  2. יש לבדוק את ה-XML של מדיניות InvalidateCache שנכשל ולוודא ששם המטמון שצוין ברכיב <CacheResource> תואם להודעת השגיאה.

    בדוגמה הזו, שם המטמון שצוין ברכיב <CacheResource> הוא tokencache:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <InvalidateCache async="false" continueOnError="false" enabled="true" name="InvalidateCache-Token">
        <DisplayName>InvalidateCache-Token</DisplayName>
        <Properties/>
        <CacheKey>
            <Prefix/>
            <KeyFragment ref=""/>
        </CacheKey>
        <CacheResource>tokencache</CacheResource>
        <Scope>Exclusive</Scope>
        <CacheContext>
            <APIProxyName/>
            <ProxyName>default</ProxyName>
            <TargetName>default</TargetName>
        </CacheContext>
        <PurgeChildEntries>false</PurgeChildEntries>
    </InvalidateCache>
    
  3. בודקים אם המטמון (שזוהה בשלב 1) הוגדר בסביבה הספציפית (זוהתה בשלב 1).

    בממשק המשתמש של Edge, עוברים לקטע אדמין > סביבה > לבדוק את ולבדוק אם המטמון קיים בכרטיסייה מטמון של תצורת סביבה. אם המטמון לא קיים, זו הסיבה לשגיאה.

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

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

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

רזולוציה

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

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

CacheNotFound

הודעת שגיאה

במהלך פריסה של שרת ה-proxy ל-API דרך ממשק המשתמש של 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

סיבה

השגיאה הזו מתקבלת אם המטמון הספציפי שצוין בהודעת השגיאה לא נוצר ברכיב ספציפי של מעבד הודעות. מעבד הודעות הוא רכיב פנימי של Edge שמעבד את זרימת תעבורת ה-API דרך Apigee Edge.

רזולוציה

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

  1. מציגים את רשימת פריסות ה-proxy ל-API וקובעים באילו מעבדי הודעות מופיעה השגיאה 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 לקבלת עזרה.