【发布时间】:2014-10-10 16:21:18
【问题描述】:
我正在执行一些测试来评估我们的 DAO 层的框架。其中一个测试用例是复制表锁并检查框架在这种情况下的行为方式。这些测试是使用 Java 完成的,主要是 JPA,使用 Hibernate 和 EclipseLink 作为 JPA 供应商,我们也单独使用 Hibernate,我们有一组接口作为框架的桥梁,以简化我们针对任何其他 ORM 框架的测试。
我已经成功地针对我们的 MySQL 5.5.11 数据库生成了一个表锁定测试用例,这是因为运行测试用例的应用程序刚刚冻结了 50 秒(MySQL 中锁定等待时间的默认值),然后出现了与相关的 SQLException日志中出现表锁等待超时异常。然后我切换测试的配置连接到 Postgres 9.0 并重新执行测试,我可以复制表锁但现在应用程序只是冻结了 10 分钟,没有抛出异常,所以我不得不停止测试执行.
我正在搜索如何为 Postgres 9.0 更改这个时间,并在此处获得了 Postgres 9.3 的结果:Client Connection Defaults under lock_timeout。然后我检查了 9.0 的文档,并且没有这样的参数。您知道如何在 postgres 配置或我的 Java 客户端应用程序中更改它,可能是 JPA 或 Hibernate 或 EclipseLink 特定配置,只是为了检查数据库中的表锁定异常?最糟糕的情况是生产环境中出现表锁,除非应用程序停止(这是我们与框架一起测试的),否则我们无法从中恢复。
【问题讨论】:
标签: java hibernate postgresql jpa postgresql-9.0