MySQL GET_LOCK()和RELEASE_LOCK()WITH JAVA8

时间:2017-11-15 20:13:15

标签: java mysql hibernate hibernate-5.x

release_lock返回0 - 根据文档意味着锁是由另一个会话创建的。

但是在代码中我们创建了一个会话,它正在建立锁,执行多个工作事务,然后释放锁。

所以不知何故,似乎db正在丢失/混淆锁的所有权 - 或者我们的单个hibernate会话以某种方式使用多个不同的数据库连接(它在java7中没有/没有)。 / p>

这在单元测试中发生 - 并且在尝试释放测试的步骤X的锁之后。 然后它尝试再次获得测试步骤X + 1的锁定.. 此时应用程序抛出一个错误,因为它无法建立锁定(因为它仍然被上一次执行无法释放它所持有)。

另外 - 这似乎与hibernate / c3p0连接池有某种关系。因为确实如果我将最大池大小减小到1(意味着它只与db有一个连接) - 这个过程运行正常。

所以不知何故,当游泳池> 1 - 看起来hibernate正在为单个休眠会话使用多个连接。

0 个答案:

没有答案