Jump to content

OpenClinica User Manual/ChangeLogLock

From Wikibooks, open books for an open world

Waiting for changelog lock error

[edit | edit source]

Every now and then you find yourself in a situation where Tomcat gets stuck and there is no other option then to force a shutdown. Then you startup Tomcat, but OpenClinica is not available. In the stdout.log you see as the last line couple of lines

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

and eventually:

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

At the same time, in your <server>.<date>.log you will see:

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

In this case you must delete all (probably just one) record from the table "databasechangeloglock" (see this thread about 'liquibase has a mechanism to prevent multiple updates'). Shutdown Tomcat first, or stop the OpenClinica app in Tomcat-manager. Start pgadmin and browse to the table; rightclick it View data-View all rows. Select the row(s) and press delete.

Or from the command prompt:

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

Start Tomcat again.