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

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

InvalidQuotaInterval

הודעת השגיאה

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

Error Saving Revision [revision_number]
Invalid quota interval [interval] in quota policy [policy_name].

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

Error Saving Revision 1
Invalid quota interval 0.1 in quota policy Quota-1.

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

סיבה

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

לדוגמה, אם מרווח המכסה שצוין הוא 0.1 ברכיב <Interval> של מדיניות מכסה, הפריסה של שרת ה-proxy של ה-API תיכשל.

אבחון

  1. מזהים את מדיניות המכסה שבה אירעה השגיאה ואת מרווח המכסה הלא חוקי. המידע הזה מופיע בהודעת השגיאה. לדוגמה, בשגיאה הבאה, שם המדיניות הוא Quota-1 ומרווח המכסה הלא חוקי הוא 0.1:

    Error Saving Revision 1
    Invalid quota interval 0.1 in quota policy Quota-1.
    
  2. מוודאים שהערך של מרווח המכסה שצוין במדיניות המכסה שנכשלה תואם לערך שצוין בהודעת השגיאה (שלב 1 למעלה). לדוגמה, במדיניות הבאה מצוין הערך של מרווח המכסה כ-0.1, שתואם למה שמופיע בהודעת השגיאה:

    <Quota async="false" continueOnError="false" enabled="true" name="Quota-1">
     <DisplayName>Quota-1</DisplayName>
     <Properties />
     <Allow count="3" />
     <Interval>0.1</Interval>
     <TimeUnit>minute</TimeUnit>
    </Quota>
    
  3. אם מרווח המכסה שצוין אינו מספר שלם, זו הסיבה לשגיאה.

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

    Invalid quota interval 0.1 in quota policy Quota-1.
    

רזולוציה

יש לוודא שהערך של מרווח המכסה המצוין ברכיב <Interval> במדיניות המכסה הוא מספר שלם. לדוגמה:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Quota async="false" continueOnError="false" enabled="true" name="Quota-1">
    <DisplayName>Quota-1</DisplayName>
    <Properties/>
    <Allow count="3"/>
    <Interval>1</Interval>
    <TimeUnit>minute</TimeUnit>
</Quota>

InvalidQuotaTimeUnit

הודעת השגיאה

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

Error Saving Revision [revision_number]
Invalid quota interval time unit [time_unit] in quota policy
[policy_name] in Revision [revision_number] of application
[proxy_name], in organization [org_name].

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

Error Saving Revision 1
Invalid quota interval time unit year in quota policy Quota-1 in Revision 1 of application Quota_test, in organization aprabhashankar-eval.

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

סיבה

אם יחידת הזמן שצוינה ברכיב <TimeUnit> במדיניות המכסה לא נתמכת, הפריסה של שרת ה-proxy של ה-API תיכשל.

יחידות הזמן הנתמכות הן minute, hour, day, week ו-month.

לדוגמה, אם יחידת הזמן מצוינת כ-year ברכיב <TimeUnit> של מדיניות המכסה, הפריסה של שרת ה-proxy של ה-API תיכשל.

אבחון

  1. מזהים את מדיניות המכסה שבה אירעה השגיאה ואת יחידת הזמן הלא חוקית. המידע הזה מופיע בהודעת השגיאה. לדוגמה, בשגיאה הבאה, שם המדיניות הוא Quota-1 ויחידת הזמן הלא חוקית היא year:

    Invalid quota interval time unit year in quota policy Quota-1
    in Revision 1 of application Quota_test, in organization aprabhashankar-eval.
    
  2. מוודאים שיחידת הזמן שצוינה ברכיב <TimeUnit> של מדיניות המכסה תואמת ליחידת הזמן שזוהתה בהודעת השגיאה (שלב 1 למעלה). לדוגמה, במדיניות הבאה מצוין הערך של מרווח המכסה כ-year, שתואם למה שמופיע בהודעת השגיאה:

    <Quota async="false" continueOnError="false" enabled="true" name="Quota-1">
     <DisplayName>Quota-1</DisplayName>
     <Properties />
     <Allow count="3" />
     <Interval>1</Interval>
     <TimeUnit>year</TimeUnit>
    </Quota>
    
  3. אם יחידת הזמן שצוינה במדיניות המכסה לא נתמכת, זו הסיבה לשגיאה.

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

    Invalid quota interval time unit year in quota policy Quota-1 in Revision 1 of application Quota_test, in organization aprabhashankar-eval.
    

