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

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

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

רזולוציה

אם אתם משתמשים ב-Private Cloud, אתם צריכים לפעול לפי ההוראות הבאות:

  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 או אם הבעיה נמשכת ב-Private Cloud, פנו אל התמיכה של Apigee לקבלת עזרה.