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

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

InvalidIndex

הודעת שגיאה

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

Error Saving Revision revision_number
Invalid index index in KeyValueMapStepDefinition policy_name.

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

Error Saving Revision 2
Invalid index 0 in KeyValueMapStepDefinition GetKVM.

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

סיבה

אם המאפיין index שמצוין ברכיב <Get> של מדיניות פעולות מיפוי של ערכי מפתח הוא אפס או מספר שלילי, הפריסה של שרת ה-proxy ל-API תיכשל. האינדקס מתחיל ב-1, לכן אינדקס של אפס או מספר שלם שלילי נחשב ללא תקף.

לדוגמה, אם הערך בשדה index שצוין הוא 0 ברכיב <Get> במדיניות פעולות של מיפוי ערכי מפתח, הפריסה של שרת ה-proxy ל-API תיכשל.

אבחון

  1. צריך לזהות את המדיניות בנושא פעולות במפת ערכי מפתח שבה אירעה השגיאה והאינדקס הלא תקין. אפשר למצוא את המידע הזה בהודעת השגיאה. לדוגמה, בשגיאה הבאה, שם המדיניות הוא GetKVM והאינדקס הלא תקין הוא 0:

    Invalid index 0 in KeyValueMapStepDefinition GetKVM.

  2. מוודאים שהערך של האינדקס שצוין ברכיב <Get> במדיניות של מיפוי ערכי מפתח שנכשלו תואם לערך שזוהה בהודעת השגיאה (שלב 1 למעלה). לדוגמה, המדיניות הבאה מציינת את ערך האינדקס כ-0, התואם את הערך שמופיע בהודעת השגיאה:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <KeyValueMapOperations mapIdentifier="FooKVM" async="false" continueOnError="false" enabled="true" name="GetKVM">
        <DisplayName>GetKVM</DisplayName>
        <ExpiryTimeInSecs>86400</ExpiryTimeInSecs>
        <Scope>environment</Scope>
        <Get assignTo="foo_variable" index="0">
            <Key>
                <Parameter>FooKey_1</Parameter>
            </Key>
        </Get>
    </KeyValueMapOperations>
    
  3. אם האינדקס שצוין הוא מספר שלם או אפס, אז זו הסיבה לשגיאה.

    במדיניות לדוגמה של פעולות במפת ערכי מפתח שמוצגת למעלה, הערך של האינדקס הוא 0, והוא לא תקין. לכן, הפריסה של ה-Proxy ל-API נכשלה עם השגיאה:

    Invalid index 0 in KeyValueMapStepDefinition GetKVM.
    

רזולוציה

חשוב לוודא שמאפיין האינדקס שצוין ברכיב <Get> של מדיניות פעולות מיפוי ערך מפתח תקין (מספר שלם שאינו אפס או שלילי).

כדי לתקן את המדיניות לדוגמה של מיפוי ערכי מפתח, אפשר לשנות את האינדקס ל-1.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<KeyValueMapOperations mapIdentifier="FooKVM" async="false" continueOnError="false" enabled="true" name="GetKVM">
    <DisplayName>GetKVM</DisplayName>
    <ExpiryTimeInSecs>86400</ExpiryTimeInSecs>
    <Scope>environment</Scope>
    <Get assignTo="foo_variable" index="1">
        <Key>
            <Parameter>FooKey_1</Parameter>
        </Key>
    </Get>
</KeyValueMapOperations>

KeyIsMissing

הודעת שגיאה

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

Error Saving Revision revision_number
Error occurred while validation of bean policy_name.xml
Reason: - Non null value expected for element Parameter in Entry.

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

Error Saving Revision 3
Error occurred while validation of bean GetKVM.xml. Reason: - Non null value expected for element Parameter in Entry

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

סיבה

השגיאה הזו מתקבלת אם הרכיב <Key> חסר לחלוטין או <Parameter> חסר רכיב בתוך הרכיב <Key> מתחת ל-<Entry> של <InitialEntries> של המדיניות בנושא פעולות במפת ערכי מפתח.

