Были различные сообщения о регистрации активности (запуск, фиксация и откат) диспетчера транзакций Spring. Однако недавно я столкнулся с проблемой тупика, для которой недостаточно вести журнал только активности.
Основная проблема в нашем коде - беспорядочное использование транзакций REQUIRED и REQUIRES_NEW. Существует так много вызовов методов взад и вперед, что мы получаем много транзакций, накладываемых друг на друга. Увы, кодовая база огромна, а решение необходимо срочно ... (Мы все знаем, что это такое.)
Проблема заключалась в тупике, потому что код был добавлен к объектам запроса в транзакции, которые были последовательно изменены в другой транзакции . Spring выдает исключение, сообщающее, что время обновления объекта X истекло, потому что оно заблокировано. Знать, что это приятно, но как найти ошибочный код: запрос, который выполняет раннюю блокировку.
Мой вопрос (наконец): есть ли способ регистрировать объекты, добавляемые к транзакции? Таким образом, я могу специально искать транзакции, блокирующие объект, на который жалуется Spring.
Спасибо! : -)