Resolução de problemas de erros de implementação da política de quotas

Está a ver a documentação do Apigee e do Apigee Hybrid.
Ver documentação do Apigee Edge.

InvalidQuotaInterval

Mensagem de erro

A implementação do proxy de API através da IU ou da API Apigee falha com esta mensagem de erro:

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

Mensagem de erro de exemplo

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

Captura de ecrã de exemplo

Ocorreu um erro ao guardar a revisão 1.

Causa

Se o intervalo de quota especificado no elemento <Interval> da política de quotas não for um número inteiro, a implementação do proxy de API falha.

Por exemplo, se o intervalo de quota especificado for 0,1 no elemento <Interval> de uma política de quotas, a implementação do proxy de API falha.

Diagnóstico

  1. Identifique a política de quotas onde ocorreu o erro e o intervalo de quotas inválido. Pode encontrar estas informações na mensagem de erro. Por exemplo, no seguinte erro, o nome da política é Quota-1 e o intervalo de quota inválido é 0.1:

    Error Saving Revision 1
    Invalid quota interval 0.1 in quota policy Quota-1.
    
  2. Verifique se o valor do intervalo de quota especificado na política de quota com falha corresponde ao valor identificado na mensagem de erro (passo n.º 1 acima). Por exemplo, a seguinte política especifica o valor do intervalo da quota como 0.1, que corresponde ao que está na mensagem de erro:

    <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. Se o intervalo de quota especificado não for um número inteiro, essa é a causa do erro.

    No exemplo da política de quotas apresentado acima, o valor do intervalo de quotas é 0,1, que não é um número inteiro. Por conseguinte, a implementação do proxy de API falha com o erro:

    Invalid quota interval 0.1 in quota policy Quota-1.
    

Resolução

Certifique-se de que o valor do intervalo de quota especificado no elemento <Interval> da política de quotas é um número inteiro. Por exemplo:

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

Mensagem de erro

A implementação do proxy de API através da IU ou da API Apigee falha com esta mensagem de erro:

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

Mensagem de erro de exemplo

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 ecrã de exemplo

Ocorreu um erro ao guardar a revisão 1.

Causa

Se a unidade de tempo especificada no elemento <TimeUnit> da política de quota não for suportada, a implementação do proxy de API falha.

As unidades de tempo suportadas são minute, hour, day, week e month.

Por exemplo, se a unidade de tempo for especificada como year no elemento <TimeUnit> da política de quotas, a implementação do proxy de API falha.

Diagnóstico

  1. Identifique a política de quotas onde ocorreu o erro e a unidade de tempo inválida. Pode encontrar estas informações na mensagem de erro. Por exemplo, no seguinte erro, o nome da política é Quota-1 e a unidade de tempo inválida é year:

    Invalid quota interval time unit year in quota policy Quota-1
    in Revision 1 of application Quota_test, in organization aprabhashankar-eval.
    
  2. Verifique se a unidade de tempo especificada no elemento <TimeUnit> da política de quotas corresponde à unidade de tempo identificada na mensagem de erro (passo n.º 1 acima). Por exemplo, a seguinte política especifica o valor do intervalo da quota como year, que corresponde ao que está na mensagem de erro:

    <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. Se a unidade de tempo especificada na política de quotas não for suportada, essa é a causa do erro.

    No exemplo de política de quota apresentado acima, a unidade de tempo é especificada como year, que não é suportada. Por conseguinte, a implementação do proxy de API falha com o erro:

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

Resolução

Certifique-se de que a unidade de tempo especificada no elemento <TimeUnit> da política de quotas é suportada. Por exemplo:

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

Mensagem de erro

A implementação do proxy de API através da IU ou da API Apigee falha com esta mensagem de erro:

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

Mensagem de erro de exemplo

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

Captura de ecrã de exemplo

Ocorreu um erro ao guardar a revisão 1.

Causa

Se o tipo da quota especificada pelo atributo type no elemento <Quota> do elemento Quota policy for inválido, a implementação do proxy de API falha.

Os tipos de quotas suportados são default, calendar, flexi e rollingwindow.

