Il y a eu plusieurs messages d'enregistrement de l'activité (démarrage, validation & rollback) du gestionnaire de transactions de Spring. Cependant, je suis récemment tombé sur un problème d'interblocage pour lequel la journalisation de l'activité n'est pas suffisante.Comment enregistrer le contenu d'une transaction Spring
Le problème fondamental dans notre code est une utilisation désordonnée des propagations de transaction REQUIRED et REQUIRES_NEW. Il y a tellement d'appels de méthodes que nous nous retrouvons avec beaucoup de transactions empilées les unes sur les autres. Hélas, la base de code est énorme et la solution urgente ... (Nous savons tous ce que c'est.)
Le problème était un blocage parce que le code a été ajouté à des requêtes d'entités dans une transaction qui ont été sous-séquentiellement modifiées dans un autre transaction. Spring crache une exception indiquant que la mise à jour de l'entité X expire parce qu'elle est verrouillée. Maintenant, sachant que c'est bien, mais comment trouver le code défectueux: La requête qui fait le verrouillage précoce.
Ma question (enfin): Existe-t-il un moyen de consigner les entités ajoutées à une transaction? De cette façon, je peux spécifiquement rechercher des transactions bloquant l'entité dont se plaint Spring.
Merci! :-)