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

הדף הזה רלוונטי ל-Apigee ול-Apigee Hybrid.

לעיון במסמכי התיעוד של Apigee Edge

InvalidQuotaInterval

הודעת השגיאה

פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:

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.

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

שגיאה בשמירת הגרסה 1.

מטרה

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

לדוגמה, אם הערך של <Interval> רכיב במדיניות מכסה הוא 0.1, פריסת ה-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

הודעת השגיאה

פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:

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.

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

שגיאה בשמירת הגרסה 1.

מטרה

אם יחידת הזמן שצוינה ברכיב <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

הודעת השגיאה

פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:

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.

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

שגיאה בשמירת הגרסה 1.

מטרה

אם הערך של type (סוג) של המכסה שצוין במאפיין type ברכיב <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. בודקים את כל מדיניות הקצאת המכסות בשרת ה-API Proxy הספציפי שבו התרחשה השגיאה. אם יש מדיניות קצאת מכסות שבה סוג המכסה שצוין ברכיב <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>
    

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

    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

הודעת השגיאה

פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:

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.

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

שגיאה בשמירת הגרסה 1.

מטרה

אם הפורמט של הזמן שצוין ברכיב <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, שלא תואם לפורמט הנדרש של תאריך ושעה, הפריסה של ה-API Proxy נכשלת עם השגיאה:

    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

הודעת השגיאה

פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:

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.

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

שגיאה בשמירת הגרסה 1.

מטרה

אם רכיב <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. בודקים את כל מדיניות הקצאת המכסות בשרת ה-API Proxy הספציפי שבו התרחשה השגיאה. אם יש מדיניות קצאת מכסות שבה מאפיין הסוג שצוין תואם לסוג המכסה שזוהה בשלב 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

הודעת השגיאה

פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:

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

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

Error Saving Revision 1
Invalid timeunit second for distributed quota.

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

שגיאה בשמירת הגרסה 1.

מטרה

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

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

אבחון

בודקים את כל מדיניות המכסות ב-API Proxy הספציפי שבו התרחשה הכשל. אם יש מדיניות מכסות עם רכיב <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

הודעת השגיאה

פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:

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.

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

שגיאה בשמירת הגרסה 1.

מטרה

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

אבחון

בודקים את כל מדיניות הקצאת המכסות בשרת ה-API Proxy הספציפי שבו התרחשה הכשל. אם יש מדיניות הקצאת מכסות שבה רכיב <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

הודעת השגיאה

פריסת ה-proxy ל-API דרך ממשק המשתמש או ה-API של Apigee נכשלת ומוצגת הודעת השגיאה הבאה:

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

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

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

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

שגיאה בשמירת הגרסה 2.

מטרה

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

אבחון

בודקים את כל מדיניות המכסות ב-API Proxy הספציפי שבו התרחש הכשל. אם יש מדיניות מכסה שבה הרכיב <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>

רזולוציה

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

כדי לתקן את הדוגמה שלמעלה, צריך להסיר את הקטע <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>