Gestionar excepciones por lotes
La API de HBase ofrece dos formas de enviar varias operaciones como un lote:
Table#batch(List, Object[])
combina varias operaciones get y mutaciones en un solo lote.BufferedMutator#mutate(List<? extends Mutation> mutations)
combina varias mutaciones en un lote o una serie de lotes.
Con el cliente de HBase de Cloud Bigtable para Java, ambos métodos pueden generar una RetriesExhaustedWithDetailsException
. Esta excepción se produce cuando se produce un error en una o varias operaciones por lotes por cualquier motivo (por ejemplo, porque se ha producido un error en la conexión). Contiene una lista de solicitudes fallidas, junto con detalles sobre la excepción que ha provocado que cada solicitud falle.
Por sí solo, un RetriesExhaustedWithDetailsException
no te indica por qué ha fallado una solicitud. Debes llamar a RetriesExhaustedWithDetailsException#getCauses()
para obtener las excepciones detalladas de cada solicitud fallida. A continuación, puedes registrar información sobre cada una de las excepciones detalladas, lo que te ayudará a diagnosticar el error:
try {
mutator.mutate(mutationList);
} catch (RetriesExhaustedWithDetailsException e) {
for (Throwable cause : e.getCauses()) {
cause.printStackTrace();
}
throw e;
}
También se puede producir una excepción cuando llamas a
flush
o close
.
Se aplica la misma gestión de errores.