Solucionar problemas de errores de implementación de políticas de cuota

Estás consultando la documentación de Apigee y Apigee Hybrid.
Consulta la documentación de Apigee Edge.

InvalidQuotaInterval

Mensaje de error

La implementación del proxy de API a través de la interfaz de usuario o la API de Apigee falla y se muestra este mensaje de error:

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

Ejemplo de mensaje de error

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

Captura de pantalla de ejemplo

No se ha podido guardar la revisión 1.

Causa

Si el intervalo de cuota especificado en el elemento <Interval> de la política de cuota no es un número entero, se producirá un error al implementar el proxy de API.

Por ejemplo, si el intervalo de cuota especificado es 0,1 en el elemento <Interval> de una política de cuota, la implementación del proxy de API fallará.

Diagnóstico

  1. Identifica la política de cuota en la que se ha producido el error y el intervalo de cuota no válido. Puedes encontrar esta información en el mensaje de error. Por ejemplo, en el siguiente error, el nombre de la política es Quota-1 y el intervalo de cuota no válido es 0.1:

    Error Saving Revision 1
    Invalid quota interval 0.1 in quota policy Quota-1.
    
  2. Verifica que el valor del intervalo de cuota especificado en la política de cuota fallida coincida con el valor identificado en el mensaje de error (paso 1 anterior). Por ejemplo, la siguiente política especifica el valor del intervalo de cuota como 0.1, que coincide con lo que se indica en el mensaje de error:

    <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. Si el intervalo de cuota especificado no es un número entero, esa es la causa del error.

    En el ejemplo de política de cuota que se muestra arriba, el valor del intervalo de cuota es 0,1, que no es un número entero. Por lo tanto, el despliegue del proxy de API falla y se muestra el siguiente error:

    Invalid quota interval 0.1 in quota policy Quota-1.
    

Resolución

Asegúrate de que el valor del intervalo de cuota especificado en el elemento <Interval> de la política de cuota sea un número entero. Por ejemplo:

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

Mensaje de error

La implementación del proxy de API a través de la interfaz de usuario o la API de Apigee falla y se muestra este mensaje de error:

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

Ejemplo de mensaje de error

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.

Captura de pantalla de ejemplo

No se ha podido guardar la revisión 1.

Causa

Si la unidad de tiempo especificada en el elemento <TimeUnit> de la política de cuota no es compatible, la implementación del proxy de API fallará.

Las unidades de tiempo admitidas son minute, hour, day, week y month.

Por ejemplo, si la unidad de tiempo se especifica como year en el elemento <TimeUnit> de la política de cuota, la implementación del proxy de API fallará.

Diagnóstico

  1. Identifica la política de cuota en la que se ha producido el error y la unidad de tiempo no válida. Puedes encontrar esta información en el mensaje de error. Por ejemplo, en el siguiente error, el nombre de la política es Quota-1 y la unidad de tiempo no válida es year:

    Invalid quota interval time unit year in quota policy Quota-1
    in Revision 1 of application Quota_test, in organization aprabhashankar-eval.
    
  2. Verifica que la unidad de tiempo especificada en el elemento <TimeUnit> de la política Quota coincida con la unidad de tiempo identificada en el mensaje de error (paso 1 anterior). Por ejemplo, la siguiente política especifica el valor del intervalo de cuota como year, que coincide con lo que se indica en el mensaje de error:

    <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. Si no se admite la unidad de tiempo especificada en la política de cuota, ese será el motivo del error.

    En el ejemplo de política de cuota que se muestra arriba, la unidad de tiempo es year que no se admite. Por lo tanto, el despliegue del proxy de API falla y se muestra el siguiente error:

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

Resolución

Comprueba que se admite la unidad de tiempo especificada en el elemento <TimeUnit> de la política de cuotas. Por ejemplo:

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

Mensaje de error

La implementación del proxy de API a través de la interfaz de usuario o la API de Apigee falla y se muestra este mensaje de error:

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

Ejemplo de mensaje de error

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

Captura de pantalla de ejemplo

No se ha podido guardar la revisión 1.

Causa

Si el tipo de la cuota especificada por el atributo type en el elemento <Quota> de la política Quota no es válido, se producirá un error al desplegar el proxy de API.