Por exemplo, se o tipo da política especificado como window no elemento <Quota> da política de quotas, a implementação do proxy de API falha.

Diagnóstico

  1. Identifique o tipo de quota inválido usado na política de quotas. Pode encontrar estas informações na mensagem de erro. Por exemplo, no seguinte erro, o tipo de política inválido é window:

    Error Saving Revision 1
    No enum constant com.apigee.quota.types.QuotaType.window.
    
  2. Examine todas as políticas de quotas no proxy de API específico onde ocorreu a falha. Se existir alguma política de quotas em que o tipo de quota especificado no elemento <Quota> corresponda ao tipo não suportado identificado no passo n.º 1 acima, essa é a causa do erro.

    Por exemplo, a política seguinte especifica o tipo como window, que corresponde ao que está na mensagem de erro:

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

    Uma vez que o atributo type está definido como window, que não é suportado, a implementação do proxy de API falha com o erro:

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

Resolução

Certifique-se de que o tipo de quota especificado pelo atributo type no elemento <Quota> da política de quotas é suportado. Por exemplo:

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

Mensagem de erro

A implementação do proxy de API através da IU ou da API Apigee falha com esta mensagem de erro:

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

Mensagem de erro de exemplo

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 ecrã de exemplo

Ocorreu um erro ao guardar a revisão 1.

Causa

Se o formato da hora especificada no elemento <StartTime> da política de quotas for inválido, a implementação do proxy de API falha.

O formato válido é yyyy-MM-dd HH:mm:ss, que é o formato de data e hora ISO 8601.

Por exemplo, se a hora especificada no elemento <StartTime> da política de quota for 7-16-2017 12:00:00, a implementação do proxy de API falha.

Diagnóstico

  1. Identifique a hora de início inválida especificada na política de quotas. Pode encontrar estas informações na mensagem de erro. Por exemplo, no seguinte erro, a hora de início inválida é 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 todas as políticas de quotas no proxy de API específico onde ocorreu a falha. Se existir alguma política de quotas em que o valor especificado no elemento <StartTime> corresponda à hora de início inválida identificada no passo n.º 1 acima, essa é a causa do erro.

    Por exemplo, a política seguinte especifica o tipo como 7-16-2017 12:00:00, que corresponde ao que está na mensagem de erro:

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

    Uma vez que o valor definido para <StartTime> está definido como 7-16-2017 12:00:00, que não está de acordo com o formato de data/hora necessário, a implementação do proxy de API falha com o erro:

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

Resolução

Certifique-se de que o formato da hora de início especificado no elemento <StartTime> da política de quotas é válido de acordo com o formato necessário yyyy-MM-dd HH:mm:ss. Por exemplo:

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

Mensagem de erro

A implementação do proxy de API através da IU ou da API Apigee falha com esta mensagem de erro:

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

Mensagem de erro de exemplo

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

Captura de ecrã de exemplo

Ocorreu um erro ao guardar a revisão 1.

Causa

Se o elemento <StartTime> for especificado numa política de quota cujo tipo de quota não seja do tipo de calendário, a implementação do proxy de API falha.

O elemento <StartTime> só é suportado para o tipo de quota calendar.

Por exemplo, se o atributo type estiver definido como flexi ou rolling window no elemento <Quota> da política de quotas, a implementação do proxy de API falha.

Diagnóstico

  1. Identifique o tipo de quota especificado na política de quotas com falhas. Pode encontrar estas informações na mensagem de erro. Por exemplo, no seguinte erro, a hora de início inválida é flexi

    Starttime is not supported for quotatype flexi. Starttime is
    supported only for calendar based type.
    
  2. Examine todas as políticas de quotas no proxy de API específico onde ocorreu a falha. Se existir alguma política de quotas em que o atributo de tipo especificado corresponda ao tipo de quota identificado no passo n.º 1 acima e o elemento <StartTime> for especificado, essa é a causa do erro.

    Por exemplo, a política seguinte especifica o tipo de quota como flexi, que corresponde ao que está na mensagem de erro, e também especifica o 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>
    

    Uma vez que o elemento <StartTime> é especificado na política de quotas cujo tipo de quota é especificado como flexi, a implementação do proxy de API falha com o erro:

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