רזולוציה

חשוב לוודא שיחידת הזמן שצוינה ברכיב <TimeUnit> של מדיניות המכסה נתמכת. לדוגמה:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Quota async="false" continueOnError="false" enabled="true" name="Quota-1">
    <DisplayName>Quota-1</DisplayName>
    <Properties/>
    <Allow count="3"/>
    <Interval>1</Interval>
    <TimeUnit>month</TimeUnit>
</Quota>

InvalidQuotaType

הודעת השגיאה

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

Error Saving Revision [revision_number]
No enum constant com.apigee.quota.types.QuotaType.[type].

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

Error Saving Revision 1
No enum constant com.apigee.quota.types.QuotaType.window.

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

סיבה

אם type המכסה שצוינה במאפיין type ברכיב <Quota> של מדיניות Quota לא תקין, הפריסה של שרת ה-proxy של ה-API תיכשל.

סוגי המכסות הנתמכים הם default, calendar, flexi ו-rollingwindow.

לדוגמה, אם סוג המדיניות שצוין כ-window ברכיב <Quota> במדיניות המכסה, הפריסה של שרת ה-Proxy ל-API תיכשל.

אבחון

  1. זיהוי סוג המכסה הלא חוקי שבו נעשה שימוש במדיניות המכסה. ניתן למצוא את המידע הזה בהודעת השגיאה. לדוגמה, בשגיאה הבאה, סוג המדיניות הלא חוקי הוא window:

    Error Saving Revision 1
    No enum constant com.apigee.quota.types.QuotaType.window.
    
  2. יש לבדוק את כל כללי מדיניות המכסה בשרת ה-proxy הספציפי של ה-API שבו אירעה הכשל. אם יש מדיניות מכסה שבה סוג המכסה שמצוין ברכיב <Quota> תואם לסוג שאינו נתמך שזוהה בשלב 1 למעלה, זו הסיבה לשגיאה.

    לדוגמה, המדיניות הבאה מציינת את הסוג כ-window, שתואם לתוכן הודעת השגיאה:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Quota async="false" continueOnError="false" enabled="true" name="Quota-1" type="window">
        <DisplayName>Quota-1</DisplayName>
        <Properties/>
        <Allow count="3"/>
        <Interval>1</Interval>
        <TimeUnit>minute</TimeUnit>
        <StartTime>2017-7-16 12:00:00</StartTime>
        <MessageWeight ref="messageWeight"/>
    </Quota>
    

    מאפיין הסוג מוגדר כ-window ואין בו תמיכה, ולכן הפריסה של שרת ה-proxy של ה-API נכשלת ומוצגת השגיאה:

    No enum constant com.apigee.quota.types.QuotaType.window.
    

רזולוציה

חשוב לוודא שסוג המכסה שמצוין במאפיין type ברכיב <Quota> של מדיניות המכסה נתמך. לדוגמה:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Quota async="false" continueOnError="false" enabled="true" name="Quota-1" type="rollingwindow">
    <DisplayName>Quota-1</DisplayName>
    <Properties/>
    <Allow count="3"/>
    <Interval>1</Interval>
    <TimeUnit>minute</TimeUnit>
    <StartTime>2017-7-16 12:00:00</StartTime>
    <MessageWeight ref="messageWeight"/>
</Quota>

InvalidStartTime

הודעת השגיאה

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

Error Saving Revision [revision_number]
Invalid Starttime:[start_time]; Start Time should be of the format yyyy-MM-dd HH:mm:ss.

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

Error Saving Revision 1
Invalid Starttime:7-16-2017 12:00:00; Start Time should be of the format yyyy-MM-dd HH:mm:ss.

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

סיבה

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

הפורמט החוקי הוא yyyy-MM-dd HH:mm:ss, שהוא פורמט התאריך והשעה לפי ISO 8601.

לדוגמה, אם הזמן שמצוין ברכיב <StartTime> במדיניות המכסה הוא 7-16-2017 12:00:00, הפריסה של שרת ה-proxy של ה-API נכשלה.

