Solução de problemas de erro na implantação da política de cotas

Esta é a documentação da Apigee e da Apigee híbrida.
Confira a documentação da Apigee Edge.

InvalidQuotaInterval

Mensagem de erro

A implantação do proxy de API por meio da IU da Apigee ou da API falha com esta mensagem de erro:

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

Exemplo de mensagem de erro

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

Captura de tela de exemplo

Erro ao salvar a revisão 1.

Causa

Se o intervalo de cota especificado no elemento <Interval> da política de cotas não for um número inteiro, a implantação do proxy de API falhará.

Por exemplo, se o intervalo de cota especificado for 0.1 no elemento <Interval> de uma política de cotas, a implantação do proxy da API falhará.

Diagnóstico

  1. Identifique a política de cotas em que o erro ocorreu e o intervalo de cota inválido. Você encontra essas informações a partir da mensagem de erro. Por exemplo, no seguinte erro, o nome da política é Quota-1 e o intervalo de cota 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 cota especificado na política de cota com falha corresponde ao valor identificado na mensagem de erro (etapa 1 acima). Por exemplo, a política a seguir especifica o valor do intervalo de cota 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 cota especificado não for um número inteiro, essa será a causa do erro.

    No exemplo da Política de cotas mostrada acima, o valor do intervalo de cota é 0,1, que não é um número inteiro. Portanto, a implantação do proxy de API falha com o erro:

    Invalid quota interval 0.1 in quota policy Quota-1.
    

Resolução

Verifique se o valor do intervalo de cota especificado no elemento <Interval> da Política de cotas é um número inteiro. 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 implantação do proxy de API por meio da IU da Apigee ou da API 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].

Exemplo de mensagem de erro

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 tela de exemplo

Erro ao salvar a revisão 1.

Causa

Se a unidade de tempo especificada no elemento <TimeUnit> da política de cotas não for compatível, a implantação do proxy da API falhará.

As unidades de tempo compatíveis 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 cotas, a implantação do proxy da API falhará.

Diagnóstico

  1. Identifique a política de cotas em que o erro ocorreu e a unidade de tempo inválida. Você encontra essas informações na mensagem de erro. Por exemplo, no erro a seguir, 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 cotas corresponde à unidade de tempo identificada na mensagem de erro (etapa 1 acima). Por exemplo, a seguinte política especifica o valor do intervalo de cotas 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 cota não for compatível, essa será a causa do erro.

    No exemplo de política de cotas mostrada acima, a unidade de tempo é especificada como year, que não é compatível. Portanto, a implantação do proxy de API falhará 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

Verifique se a unidade de tempo especificada no elemento <TimeUnit> da política de cotas é compatível. 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 implantação do proxy de API por meio da IU da Apigee ou da API falha com esta mensagem de erro:

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

Exemplo de mensagem de erro

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

Captura de tela de exemplo

Erro ao salvar a revisão 1.

Causa

Se o type da cota especificado pelo atributo type no elemento <Quota> da política de cota for inválido, a implantação do proxy de API falhará.

Os tipos de cota compatíveis são default, calendar, flexi e rollingwindow.

Por exemplo, se o tipo de política especificado como window no elemento <Quota> da política de cota, a implantação do proxy de API falhará.

Diagnóstico

  1. Identifique o tipo de cota inválido usado na política. Essas informações estão disponíveis na mensagem de erro. Por exemplo, no erro a seguir, 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 cota no proxy de API específico em que a falha ocorreu. Se houver alguma política de cota em que o tipo de cota especificado no elemento <Quota> corresponda ao tipo incompatível identificado na Etapa 1 acima, essa é a causa do erro.

    Por exemplo, esta política 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>
    

    Como o atributo de tipo é definido como window, que não é compatível, a implantação do proxy de API falha com o erro:

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

Resolução

Verifique se o tipo de cota especificado pelo atributo type no elemento <Quota> da política de cota é compatível. 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 implantação do proxy de API por meio da IU da Apigee ou da API 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.

Exemplo de mensagem de erro

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 tela de exemplo

Erro ao salvar a revisão 1.

Causa

Se o formato do tempo especificado no elemento <StartTime> da política de cota for inválido, a implantação do proxy de API falhará.

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

Por exemplo, se o horário especificado no elemento <StartTime> da política de cotas for 7-16-2017 12:00:00, a implantação do proxy da API falhará.

Diagnóstico

  1. Identifique o horário de início inválido especificado na política de cotas. Você encontra essas informações na mensagem de erro. Por exemplo, no erro a seguir, o horário de início inválido é 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 cota no proxy de API específico em que a falha ocorreu. Se houver uma política de cotas em que o valor especificado no elemento <StartTime> corresponda ao horário de início inválido identificado na Etapa 1 acima, essa será a causa do erro.

    Por exemplo, a seguinte política 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>
    

    Como 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 implantação do API Proxy 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