Resolução

Certifique-se de que o elemento <StartTime> não é especificado quando o tipo de quota indicado pelo atributo type no elemento <Quota> é flexi ou rolling window. Por exemplo:

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

Mensagem de erro

A implementação do proxy de API através da IU ou da API Apigee falha com esta mensagem de erro:

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

Mensagem de erro de exemplo

Error Saving Revision 1
Invalid timeunit second for distributed quota.

Captura de ecrã de exemplo

Ocorreu um erro ao guardar a revisão 1.

Causa

Se o elemento <Distributed> estiver definido como true e o elemento <TimeUnit> estiver definido como second, a implementação do proxy de API falha. A unidade de tempo second é inválida para uma quota distribuída.

Quando o elemento Distributed está definido como true, a política deve manter um contador central e sincronizá-lo continuamente em todos os processadores de mensagens. Por conseguinte, seria difícil sincronizar e também verificar se o número de pedidos não excedeu a quota especificada num curto intervalo de tempo, como segundos. Por este motivo, a unidade de tempo second é considerada inválida para a quota distribuída.

Diagnóstico

Examine todas as políticas de quotas no proxy de API específico onde ocorreu a falha. Se existir alguma política de quota com um elemento <TimeUnit> definido como second e o elemento <Distributed> estiver definido como true, essa é a causa do erro.

Por exemplo, a política abaixo tem um elemento <TimeUnit> definido como second e o elemento <Distributed> está definido como 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>

Resolução

Certifique-se de que o elemento <TimeUnit> nunca está definido como second quando o elemento <Distributed> está definido como verdadeiro. O elemento <TimeUnit> pode ser definido para qualquer um dos outros valores permitidos: minute, hour, day, week, ou month. Por exemplo:

<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

Mensagem de erro

A implementação do proxy de API através da IU ou da API Apigee falha com esta mensagem de erro:

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

Mensagem de erro de exemplo

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

Captura de ecrã de exemplo

Ocorreu um erro ao guardar a revisão 1.

Causa

Se o valor especificado para o elemento <SyncIntervalInSeconds> no elemento <AsynchronousConfiguration> numa política de quota for inferior a zero, a implementação do proxy de API falha.

Diagnóstico

Examine todas as políticas de quotas no proxy de API específico onde ocorreu a falha. Se existir alguma política de quotas em que o elemento <SyncIntervalInSeconds> esteja definido para um valor inferior a zero, no elemento <AsynchronousConfiguration>, essa é a causa do erro.

Por exemplo, a política abaixo tem um valor negativo especificado para o 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>

Resolução

Certifique-se de que especifica sempre um número inteiro positivo para o elemento <SyncIntervalInSeconds> no elemento <AsynchronousConfiguration> numa política de quotas. Por exemplo:

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

Mensagem de erro

A implementação do proxy de API através da IU ou da API Apigee falha com esta mensagem de erro:

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

Mensagem de erro de exemplo

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

Captura de ecrã de exemplo

Ocorreu um erro ao guardar a revisão 2.

Causa

Se o valor do elemento <Synchronous> estiver definido como true numa política de quotas, que também tem uma configuração assíncrona definida através do elemento <AsynchronousConfiguration>, a implementação do proxy de API falha.

Diagnóstico

Examine todas as políticas de quotas no proxy de API específico onde ocorreu a falha. Se existir alguma política de quotas em que o elemento <Synchronous> esteja definido como true e também tenha um elemento <AsynchronousConfiguration> definido, essa é a causa do erro.

Por exemplo, a política abaixo tem um elemento <Synchronous> definido como true e também tem um elemento <AsynchronousConfiguration> definido:

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

Resolução

Certifique-se de que não existe nenhuma configuração assíncrona definida através do elemento <AsynchronousConfiguration> se o elemento <Synchronous> estiver definido como true numa política de quotas.

O exemplo acima pode ser corrigido removendo a secção <AsynchronousConfiguration>, conforme mostrado abaixo:

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