Quota policy deployment error troubleshooting

InvalidQuotaInterval

Error message

Deployment of the API proxy through either the Edge UI or Edge management API fails with this error message:

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

Example error message

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

Example screenshot

Cause

If the quota interval specified in the <Interval> element of the Quota Policy is not an integer, then the deployment of the API proxy fails.

For example, if the quota interval specified is 0.1 in the <Interval> element of a Quota Policy, then the deployment of the API proxy fails.

Diagnosis

  1. Identify the Quota policy where the error occurred and the invalid quota interval. You can find this information from the error message. For example, in the following error, the policy name is Quota-1 and the invalid quota interval is 0.1:

    Error Saving Revision 1
    Invalid quota interval 0.1 in quota policy Quota-1.
    
  2. Verify that the value of the quota interval specified in the failed Quota policy matches with the value identified in the error message (step #1 above). For example, the following policy specifies the value of the quota interval as 0.1, which matches what's in the error message:

    <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. If the quota interval specified is not an integer, then that's the cause of the error.

    In the example Quota Policy shown above, the value of the quota interval is 0.1, which is not an integer. Therefore, the deployment of the API Proxy fails with the error:

    Invalid quota interval 0.1 in quota policy Quota-1.
    

Resolution

Ensure that the value of the quota interval specified in the <Interval> element of the Quota Policy is an integer. For example:

<?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

Error message

Deployment of the API proxy through either the Edge UI or Edge management API fails with this error message:

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].

Example error message

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.

Example screenshot

Cause

If the time unit specified in the <TimeUnit> element of the Quota policy is unsupported, then the deployment of the API proxy fails.

The supported time units are minute, hour, day, week, and month.

For example, if the unit of time is specified as year in the <TimeUnit> element of the Quota Policy, then the deployment of the API proxy fails.