Los tipos de cuota admitidos son default, calendar, flexi y rollingwindow.

Por ejemplo, si el tipo de política especificado como window en el elemento <Quota> de la política de cuota, se produce un error al desplegar el proxy de API.

Diagnóstico

  1. Identifica el tipo de cuota no válido que se ha usado en la política de cuotas. Puedes encontrar esta información en el mensaje de error. Por ejemplo, en el siguiente error, el tipo de política no válido es window:

    Error Saving Revision 1
    No enum constant com.apigee.quota.types.QuotaType.window.
    
  2. Examina todas las políticas de cuota del proxy de API específico en el que se ha producido el error. Si hay alguna política de cuota en la que el tipo de cuota especificado en el elemento <Quota> coincida con el tipo no admitido identificado en el paso 1 anterior, esa será la causa del error.

    Por ejemplo, la siguiente política especifica el tipo window, que coincide con lo que aparece en el mensaje de error:

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

    Como el atributo type se ha definido como window, que no se admite, el despliegue del proxy de API falla y se muestra el siguiente error:

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

Resolución

Comprueba que se admite el tipo de cuota especificado por el atributo type en el elemento <Quota> de la política Quota. Por ejemplo:

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

Mensaje de error

La implementación del proxy de API a través de la interfaz de usuario o la API de Apigee falla y se muestra este mensaje de error:

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

Ejemplo de mensaje de error

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.

Captura de pantalla de ejemplo

No se ha podido guardar la revisión 1.

Causa

Si el formato de la hora especificada en el elemento <StartTime> de la política de cuota no es válido, la implementación del proxy de API fallará.

El formato válido es yyyy-MM-dd HH:mm:ss, que es el formato de fecha y hora ISO 8601.

Por ejemplo, si el tiempo especificado en el elemento <StartTime> de la política de cuotas es 7-16-2017 12:00:00, se producirá un error al implementar el proxy de API.

Diagnóstico

  1. Identifica la hora de inicio no válida especificada en la política de cuota. Puedes encontrar esta información en el mensaje de error. Por ejemplo, en el siguiente error, la hora de inicio no válida es 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. Examina todas las políticas de cuota del proxy de API específico en el que se ha producido el error. Si hay alguna política de cuota en la que el valor especificado en el elemento <StartTime> coincida con la hora de inicio no válida identificada en el paso 1 anterior, esa es la causa del error.

    Por ejemplo, la siguiente política especifica el tipo 7-16-2017 12:00:00, que coincide con lo que aparece en el mensaje de error:

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

    Como el valor asignado a <StartTime> es 7-16-2017 12:00:00, que no se ajusta al formato de fecha y hora requerido, el despliegue del proxy de API falla y se muestra el siguiente error:

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

Resolución

Asegúrate de que el formato de la hora de inicio especificado en el elemento <StartTime> de la política de cuota sea válido según el formato obligatorio yyyy-MM-dd HH:mm:ss. Por ejemplo:

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

Mensaje de error

La implementación del proxy de API a través de la interfaz de usuario o la API de Apigee falla y se muestra este mensaje de error:

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

Ejemplo de mensaje de error

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

Captura de pantalla de ejemplo

No se ha podido guardar la revisión 1.

Causa

Si el elemento <StartTime> se especifica en una política de cuota cuyo tipo de cuota no es de tipo calendario, el despliegue del proxy de API falla.

El elemento <StartTime> solo se admite en el tipo de cuota calendar.

Por ejemplo, si el atributo type se define como flexi o rolling window en el elemento <Quota> de la política de cuota, se producirá un error al implementar el proxy de API.

Diagnóstico

  1. Identifica el tipo de cuota especificado en la política de cuota que ha fallado. Puedes encontrar esta información en el mensaje de error. Por ejemplo, en el siguiente error, la hora de inicio no válida es flexi

    Starttime is not supported for quotatype flexi. Starttime is
    supported only for calendar based type.
    
  2. Examina todas las políticas de cuota del proxy de API específico en el que se ha producido el error. Si hay alguna política de cuota en la que el atributo de tipo especificado coincida con el tipo de cuota identificado en el paso 1 anterior y se especifique el elemento <StartTime>, esa será la causa del error.

    Por ejemplo, la siguiente política especifica el tipo de cuota como flexi, que coincide con lo que aparece en el mensaje de error, y también especifica el elemento <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>
    

    Como el elemento <StartTime> se especifica en la política de cuota cuyo tipo de cuota es flexi, el despliegue del proxy de API falla y se produce el siguiente error:

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

