changelog-lock-wait-time-in-minutes global parameter is an integer value that sets the amount of time Liquibase waits for a locked database to become available. The default value is
The DATABASECHANGELOGLOCK table only allows a single instance of Liquibase to run at a time. This prevents conflicts between multiple developers working at the same time or multiple servers in a cluster that auto-run Liquibase on startup.
DATABASECHANGELOGLOCK has a column named
LOCKED that is set to
1 while Liquibase is running and
0 otherwise. If you try to run Liquibase while the lock record is active, the following message is printed to
Waiting for changelog lock....
This message repeats until
LOCKED is set to
0. If the amount of time specified in
changelog-lock-wait-time-in-minutes passes and the lock is not released, Liquibase stops running.
Liquibase doesn’t automatically time out if a database update takes a long time to finish. If you need to run multiple database updates at once, and each of them takes a long time to complete, you can raise the value of
changelog-lock-wait-time-in-minutes. This way, you don’t have to re-run commands that timed out.
If you need to limit system resources by halting processes in a "waiting" state, you can lower the value of
You can set this parameter in the following ways:
|Liquibase properties file||
|Global flow file argument (example)||
|Global CLI parameter||
JVM system property (JAVA_OPTS Environment Variable)
|Liquibase Environment Variables||
For more information, see Working with Command Parameters.
Note: If you use Liquibase 4.3.5 or earlier, the syntax for this argument in the properties file or as a JVM system property is
changeLogLockWaitTimeInMinutes instead of