As traduções são geradas por tradução automática. Em caso de conflito entre o conteúdo da tradução e da versão original em inglês, a versão em inglês prevalecerá.
Erros comuns do driver Amazon QLDB
Importante
Aviso de fim do suporte: os clientes existentes poderão usar o Amazon QLDB até o final do suporte em 31/07/2025. Para obter mais detalhes, consulte Migrar um Amazon QLDB Ledger para o Amazon
Esta seção descreve os erros de runtime que podem ser gerados pelo driver Amazon QLDB ao interagir com a API do QLDB Session.
Veja a seguir uma lista de exceções comuns retornadas pelo driver. Cada exceção inclui a mensagem de erro específica, seguida por uma breve descrição e sugestões de possíveis soluções.
- CapacityExceededException
-
Mensagem:
Capacidade excedida
O Amazon QLDB rejeitou a solicitação porque ela excedeu a capacidade de processamento do ledger. O QLDB impõe um limite interno de escalabilidade por ledger para manter a integridade e o desempenho do serviço. Esse limite varia de acordo com o tamanho da workload de cada solicitação individual. Por exemplo, uma solicitação pode ter uma workload maior se realizar transações de dados ineficientes, como varreduras de tabelas resultantes de uma consulta qualificada não indexada.
Recomendamos que você espere antes de repetir a solicitação. Se seu aplicativo encontrar essa exceção de forma consistente, otimize suas instruções e diminua a taxa e o volume das solicitações que você envia para o ledger. Exemplos de otimização de instruções incluem a execução de menos instruções por transação e o ajuste dos índices da tabela. Para saber como otimizar instruções e evitar varreduras de tabelas, consulte Otimizar a performance da consulta.
Recomendamos o uso da versão mais recente do driver QLDB. O driver tem uma política de repetição padrão que usa recuo exponencial e Jitter
para repetir automaticamente exceções como essa. O conceito por detrás do recuo exponencial é usar esperas progressivamente mais longas entre as novas tentativas para respostas de erro consecutivas. - InvalidSessionException
-
Mensagem:
transactionId
A transação expirouUma transação excedeu sua vida útil máxima. Uma transação pode ser executada por até 30 segundos antes de ser confirmada. Após esse limite de tempo, qualquer trabalho realizado na transação é rejeitado e o QLDB descarta a sessão. Esse limite protege o cliente de sessões vazadas ao iniciar transações e não confirmá-las ou cancelá-las.
Se essa for uma exceção comum em seu aplicativo, é provável que as transações estejam simplesmente demorando muito para serem executadas. Se o runtime da transação estiver demorando mais de 30 segundos, otimize seus extratos para acelerar as transações. Exemplos de otimização de instruções incluem a execução de menos instruções por transação e o ajuste dos índices da tabela. Para obter mais informações, consulte Otimizar a performance da consulta.
- InvalidSessionException
-
Mensagem:
sessionId
A sessão expirouO QLDB descartou a sessão porque ela excedeu sua vida útil total máxima. O QLDB descarta as sessões após 13 a 17 minutos, independentemente de uma transação ativa. As sessões podem ser perdidas ou prejudicadas por vários motivos, como falha de hardware, falha de rede ou reinicialização de aplicativos. Portanto, o QLDB impõe uma vida útil máxima às sessões para garantir que o software cliente seja resiliente a falhas de sessão.
Se você encontrar essa exceção, recomendamos que você adquira uma nova sessão e repita a transação. Também recomendamos usar a versão mais recente do driver QLDB, que gerencia o pool de sessões e sua integridade em nome do aplicativo.
- InvalidSessionException
-
Mensagem:
Essa sessão não existe
O cliente tentou fazer transações com o QLDB usando uma sessão que não existe. Supondo que o cliente esteja usando uma sessão que existia anteriormente, a sessão pode não existir mais devido a um dos seguintes motivos:
-
Se uma sessão estiver envolvida em uma falha interna do servidor (ou seja, um erro com o código de resposta HTTP 500), o QLDB poderá optar por descartar a sessão completamente, em vez de permitir que o cliente realize transações com uma sessão de estado incerto. Então, qualquer nova tentativa nessa sessão falhará com esse erro.
-
As sessões expiradas acabam sendo esquecidas pelo QLDB. Então, qualquer tentativa de continuar usando a sessão resultará nesse erro, em vez do
InvalidSessionException
inicial.
Se você encontrar essa exceção, recomendamos que você adquira uma nova sessão e repita a transação. Também recomendamos usar a versão mais recente do driver QLDB, que gerencia o pool de sessões e sua integridade em nome do aplicativo.
-
- RateExceededException
-
Mensagem:
A taxa foi excedida
O QLDB executou um controle de utilização em um cliente com base na identidade do chamador. O QLDB impõe controle de utilização por região e por conta usando um algoritmo de limitação de token bucket
. O QLDB faz isso para ajudar na performance do serviço e garantir o uso justo para todos os clientes do QLDB. Por exemplo, tentar adquirir um grande número de sessões simultâneas usando a operação StartSessionRequest
pode levar ao controle de utilização.Para manter a integridade do aplicativo e reduzir ainda mais o controle de utilização, você pode tentar novamente essa exceção usando recuo exponencial e jitter
. O conceito por detrás do recuo exponencial é usar esperas progressivamente mais longas entre as novas tentativas para respostas de erro consecutivas. Recomendamos o uso da versão mais recente do driver QLDB. O driver tem uma política de repetição padrão que usa recuo exponencial e Jitter para repetir automaticamente exceções como essa. A versão mais recente do driver QLDB também pode ajudar se seu aplicativo estiver constantemente sendo limitado pelo QLDB para chamadas
StartSessionRequest
. O driver mantém um pool de sessões que são reutilizadas em todas as transações, o que pode ajudar a reduzir o número de chamadasStartSessionRequest
que seu aplicativo faz. Para solicitar um aumento nos limites de controle de utilização de API, entre em contato com a Central de AWS Support. - LimitExceededException
-
Mensagem:
Excedeu o limite da sessão
Um ledger excedeu sua cota (também conhecida como limite) no número de sessões ativas. Essa cota é definida em Cotas e limites no Amazon QLDB. Eventualmente, a contagem de sessões ativas de um ledger é consistente, e ledgers consistentemente próximos à cota podem ver essa exceção periodicamente.
Para manter a integridade do seu aplicativo, recomendamos tentar novamente essa exceção. Para evitar essa exceção, certifique-se de não ter configurado mais de 1.500 sessões simultâneas para serem usadas em um único ledger em todos os clientes. Por exemplo, você pode usar o maxConcurrentTransactions
método do driver Amazon QLDB para Java para configurar o número máximo de sessões disponíveis em uma instância do driver. - QldbClientException
-
Mensagem:
Um resultado transmitido só é válido quando a transação principal está aberta
A transação está fechada e não pode ser usada para recuperar os resultados do QLDB. Uma transação é fechada quando é confirmada ou cancelada.
Essa exceção ocorre quando o cliente está trabalhando diretamente com o objeto
Transaction
e está tentando recuperar os resultados do QLDB após confirmar ou cancelar uma transação. Para mitigar esse problema, o cliente deve ler os dados antes de fechar a transação.