Exceções comuns

Quando ocorre um erro durante uma chamada de método de cliente de cache, o cliente de cache descarta uma instância da classe DataCacheException. A propriedade ErrorCode contém o tipo de erro.

Cada API de cliente de cache tem a possibilidade de se deparar com um dos vários erros comuns:

O código do seu aplicativo deve ser criado para antecipar esses erros. As informações a seguir fornecem detalhes adicionais sobre cada erro que deve ajudá-lo a manipular corretamente cada situação.

Timeout

Quando ocorre um tempo limite, um objeto DataCacheException é descartado com um código de erro igual a Timeout. Um tempo limite indica que o cliente de cache não obteve resposta do servidor dentro das definições de tempo limite configuradas. Isso poderá ser causado por vários problemas, como problemas de rede entre o cliente e servidor.

Embora ocorra o erro de tempo limite, é importante observar que o servidor pode ter processado com êxito a operação solicitada. Por exemplo, considere um aplicativo que tenha um cliente de cache com um requestTimeout definido como 10000 milissegundos. O aplicativo faz uma chamada para a API Add, a fim de adicionar um novo item de cache. Se a chamada demorar mais de 10 segundos, o aplicativo receberá um erro de tempo limite. No entanto, o servidor poderá ter concluído a operação de adicionar e, em seguida, não conseguiu responder para o cliente antes de expirar o tempo limite. No manipulador de erro, o aplicativo deverá considerar essa possibilidade. Se o manipulador de erro apenas tentar adicionar o objeto novamente, poderá resultar em outra exceção com o código de erro de KeyAlreadyExists.

Dependendo dos requisitos de design do aplicativo, você poderá estender ou reduzir a duração dos tempos limites do cliente de cache. Para obter mais informações sobre como configurar a duração de tempo limite, consulte Configurando tempos limites do cliente de cache.

RetryLater

O código de erro RetryLater indica que o cluster de cache não pode concluir temporariamente uma solicitação. Por exemplo, esse erro poderá ocorrer se um administrador estiver configurando o cluster de cache.

Com esse tipo de erro, é importante observar o valor da propriedade SubStatus do objeto DataCacheException. Essa propriedade fornece detalhes adicionais que explicam o motivo da falha. Por exemplo, se o cluster de cache for interrompido, o objeto DataCacheException descartado terá a propriedade ErrorCode definida como RetryLater e a propriedade SubStatus definida como CacheServerUnavailable. Observe que esse mesmo valor SubStatus teria sido visto de a Conta do Windows associada com a solicitação não tivesse sido permitida no cluster de cache ou se o firewall nos hosts de cache não tivesse sido configurado corretamente.

O código de erro RetryLater também pode ocorrer quando um ou mais dos servidores de destino têm pouca memória disponível. Nesta situação, a propriedade SubStatus é definida como Throttled. Há vários fatores que podem contribuir para um servidor de cache limitado.

  • Verifique as configurações de cache com o comando get-cacheconfig do Windows Powershell. Procure os caches com EvictionType definido como None em vez de LRU. Se remoção estiver desabilitada, o cluster de cache não poderá remover itens de cache quando o servidor tiver pouca memória.

  • Use o Gerenciador de Tarefas do Windows ou o Monitor de Desempenho para procurar outros processos nos servidores de cache que podem estar usando a memória disponível.

  • Examine o uso do cache do aplicativo. A taxa média de objetos inseridos, seu tamanho e valores de tempo limite contribuem para a quantidade total de memória necessária no cluster de cache.

  • Considere o uso de regiões personalizadas. Uma região reside somente em um servidor de cache, então os itens em uma região não podem ser espalhados em todos os hosts de cache. Se uma ou mais regiões grandes residirem em um único servidor de cache, então esse servidor poderá estar em um estado limitado mesmo se outros servidores de cache tiverem memória disponível.

ConnectionTerminated

O código de erro ConnectionTerminated indica que a conexão entre o cliente de cache e o cluster de cache foi anulada. Existem várias causas possíveis para esse erro, incluindo erros de rede ou encerramento dos servidores de cache. Assim como os erros de tempo limite, o erro ConnectionTerminated não reflete o sucesso ou a falha da operação solicitada. O manipulador de erro deve antecipar as duas possibilidades.

Consulte também

Conceitos

Visão geral do tratamento de exceções

  2012-03-05