אבחון

  1. צריך לציין את המדיניות בנושא פעולות במפת ערכי מפתח שבה אירעה השגיאה. אפשר למצוא את המידע הזה בהודעת השגיאה. לדוגמה, בשגיאה הבאה, שם המדיניות של מיפוי ערכי מפתח הוא GetKVM.

    Error occurred while validation of bean GetKVM.xml. Reason: - Non null value expected for element Parameter in Entry
    
  2. במדיניות של מיפוי ערכי מפתח שנכשלו, צריך לבדוק אם יש <Entry> שיש בו רכיב <Key> או <Parameter> חסר מתחת ל-<InitialEntries>.

    דוגמה למדיניות של פעולות מיפוי ערכים של מפתחות שחסר בה <Parameter> רכיב בתוך רכיב <Key>:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="GetKVM" mapIdentifier="FooKVM">
        <DisplayName>GetKVM</DisplayName>
        <Properties/>
        <ExclusiveCache>false</ExclusiveCache>
        <ExpiryTimeInSecs>300</ExpiryTimeInSecs>
        <InitialEntries>
            <Entry>
                <Key/>
                <Value>v1</Value>
            </Entry>
            <Entry>
                <Key>
                    <Parameter>k2</Parameter>
                </Key>
                <Value>v2</Value>
            </Entry>
        </InitialEntries>
    

    במקרה הזה, הרכיב הראשון גורם לבעיה.

רזולוציה

חשוב לוודא שלכל רכיבי <Entry> שמתחת לרכיב <InitialEntries> במדיניות פעולות מפת ערכי מפתח יש רכיב <Key> ואחריו רכיב <Parameter>.

כדי לתקן את המדיניות לדוגמה של פעולות במפת ערכי מפתחות שמוצגת למעלה, הוספת רכיב <Parameter> פותרת את הבעיה:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="GetKVM" mapIdentifier="FooKVM">
    <DisplayName>GetKVM</DisplayName>
    <Properties/>
    <ExclusiveCache>false</ExclusiveCache>
    <ExpiryTimeInSecs>300</ExpiryTimeInSecs>
    <InitialEntries>
        <Entry>
            <Key>
                <Parameter>k1</Parameter>
            </Key>
            <Value>v1</Value>
        </Entry>
        <Entry>
            <Key>
                <Parameter>k2</Parameter>
            </Key>
            <Value>v2</Value>
        </Entry>
    </InitialEntries>
    ...

ValueIsMissing

הודעת שגיאה

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

Error Saving Revision revision_number
Error occurred while validation of bean policy_name.xml. Reason: - Non null value expected for element Value in Entry.

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

Error Saving Revision 3
Error occurred while validation of bean GetKVM.xml.Reason: - Non null value expected for element Value in Entry

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

סיבה

שגיאה זו מתרחשת כאשר הרכיב <Value> חסר מתחת לרכיב <Entry> של הרכיב <InitialEntries> במדיניות פעולות מפת הערך של מפתחות.

אבחון

  1. צריך לציין את המדיניות בנושא פעולות במפת ערכי מפתח שבה אירעה השגיאה. אפשר למצוא את המידע הזה בהודעת השגיאה. לדוגמה, בשגיאה הבאה, שם המדיניות של מיפוי ערכי מפתח הוא GetKVM.

    Error occurred while validation of bean GetKVM.xml. Reason: - Non null value expected for element Value in Entry
    
  2. במדיניות של פעולות המיפוי של ערכי המפתח שנכשלו, צריך לבדוק אם יש רכיב <Entry> כלשהו שחסר בו רכיב <Value> מתחת ל-<InitialEntries>.

    הנה דוגמה למדיניות של פעולות מיפוי ערכים של מפתחות שחסר בה רכיב <Value>:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="GetKVM" mapIdentifier="testNotEncrypte">
        <DisplayName>GetKVM3</DisplayName>
        <Properties/>
        <ExclusiveCache>false</ExclusiveCache>
        <ExpiryTimeInSecs>300</ExpiryTimeInSecs>
        <InitialEntries>
            <Entry>
                <Key>
                    <Parameter>k1</Parameter>
                </Key>
            </Entry>
            <Entry>
                <Key>
                    <Parameter>k2</Parameter>
                </Key>
                <Value>v2</Value>
            </Entry>
        </InitialEntries>
        ...
    
    

רזולוציה

חשוב לוודא שכל רכיבי <Entry> שמתחת לרכיב <InitialEntries> במדיניות פעולות מיפוי ערכי מפתחות כוללים רכיב <Value>.

כדי לתקן את המדיניות לדוגמה של פעולות במפת ערכי מפתחות שמוצגת למעלה, הוספת רכיב <Value> פותרת את הבעיה:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<KeyValueMapOperations async="false" continueOnError="false" enabled="true" name="GetKVM" mapIdentifier="testNotEncrypte">
    <DisplayName>GetKVM3</DisplayName>
    <Properties/>
    <ExclusiveCache>false</ExclusiveCache>
    <ExpiryTimeInSecs>300</ExpiryTimeInSecs>
    <InitialEntries>
        <Entry>
            <Key>
                <Parameter>k1</Parameter>
            </Key>
            <Value>v1</Value>
        </Entry>
        <Entry>
            <Key>
                <Parameter>k2</Parameter>
            </Key>
            <Value>v2</Value>
        </Entry>
    </InitialEntries>
    ...