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

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

InvalidCacheResourceReference

הודעת שגיאה

כשפורסים את ה-API של ה-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. מזהים את שם המדיניות InvalidateCache, את המטמון הלא חוקי שנעשה בו שימוש ברכיב <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, עוברים אל ADMIN (אדמין) > Environment (סביבה) > test (בדיקה) ובודקים אם המטמון קיים בכרטיסייה Caches (מטמון) של Environment Configuration (הגדרת סביבה). אם המטמון לא קיים, זו הסיבה לשגיאה.

    לדוגמה, יש לשים לב בצילום המסך שלמטה שהמטמון בשם 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

הודעת שגיאה

כשפורסים את ה-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

סיבה

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

רזולוציה

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

  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 כדי לקבל עזרה.