Я использую hibernate, а также innodb и mysql.У меня есть пессимистическая блокировка (для определенной строки таблицы), полученная в начале очень длинной спящей транзакции.Иногда, когда я запускаю программу, которая запускает эту транзакцию и работает в Eclipse в режиме автономного приложения, и выполняю полную остановку приложения (которая вызывает поток потока), у меня возникает следующий сценарий:
MySQLне понимает, что транзакция была прервана.В следующий раз, когда я запускаю свое приложение, функция, которая получает блоки пессимистической блокировки (в начале этой длинной транзакции), даже если MySQL должен понять, что эта строка разблокирована.
Единственный способ заставить все работатьснова стоит остановить демон MySQL и перезапустить его, после чего получается пессимистическая блокировка.
Это действительно касается меня.Это означает, что любой выход виртуальной машины, кроме исключений или чистого отключения, может оставить MySQL в нерабочем состоянии, что требует перезапуска демона MySQL.Например, используется нормальный способ выключения и перезапуска Tomcat, который, как я понимаю, включает в себя поток смерти, как и использование eclipse для прерывания работающего приложения.
Сталкивались ли другие люди с этой проблемой?Есть ли чистый способ остановить кота, который не включает в себя threaddeath?Разве MySQL не должен быть защищен от поточности в середине транзакции, которая получила пессимистическую блокировку (выберите для обновления)?
Я остановил tomcat с помощью $ CATALINA_HOME / bin / shutdown.sh
Andy