Trate exceções de lotes
A API HBase oferece duas formas de enviar várias operações como um lote:
Table#batch(List, Object[])
combina várias obtenções e mutações num único lote.BufferedMutator#mutate(List<? extends Mutation> mutations)
combina várias mutações num lote ou numa série de lotes.
Com o cliente HBase do Cloud Bigtable para Java, ambos os métodos podem gerar um erro RetriesExhaustedWithDetailsException
. Esta exceção é lançada quando uma ou mais das operações em lote falham por qualquer motivo (por exemplo, porque a ligação falhou). Contém uma lista de pedidos com falhas, juntamente com detalhes sobre a exceção que causou a falha de cada pedido.
Por si só, um RetriesExhaustedWithDetailsException
não indica o motivo da falha de um pedido. Tem de chamar RetriesExhaustedWithDetailsException#getCauses()
para obter as exceções detalhadas de cada pedido falhado. Em seguida, pode registar informações sobre cada uma das exceções detalhadas, o que ajuda a diagnosticar a falha:
try {
mutator.mutate(mutationList);
} catch (RetriesExhaustedWithDetailsException e) {
for (Throwable cause : e.getCauses()) {
cause.printStackTrace();
}
throw e;
}
Também pode ser gerada uma exceção quando chama
flush
ou close
.
Aplica-se o mesmo processamento de erros.