Gestione delle eccezioni batch
L'API HBase offre due modi per inviare più operazioni in batch:
Table#batch(List, Object[])
combina più get e mutazioni in un unico batch.BufferedMutator#mutate(List<? extends Mutation> mutations)
combina più mutazioni in un batch o in una serie di batch.
Con il client Cloud Bigtable HBase per Java, entrambi i metodi possono generare un RetriesExhaustedWithDetailsException
. Questa eccezione viene lanciata quando una o più operazioni batch non riescono per qualsiasi motivo (ad esempio a causa di un errore di connessione). Contiene un elenco di richieste non riuscite, insieme ai dettagli dell'eccezione che ha causato il fallimento di ogni richiesta.
Un codice RetriesExhaustedWithDetailsException
da solo non indica il motivo per cui una richiesta non è andata a buon fine. Devi chiamare
RetriesExhaustedWithDetailsException#getCauses()
per recuperare le
eccezioni dettagliate per ogni richiesta non riuscita. Puoi quindi registrare informazioni su ciascuna delle eccezioni dettagliate, che ti aiuteranno a diagnosticare l'errore:
try {
mutator.mutate(mutationList);
} catch (RetriesExhaustedWithDetailsException e) {
for (Throwable cause : e.getCauses()) {
cause.printStackTrace();
}
throw e;
}
Un'eccezione può essere generata anche quando chiami
flush
o close
.
Si applica la stessa gestione degli errori.