Processar exceções em lote
A API HBase oferece duas maneiras de enviar várias operações como um lote:
Table#batch(List, Object[])
combina vários get e mutações em um único lote.BufferedMutator#mutate(List<? extends Mutation> mutations)
combina várias mutações em um lote ou série de lotes.
Com o cliente HBase do Cloud Bigtable para Java, esses dois métodos podem gerar um RetriesExhaustedWithDetailsException
. Essa exceção é lançada quando uma ou mais das operações em lote falham por qualquer motivo (por exemplo, por causa de uma falha na conexão). Ela contém uma lista das solicitações com falha, além de detalhes sobre a exceção que causou a falha em cada solicitação.
Por si só, um RetriesExhaustedWithDetailsException
não informa por que uma solicitação falhou. Você precisa chamar RetriesExhaustedWithDetailsException#getCauses()
para recuperar as exceções detalhadas de cada solicitação com falha. Em seguida, você pode registrar informações sobre cada uma das exceções detalhadas, o que ajudará a diagnosticar a falha:
try {
mutator.mutate(mutationList);
} catch (RetriesExhaustedWithDetailsException e) {
for (Throwable cause : e.getCauses()) {
cause.printStackTrace();
}
throw e;
}