En Java 7 est-il possible de passer la méthode en tant que paramètre.Java 7 passe méthode en tant que paramètre pour SQL statique Deadlock vérifier
La méthode serait invoquée et serait encapsulée dans un do while pour vérifier les blocages SQL et réessayer. J'essaye de faire une manière générique de manipuler des deadlocks quand il y a un verrou sur la table, car il y a actuellement des milliers d'insertions et de mises à jour pour répliquer ceci. Actuellement, il ne rechercherait que SQLException mais cela pourrait être changé en getErrorCode de SQLException et target ER_LOCK_DEADLOCK.
Le code ci-dessous est juste un exemple de ce que je suis en train de réaliser:
public void Object1Insert(Object1 object1){
genericSQLRetry(insertObject1(object1));
}
public void Object2Insert(Object2 object2){
genericSQLRetry(insertObject2(object2));
}
public void genericSQLRetry({method}){
int retries = 5;
boolean isException = false;
do{
try {
isException = false;
retries--;
//Invoke method
{method}
}catch (SQLException e){
isException = true;
}
if (isException & retries > 0){
//getRandomSleep would be between 750-1250ms. This is to stop multiple retries at the same time.
Thread.sleep(getRandomSleep());
}
}while (isException == true && retries > 0);
}
Oui, je connaissais la réflexion et j'essayais de l'éviter pour ces raisons. Merci. –
Vous êtes les bienvenus. Avez-vous essayé d'utiliser JTA (Java Transaction API) pour faire face à un blocage? Cela pourrait vous aider. – Pfeiffer