אבחון

  1. מזהים את זמן ההתחלה הלא חוקי שמצוין במדיניות המכסה. המידע הזה מופיע בהודעת השגיאה. לדוגמה, בשגיאה הבאה, זמן ההתחלה הלא חוקי הוא 7-16-2017 12:00:00

    Invalid Starttime:7-16-2017 12:00:00; Start Time should be of the format yyyy-MM-dd HH:mm:ss.
    
  2. יש לבדוק את כל כללי מדיניות המכסה בשרת ה-proxy הספציפי של ה-API שבו אירעה הכשל. אם יש מדיניות מכסה שבה הערך שצוין ברכיב <StartTime> תואם לזמן ההתחלה הלא חוקי שזוהה בשלב 1 למעלה, זו הסיבה לשגיאה.

    לדוגמה, המדיניות הבאה מציינת את הסוג כ-7-16-2017 12:00:00, שתואם לתוכן הודעת השגיאה:

    <?xml version="1.0" encoding="UTF-8"?>
    <Quota async="false" continueOnError="false" enabled="true" name="Quota-1" type="calendar">
       <DisplayName>Quota-1</DisplayName>
       <Properties />
       <Allow count="3" />
       <Interval>1</Interval>
       <TimeUnit>minute</TimeUnit>
       <StartTime>7-16-2017 12:00:00</StartTime>
    </Quota>
    

    מכיוון שהערך שהוגדר עבור <StartTime> הוא 7-16-2017 12:00:00, שאינו תואם לפורמט התאריך/השעה הנדרש, הפריסה של שרת ה-proxy ל-API נכשלת ומוצגת השגיאה:

    Invalid Starttime:7-16-2017 12:00:00; Start Time should be of the format yyyy-MM-dd HH:mm:ss.
    

רזולוציה

צריך לוודא שהפורמט של שעת ההתחלה שמצוין ברכיב <StartTime> של מדיניות המכסה תקין בהתאם לפורמט הנדרש yyyy-MM-dd HH:mm:ss. לדוגמה:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Quota async="false" continueOnError="false" enabled="true" name="Quota-1" type="calendar">
    <DisplayName>Quota-1</DisplayName>
    <Properties/>
    <Allow count="3"/>
    <Interval>1</Interval>
    <TimeUnit>minute</TimeUnit>
    <StartTime>2017-7-16 12:00:00</StartTime>
</Quota>

StartTimeNotSupported

הודעת השגיאה

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

Error Saving Revision [revision_number]
Starttime is not supported for quotatype [quota_type]. Starttime is supported only for calendar based type.

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

Error Saving Revision 1
Starttime is not supported for quotatype flexi. Starttime is supported only for calendar based type.

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

סיבה

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

הרכיב <StartTime> נתמך רק עבור סוג המכסה calendar.

לדוגמה, אם המאפיין type מוגדר ל-flexi או ל-rolling window ברכיב <Quota> של מדיניות המכסה, הפריסה של שרת ה-proxy של ה-API תיכשל.

אבחון

  1. זיהוי סוג המכסה שמצוין במדיניות המכסה שנכשלה. המידע הזה מופיע בהודעת השגיאה. לדוגמה, בשגיאה הבאה, זמן ההתחלה הלא חוקי הוא flexi

    Starttime is not supported for quotatype flexi. Starttime is
    supported only for calendar based type.
    
  2. יש לבדוק את כל כללי מדיניות המכסה בשרת ה-proxy הספציפי של ה-API שבו אירעה הכשל. אם יש מדיניות מכסה שבה מאפיין הסוג שצוין תואם לסוג המכסה שזוהה בשלב 1 למעלה וצויין הרכיב <StartTime>, זו הסיבה לשגיאה.

    לדוגמה, במדיניות הבאה מצוין סוג המכסה כ-flexi, שתואם למה שמופיע בהודעת השגיאה וגם את הרכיב <StartTime>:

    <?xml version="1.0" encoding="UTF-8" standalone="yes"?>
    <Quota async="false" continueOnError="false" enabled="true" name="Quota-1" type="flexi">
        <DisplayName>Quota-1</DisplayName>
        <Properties/>
        <Allow count="3"/>
        <Interval>1</Interval>
        <TimeUnit>minute</TimeUnit>
        <StartTime>2017-7-16 12:00:00</StartTime>
    </Quota>
    

    מכיוון שהרכיב <StartTime> צוין במדיניות המכסה, שסוג המכסה שלו צוין כ-flexi, הפריסה של שרת ה-proxy ל-API נכשלת ומוצגת השגיאה:

    Starttime is not supported for quotatype flexi. Starttime is supported only for calendar based type.
    

