Ha habido varias publicaciones de inicio de sesión de la actividad (inicio, commit & rollback) del administrador de transacciones de Spring. Sin embargo, recientemente me encontré con un problema de interbloqueo para el cual el registro solo de la actividad no es suficiente.Cómo registrar el contenido de transacción de Spring
El problema fundamental en nuestro código es un uso desordenado de propagaciones de transacciones REQUERIDAS y REQUERES_NUEVAS. Hay tantas llamadas de método de ida y vuelta que terminamos con muchas transacciones apiladas entre sí. Desgraciadamente, el código base es enorme y la solución urgente ... (Todos sabemos qué es esto)
El problema era un interbloqueo porque el código se agregaba a las entidades de consulta en una transacción que se modificaba secuencialmente en otro transacción. Spring escupe una excepción que dice que la actualización de la entidad X se agotó porque está bloqueada. Ahora bien, saber esto es agradable, pero ¿cómo se puede encontrar el código defectuoso? La consulta que realiza el bloqueo anticipado.
Mi pregunta (por fin): ¿Hay alguna manera de registrar las entidades que se agregan a una transacción? De esta manera, puedo buscar específicamente transacciones que bloqueen la entidad de la que Spring se queja.
Gracias! :-)