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。