/ / Come riavviare la transazione dopo il deadlock o il timeout in Java? - java, mysql, jdbc, transazioni, deadlock del database

Come riavviare la transazione dopo il deadlock o il timeout in Java? - java, mysql, jdbc, transazioni, deadlock del database

Come riavviare una transazione (in modo che venga eseguita almeno una volta) quando otteniamo:

(com.mysql.jdbc.exceptions.jdbc4.MySQLTransactionRollbackException: Trovato deadlock quando si tenta di ottenere il blocco; Prova a riavviare la transazione) OPPURE (la transazione scade)?

Sto usando MySQL (INNODB ENGINE) e Java.Please help e linkano anche eventuali risorse o codici utili.

risposte:

1 per risposta № 1

Quando mai stai catturando questo tipo di eccezione nel tuo blocco di cattura

catch(Exception e){
if(e instanceof TransactionRollbackException){
//Retrigger Your Transaction
}
// log your exception or throw it its upto ur implementation
}

1 per risposta № 2

Se si utilizza JDBC normale, è necessario farlo manualmente, in un ciclo (e non dimenticare di controllare le condizioni preliminari ogni volta.
Se usi la primavera, "Come riavviare le transazioni su deadlock / lock-timeout in primavera?"potrebbe aiutare.