רזולוציה

צריך לוודא שהרכיב <StartTime> לא מצוין כשסוג המכסה שמצוין במאפיין type ברכיב <Quota> הוא flexi או rolling window. לדוגמה:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Quota async="false" continueOnError="false" enabled="true" name="Quota-1" type="flexi">
    <DisplayName>Quota-1</DisplayName>
    <Properties/>
    <Allow count="3"/>
    <Interval>1</Interval>
    <TimeUnit>minute</TimeUnit>
</Quota>

InvalidTimeUnitForDistributedQuota

הודעת השגיאה

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

Error Saving Revision [revision number]
Invalid timeunit second for distributed quota.

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

Error Saving Revision 1
Invalid timeunit second for distributed quota.

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

סיבה

אם הרכיב <Distributed> מוגדר ל-true והרכיב <TimeUnit> מוגדר לערך second, הפריסה של שרת ה-proxy של ה-API נכשלת. יחידת הזמן second לא חוקית למכסה מבוזרת.

כשהרכיב Distributed מוגדר לערך true, המדיניות צריכה לנהל מונה מרכזי ולסנכרן אותו באופן רציף בין כל מעבדי ההודעות. לכן, קשה לבצע סנכרון וכן לאמת שמספר הבקשות לא חרג מהמכסה שצוינה בפרק זמן קצר, כמו שניות. לכן, יחידת הזמן second נחשבת לא חוקית למכסה המבוזרת.

אבחון

יש לבדוק את כל כללי מדיניות המכסה בשרת ה-proxy הספציפי של ה-API שבו אירעה הכשל. אם יש מדיניות מכסה עם רכיב <TimeUnit> שמוגדר לרכיב second והרכיב <Distributed> מוגדר לערך true, זו הסיבה לשגיאה.

לדוגמה, במדיניות שלמטה יש רכיב <TimeUnit> שמוגדר ל-second והרכיב <Distributed> מוגדר ל-true.

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Quota async="false" continueOnError="false" enabled="true" name="CheckQuota" type="calendar">
    <DisplayName>CheckQuota</DisplayName>
    <Properties/>
    <Allow count="30"/>
    <Interval>1</Interval>
    <TimeUnit>second</TimeUnit>
    <StartTime>2018-8-05 12:00:00</StartTime>
    <Distributed>true</Distributed>
    <Synchronous>false</Synchronous>
</Quota>

רזולוציה

יש לוודא שהרכיב <TimeUnit> אף פעם לא מוגדר ל-second כשהרכיב <Distributed> מוגדר כ-True. ניתן להגדיר את הרכיב <TimeUnit> לכל אחד מהערכים המותרים האחרים - minute, hour, day, week,אוmonth. לדוגמה:

<Quota async="false" continueOnError="false" enabled="true" name="CheckQuota" type="calendar">
    <DisplayName>CheckQuota</DisplayName>
    <Properties/>
    <Allow count="30"/>
    <Interval>1</Interval>
    <TimeUnit>hour</TimeUnit>
    <StartTime>2018-8-05 12:00:00</StartTime>
    <Distributed>true</Distributed>
    <Synchronous>false</Synchronous>
</Quota>

InvalidSynchronizeIntervalForAsyncConfiguration

הודעת השגיאה

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

Error Saving Revision [revision number]
SyncIntervalInSeconds should be a value greater than zero.

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

Error Saving Revision 1
SyncIntervalInSeconds should be a value greater than zero.

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

סיבה

אם הערך שצוין לרכיב <SyncIntervalInSeconds> בתוך הרכיב <AsynchronousConfiguration> במדיניות מכסה קטן מאפס, הפריסה של שרת ה-proxy של ה-API תיכשל.

אבחון

יש לבדוק את כל כללי מדיניות המכסה בשרת ה-proxy הספציפי של ה-API שבו אירעה הכשל. אם יש מדיניות מכסה שבה הרכיב <SyncIntervalInSeconds> מוגדר לערך שקטן מאפס, בתוך רכיב <AsynchronousConfiguration>, זו הסיבה לשגיאה.

