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

מוצג המסמך של 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 [populate_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 PopulateCache-Token. Context Revision:2;APIProxy:TestCache;Organization:kkalckstein-eval;Environment:test

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

סיבה

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

אבחון

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

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

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

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

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

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

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

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

רזולוציה

צריך לוודא שהמטמון שמצוין ברכיב <CacheResource> של המדיניות PopulateCache נוצר בסביבה שבה רוצים לפרוס את שרת ה-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 לקבלת עזרה.