Controla excepciones de lotes
La API de HBase ofrece dos formas de enviar varias operaciones como un lote:
Table#batch(List, Object[])
combina varias obtenciones 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 arrojar una RetriesExhaustedWithDetailsException
. Se arroja esta excepción cuando una o más de las operaciones por lotes fallan por algún motivo (por ejemplo, porque falló la conexión). Contiene una lista de solicitudes fallidas, junto con detalles sobre la excepción que causó la falla de cada solicitud.
Por sí misma, una RetriesExhaustedWithDetailsException
no indica por qué falló una solicitud. Debes llamar a RetriesExhaustedWithDetailsException#getCauses()
para recuperar las excepciones detalladas de cada solicitud fallida. Luego, puedes registrar información sobre cada una de las excepciones detalladas, lo que te ayudará a diagnosticar la falla:
try {
mutator.mutate(mutationList);
} catch (RetriesExhaustedWithDetailsException e) {
for (Throwable cause : e.getCauses()) {
cause.printStackTrace();
}
throw e;
}
También se puede generar una excepción cuando llamas a flush
o close
.
Se aplica el mismo manejo de errores.