לדוגמה, במדיניות הבאה צוין ערך שלילי עבור הרכיב <SyncIntervalInSeconds>:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Quota async="false" continueOnError="false" enabled="true" name="Quota_AsyncConfig" type="calendar">
    <DisplayName>Quota_AsyncConfig</DisplayName>
    <Properties/>
    <Allow count="3"/>
    <Interval>1</Interval>
    <TimeUnit>minute</TimeUnit>
    <StartTime>2017-7-16 12:00:00</StartTime>
    <Distributed>true</Distributed>
    <Synchronous>false</Synchronous>
    <AsynchronousConfiguration>
        <SyncIntervalInSeconds>-1</SyncIntervalInSeconds>
    </AsynchronousConfiguration>
</Quota>

רזולוציה

חשוב לציין תמיד מספר שלם חיובי לרכיב <SyncIntervalInSeconds> בתוך הרכיב <AsynchronousConfiguration> במדיניות המכסה. לדוגמה:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Quota async="false" continueOnError="false" enabled="true" name="Quota_AsyncConfig" type="calendar">
    <DisplayName>Quota_AsyncConfig</DisplayName>
    <Properties/>
    <Allow count="3"/>
    <Interval>1</Interval>
    <TimeUnit>minute</TimeUnit>
    <StartTime>2017-7-16 12:00:00</StartTime>
    <Distributed>true</Distributed>
    <Synchronous>false</Synchronous>
    <AsynchronousConfiguration>
        <SyncIntervalInSeconds>5</SyncIntervalInSeconds>
    </AsynchronousConfiguration>
</Quota>

InvalidAsynchronizeConfigurationForSynchronousQuota

הודעת השגיאה

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

Error Saving Revision [revision number]
AsynchronousConfiguration is not valid for synchronous quota.

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

Error Saving Revision 2
AsynchronousConfiguration is not valid for synchronous quota.

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

סיבה

אם הערך של הרכיב <Synchronous> מוגדר ל-true במדיניות מכסה, שגם בה מוגדרת תצורה אסינכרונית באמצעות הרכיב <AsynchronousConfiguration>, הפריסה של שרת ה-proxy של ה-API תיכשל.

אבחון

יש לבדוק את כל כללי מדיניות המכסה בשרת ה-proxy הספציפי של ה-API שבו אירעה הכשל. אם יש מדיניות מכסה שבה הרכיב <Synchronous> מוגדר לערך true ואם יש בו גם רכיב <AsynchronousConfiguration>, זו הסיבה לשגיאה.

לדוגמה, במדיניות שלמטה יש רכיב <Synchronous> שמוגדר ל-true וגם מוגדר בו רכיב <AsynchronousConfiguration>:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Quota async="false" continueOnError="false" enabled="true" name="Quota_AsyncConfig" type="calendar">
    <DisplayName>Quota_AsyncConfig</DisplayName>
    <Properties/>
    <Allow count="3"/>
    <Interval>1</Interval>
    <TimeUnit>minute</TimeUnit>
    <StartTime>2017-7-16 12:00:00</StartTime>
    <Distributed>true</Distributed>
    <Synchronous>true</Synchronous>
    <AsynchronousConfiguration>
     <SyncIntervalInSeconds>1</SyncIntervalInSeconds>
    </AsynchronousConfiguration>
</Quota>

רזולוציה

יש לוודא שלא מוגדרת תצורה אסינכרונית באמצעות רכיב <AsynchronousConfiguration> אם רכיב <Synchronous> מוגדר כ-true במדיניות המכסה.

אפשר לתקן את הדוגמה שלמעלה על ידי הסרת הקטע <AsynchronousConfiguration> כפי שמוצג למטה:

<?xml version="1.0" encoding="UTF-8" standalone="yes"?>
<Quota async="false" continueOnError="false" enabled="true" name="Quota_AsyncConfig" type="calendar">
    <DisplayName>Quota_AsyncConfig</DisplayName>
    <Properties/>
    <Allow count="3"/>
    <Interval>1</Interval>
    <TimeUnit>minute</TimeUnit>
    <StartTime>2017-7-16 12:00:00</StartTime>
    <Distributed>true</Distributed>
 <Synchronous>true</Synchronous>
</Quota>