Diagnosis

  1. Identify the Quota policy where the error occurred and the invalid time unit. You can find this information from the error message. For example, in the following error, the policy name is Quota-1 and invalid time unit is year:

    Invalid quota interval time unit year in quota policy Quota-1
    in Revision 1 of application Quota_test, in organization aprabhashankar-eval.
    
  2. Verify that the time unit specified in <TimeUnit> element of the Quota policy matches with the time unit identified in the error message (step #1 above). For example, the following policy specifies the value of the quota interval as year, which matches what's in the error message:

    <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. If the time unit specified in the Quota Policy is not supported, then that's the cause of the error.

    In the example Quota policy shown above, the time unit is specified as year which is unsupported. Therefore, the deployment of the API Proxy fails with the error:

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

Resolution

Ensure that the time unit specified in the <TimeUnit> element of the Quota policy is supported. For example:

<?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

Error message

Deployment of the API proxy through either the Edge UI or Edge management API fails with this error message:

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

Example error message

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

Example screenshot

Cause

If the type of the quota specified by the type attribute in the <Quota> element of the Quota policy is invalid, then the deployment of the API proxy fails.

The supported quota types are default, calendar, flexi, and rollingwindow.

For example, if the type of the policy specified as window in the <Quota> element of the Quota policy then the deployment of the API proxy fails.

Diagnosis

  1. Identify the invalid quota type used in the Quota policy. You can find this information from the error message. For example, in the following error, the invalid policy type is window:

    Error Saving Revision 1
    No enum constant com.apigee.quota.types.QuotaType.window.
    
  2. Examine all the Quota policies in the specific API Proxy where the failure has occurred. If there is any Quota policy in which the quota type specified in the <Quota> element matches the unsupported type identified in Step #1 above, then that's the cause of the error.

    For example, the following policy specifies the type as window, which matches what's in the error message:

    <?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>
    

    Since the type attribute is set as window, which is unsupported, the deployment of the API Proxy fails with the error:

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

Resolution

Ensure that the quota type specified by the type attribute in the <Quota> element of the Quota policy is supported. For example:

<?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

Error message

Deployment of the API proxy through either the Edge UI or Edge management API fails with this error message:

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

Example error message

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.

Example screenshot

Cause

If the format of the time specified in the <StartTime> element of the Quota policy is invalid, then the deployment of the API proxy fails.

The valid format is yyyy-MM-dd HH:mm:ss, which is the ISO 8601 date and time format.

For example, if the time specified in the <StartTime> element of the Quota policy is 7-16-2017 12:00:00 then the deployment of the API proxy fails.

Diagnosis

  1. Identify the invalid start time specified in the Quota policy. You can find this information from the error message. For example, in the following error, the invalid start time is 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. Examine all the Quota policies in the specific API Proxy where the failure has occurred. If there is any Quota policy in which the value specified in the <StartTime> element matches the invalid start time identified in Step #1 above, then that's the cause of the error.

    For example, the following policy specifies the type as 7-16-2017 12:00:00, which matches what's in the error message:

    <?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>
    

    Since the value set for <StartTime> is set as 7-16-2017 12:00:00, which is not according to the required date/time format, the deployment of the API Proxy fails with the error:

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

Resolution

Ensure that the format of the start time specified in the <StartTime> element of the Quota policy is valid according to the required format yyyy-MM-dd HH:mm:ss. For example:

<?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

Error message

Deployment of the API proxy through either the Edge UI or Edge management API fails with this error message:

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

Example error message

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

Example screenshot

Cause

If the <StartTime> element is specified in a Quota policy whose quota type is not calendar type, then the deployment of the API proxy fails.

The <StartTime> element is supported only for the calendar quota type.

For example, if the type attribute is set to flexi or rolling window in the <Quota> element of the Quota policy, then the deployment of the API proxy fails.

Diagnosis

  1. Identify the quota type specified in the failing Quota policy. You can find this information from the error message. For example, in the following error, the invalid start time is flexi

    Starttime is not supported for quotatype flexi. Starttime is
    supported only for calendar based type.
    
  2. Examine all the Quota policies in the specific API Proxy where the failure has occurred. If there is any Quota policy in which the type attribute specified matches the quota type identified in Step #1 above and <StartTime> element is specified, then that's the cause of the error.

    For example, the following policy specifies the quota type as flexi, which matches what's in the error message and also specifies <StartTime> element:

    <?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>
    

    Since the <StartTime> element is specified in the Quota Policy whose quota type is specified as flexi, the deployment of the API Proxy fails with the error:

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

Resolution

Ensure that the <StartTime> element is not specified when the quota type indicated by the type attribute in the <Quota> element is flexi or rolling window. For example:

<?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

Error message

Deployment of the API proxy through either the Edge UI or Edge management API fails with this error message:

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

Example error message

Error Saving Revision 1
Invalid timeunit second for distributed quota.

Example screenshot

Cause

If the <Distributed> element is set to true and the <TimeUnit> element is set to second then the deployment of the API proxy fails. The timeunit second is invalid for a distributed quota.

When the Distributed element is set to true, then the policy should maintain a central counter and continuously synchronize it across all Message Processors. Therefore, it would be difficult to synchronize and also verify that the number of requests did not exceed the specified quota in a short interval of time such as seconds. For this reason, the timeunit second is considered invalid for distributed quota.

Diagnosis

Examine all the Quota policies in the specific API Proxy where the failure has occurred. If there is any Quota policy with a <TimeUnit> element set to second and the <Distributed> element is set to true, then that's the cause of the error.

For example, the below policy has a <TimeUnit> element set to second and the <Distributed> element is set to 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>

Resolution

Ensure that the <TimeUnit> element is never set to second when the <Distributed> element is set to true. The <TimeUnit> element can be set to any of the other allowed values - minute, hour, day, week,ormonth. For example:

<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

Error message

Deployment of the API proxy through either the Edge UI or Edge management API fails with this error message:

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

Example error message

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

Example screenshot

Cause

If the value specified for the <SyncIntervalInSeconds> element within the <AsynchronousConfiguration> element in a Quota policy is less than zero, then the deployment of the API proxy fails.

Diagnosis

Examine all the Quota policies in the specific API Proxy where the failure has occurred. If there is any Quota policy in which the <SyncIntervalInSeconds> element is set to a value less than zero, within the <AsynchronousConfiguration> element, then that's the cause of the error.

For example, the below policy has a negative value specified for the <SyncIntervalInSeconds> element:

<?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>

Resolution

Ensure that you always specify a positive integer for the <SyncIntervalInSeconds> element within the <AsynchronousConfiguration> element in a Quota policy. For example:

<?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

Error message

Deployment of the API proxy through either the Edge UI or Edge management API fails with this error message:

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

Example error message

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

Example screenshot

Cause

If the value of the <Synchronous> element is set to true in a Quota policy, which also has asynchronous configuration defined using the <AsynchronousConfiguration> element, then the deployment of the API proxy fails.

Diagnosis

Examine all the Quota policies in the specific API Proxy where the failure has occurred. If there is any Quota policy where the <Synchronous> element is set to true and if it also has an <AsynchronousConfiguration> element defined, then that is the cause of the error.

For example, the below policy has a <Synchronous> element that is set to true and also has an <AsynchronousConfiguration> element defined:

<?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>

Resolution

Ensure that there is no asynchronous configuration defined using the <AsynchronousConfiguration> element if the <Synchronous> element is set to true in a Quota policy.

The above example can be corrected by removing the <AsynchronousConfiguration> section as shown below:

<?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>