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。