Resolución

Compruebe que el elemento <StartTime> no se especifica cuando el tipo de cuota indicado por el atributo type del elemento <Quota> es flexi o rolling window. Por ejemplo:

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

Mensaje de error

La implementación del proxy de API a través de la interfaz de usuario o la API de Apigee falla y se muestra este mensaje de error:

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

Ejemplo de mensaje de error

Error Saving Revision 1
Invalid timeunit second for distributed quota.

Captura de pantalla de ejemplo

No se ha podido guardar la revisión 1.

Causa

Si el elemento <Distributed> tiene el valor true y el elemento <TimeUnit> tiene el valor second, la implementación del proxy de API fallará. La unidad de tiempo second no es válida para una cuota distribuida.

Si el elemento Distributed se define como true, la política debe mantener un contador central y sincronizarlo continuamente en todos los procesadores de mensajes. Por lo tanto, sería difícil sincronizar y verificar que el número de solicitudes no supera la cuota especificada en un intervalo de tiempo corto, como segundos. Por este motivo, la unidad de tiempo second no se considera válida para la cuota distribuida.

Diagnóstico

Examina todas las políticas de cuota del proxy de API específico en el que se ha producido el error. Si hay alguna política de cuota con un elemento <TimeUnit> definido como second y el elemento <Distributed> definido como true, esa es la causa del error.

Por ejemplo, la política de abajo tiene el elemento <TimeUnit> con el valor second y el elemento <Distributed> con el valor 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>

Resolución

Asegúrate de que el elemento <TimeUnit> nunca tenga el valor second cuando el elemento <Distributed> tenga el valor true. El elemento <TimeUnit> puede tener cualquiera de los otros valores permitidos: minute, hour, day, week, o month. Por ejemplo:

<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

Mensaje de error

La implementación del proxy de API a través de la interfaz de usuario o la API de Apigee falla y se muestra este mensaje de error:

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

Ejemplo de mensaje de error

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

Captura de pantalla de ejemplo

No se ha podido guardar la revisión 1.

Causa

Si el valor especificado para el elemento <SyncIntervalInSeconds> dentro del elemento <AsynchronousConfiguration> de una política de cuota es inferior a cero, se produce un error al implementar el proxy de API.

Diagnóstico

Examina todas las políticas de cuota del proxy de API específico en el que se ha producido el error. Si hay alguna política de cuota en la que el elemento <SyncIntervalInSeconds> tenga un valor inferior a cero dentro del elemento <AsynchronousConfiguration>, ese será el motivo del error.

Por ejemplo, la siguiente política tiene un valor negativo especificado para el elemento <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>

Resolución

Asegúrate de especificar siempre un número entero positivo para el elemento <SyncIntervalInSeconds> dentro del elemento <AsynchronousConfiguration> en una política de cuotas. Por ejemplo:

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

Mensaje de error

La implementación del proxy de API a través de la interfaz de usuario o la API de Apigee falla y se muestra este mensaje de error:

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

Ejemplo de mensaje de error

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

Captura de pantalla de ejemplo

No se ha podido guardar la revisión 2.

Causa

Si el valor del elemento <Synchronous> se asigna a true en una política de cuotas que también tiene una configuración asíncrona definida mediante el elemento <AsynchronousConfiguration>, la implementación del proxy de API falla.

Diagnóstico

Examina todas las políticas de cuota del proxy de API específico en el que se ha producido el error. Si hay alguna política de cuota en la que el elemento <Synchronous> esté definido como true y también tenga definido un elemento <AsynchronousConfiguration>, ese será el motivo del error.

Por ejemplo, la política de abajo tiene un elemento <Synchronous> definido como true y también tiene un elemento <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>

Resolución

Asegúrate de que no haya ninguna configuración asíncrona definida con el elemento <AsynchronousConfiguration> si el elemento <Synchronous> tiene el valor true en una política de cuotas.

El ejemplo anterior se puede corregir eliminando la sección <AsynchronousConfiguration>, como se muestra a continuación:

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