跳转到内容

OpenClinica 用户手册/ChangeLogLock

来自维基教科书,开放世界中的开放书籍

等待变更日志锁定错误

[编辑 | 编辑源代码]

偶尔你会发现自己处于一种 Tomcat 陷入困境,除了强制关闭别无选择的情况。 然后你启动 Tomcat,但 OpenClinica 无法使用。 在 stdout.log 中,你会看到最后几行

Waiting for changelog lock....
Waiting for changelog lock....
Waiting for changelog lock....
[repeated]

以及最终

AbandonedObjectPool is used (org.apache.commons.dbcp.AbandonedObjectPool@195092c0)
   LogAbandoned: true
   RemoveAbandoned: true
   RemoveAbandonedTimeout: 300
AbandonedObjectPool is used (org.apache.commons.dbcp.AbandonedObjectPool@1f2be27)
   LogAbandoned: true
   RemoveAbandoned: true
   RemoveAbandonedTimeout: 300
AbandonedObjectPool is used (org.apache.commons.dbcp.AbandonedObjectPool@bb0620c)
   LogAbandoned: true
   RemoveAbandoned: true
   RemoveAbandonedTimeout: 300

同时,在你的 <server>.<date>.log 中,你会看到

core-db.xml]: Invocation of init method failed; nested exception is liquibase.exception.LockException: Could not acquire change log lock.  Currently locked by UNKNOWN

在这种情况下,你必须删除表 "databasechangeloglock" 中的所有记录(可能只有一条)(参见 关于“liquibase 具有防止多次更新的机制”的这个帖子)。 首先关闭 Tomcat,或在 Tomcat-manager 中停止 OpenClinica 应用程序。 启动 pgadmin 并浏览到该表; 右键单击它,查看数据 - 查看所有行。 选择该行并按删除键。

或者从命令提示符

sudo -u postgres /usr/bin/psql
\c openclinica
delete from databasechangeloglock;

重新启动 Tomcat。

华夏公益教科书