我正在执行一些测试来评估DAO层的框架。其中一个测试用例是复制一个表锁,并检查框架在这种情况下的行为。这个测试是使用Java完成的,主要是JPA,使用Hibernate和EclipseLink作为JPA供应商,我们单独使用Hibernate,我们有一组接口充当框架的桥梁,以简化我们针对任何其他ORM框架的测试。
我已经成功地针对我们的MySQL 5.5.11数据库生成了一个表锁测试用例,这是因为运行测试用例的应用程序刚刚冻结了50秒(MySQL中锁等待时间的默认值),然后日志中出现了一个与表锁等待超时异常相关的SQLException。然后我将测试的配置切换到Postgres9.0并重新执行测试,我可以复制表锁,但是现在应用程序被冻结了10分钟,没有异常抛出,所以我必须停止测试执行。
我正在研究如何更改Postgres9.0,并在这里得到了Postgres9.3的结果:客户端连接默认值 I lock_timeout。然后我检查了9.0的文档,这样的参数是不可用的。您知道如何在postgres配置中或在我的Java客户端应用程序(可能是JPA、Hibernate或EclipseLink特定的配置)中更改此配置以检查数据库中的表锁异常吗?最糟糕的情况是,生产环境中会出现表锁,除非停止应用程序(这是我们与框架一起测试的内容),否则我们无法从中恢复。
发布于 2014-10-10 17:25:01
试试超时,它已经存在很久了。
SET statement_timeout=1000;
-- try to take lock, and get an exception 1000ms laterhttps://stackoverflow.com/questions/26303827
复制相似问题