Verifique se o formato do horário de início especificado no elemento <StartTime> da política de cotas é válido de acordo com o formato exigido yyyy-MM-dd HH:mm:ss. 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 implantação do proxy de API por meio da IU da Apigee ou da API 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.

Exemplo de mensagem de erro

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

Captura de tela de exemplo

Erro ao salvar a revisão 1.

Causa

Se o elemento <StartTime> for especificado em uma política de cotas cujo tipo de cota não seja do tipo agenda, a implantação do proxy da API falhará.

O elemento <StartTime> é compatível apenas com o tipo de cota calendar.

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

Diagnóstico

  1. Identifique o tipo de cota especificado na política de cotas com falha. Você encontra essas informações a partir da mensagem de erro. Por exemplo, no erro a seguir, o horário de início inválido é flexi

    Starttime is not supported for quotatype flexi. Starttime is
    supported only for calendar based type.
    
  2. Examine todas as políticas de cota no proxy de API específico em que a falha ocorreu. Se houver alguma política de cota em que o atributo type especificado corresponda ao tipo de cota identificado na Etapa 1 acima e o elemento <StartTime> for especificado, essa será a causa do erro.

    Por exemplo, a seguinte política especifica o tipo de cota 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>
    

    Como o elemento <StartTime> é especificado na Política de cotas e o tipo de cota especificado como flexi, a implantaçã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

Verifique se o elemento <StartTime> não está especificado quando o tipo de cota indicado pelo atributo type no elemento <Quota> é flexi ou rolling window. 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 implantação do proxy de API por meio da IU da Apigee ou da API falha com esta mensagem de erro:

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

Exemplo de mensagem de erro

Error Saving Revision 1
Invalid timeunit second for distributed quota.

Captura de tela de exemplo

Erro ao salvar a revisão 1.

Causa

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

Quando o elemento Distributed é definido como true, a política precisa manter um contador central e sincronizá-la continuamente em todos os processadores de mensagens. Portanto, seria difícil sincronizar e também verificar se o número de solicitações não excedeu a cota especificada em um curto intervalo de tempo, como segundos. Por esse motivo, a unidade de tempo second é considerada inválida para a cota distribuída.

Diagnóstico

Examine todas as políticas de cota no proxy de API específico em que a falha ocorreu. Se houver uma política de cotas com um elemento <TimeUnit> definido como second e o elemento <Distributed> estiver definido como true, essa será a causa do erro.

Por exemplo, a política abaixo tem um elemento <TimeUnit> definido como second e o elemento <Distributed> é 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 seja definido como second quando o elemento <Distributed> estiver definido como verdadeiro. O elemento <TimeUnit> pode ser definido com 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 implantação do proxy de API por meio da IU da Apigee ou da API falha com esta mensagem de erro:

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

Exemplo de mensagem de erro

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

Captura de tela de exemplo

Erro ao salvar a revisão 1.

Causa

Se o valor especificado para o elemento <SyncIntervalInSeconds> dentro do elemento <AsynchronousConfiguration> em uma política de cota for menor que zero, a implantação do proxy da API falhará.

Diagnóstico

Examine todas as políticas de cota no proxy de API específico em que a falha ocorreu. Se houver uma política de cota em que o elemento <SyncIntervalInSeconds> esteja definido como um valor menor que zero, no elemento <AsynchronousConfiguration>, essa será 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

Sempre especifique um número inteiro positivo para o elemento <SyncIntervalInSeconds> no elemento <AsynchronousConfiguration> em uma política de cota. 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 implantação do proxy de API por meio da IU da Apigee ou da API falha com esta mensagem de erro:

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

Exemplo de mensagem de erro

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

Captura de tela de exemplo

Erro ao salvar a revisão 2.

Causa

Se o valor do elemento <Synchronous> estiver definido como true em uma política de cota, que também tem configuração assíncrona definida usando o elemento <AsynchronousConfiguration>, a implantação do proxy de API falhará.

Diagnóstico

Examine todas as políticas de cota no proxy de API específico em que a falha ocorreu. Se houver uma política de cotas em que o elemento <Synchronous> esteja definido como true e se ele também tiver um elemento <AsynchronousConfiguration> definido, essa será a causa do erro.

Por exemplo, a política abaixo tem um elemento <Synchronous> definido como true e também 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 haja uma configuração assíncrona definida usando o elemento <AsynchronousConfiguration> se o elemento <Synchronous> estiver definido como true em uma política de cota.

O exemplo acima pode ser corrigido com a remoção da seçã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>