Bloqueo Liquibase: ¿razones?

Resuelto Peter asked hace 11 años • 12 respuestas

Me sale esto cuando ejecuto muchos scripts de liquibase en un servidor Oracle. Alguna computadora soy yo.

Waiting for changelog lock....
Waiting for changelog lock....
Waiting for changelog lock....
Waiting for changelog lock....
Waiting for changelog lock....
Waiting for changelog lock....
Waiting for changelog lock....
Liquibase Update Failed: Could not acquire change log lock.  Currently locked by SomeComputer (192.168.15.X) since 2013-03-20 13:39
SEVERE 2013-03-20 16:59:liquibase: Could not acquire change log lock.  Currently locked by SomeComputer (192.168.15.X) since 2013-03-20 13:39
liquibase.exception.LockException: Could not acquire change log lock.  Currently locked by SomeComputer (192.168.15.X) since 2013-03-20 13:39
        at liquibase.lockservice.LockService.waitForLock(LockService.java:81)
        at liquibase.Liquibase.tag(Liquibase.java:507)
        at liquibase.integration.commandline.Main.doMigration(Main.java:643)
        at liquibase.integration.commandline.Main.main(Main.java:116)

¿Será que se ha alcanzado el número de sesiones/transacciones simultáneas? ¿Alguien tiene alguna idea?

Peter avatar Mar 20 '13 23:03 Peter
Aceptado

A veces, si la aplicación de actualización se detiene abruptamente, el bloqueo permanece bloqueado.

Luego corriendo

UPDATE DATABASECHANGELOGLOCK SET LOCKED=0, LOCKGRANTED=null, LOCKEDBY=null where ID=1;

contra la base de datos ayuda.

Es posible que también necesites reemplazarlo LOCKED=0con LOCKED=FALSE.

O simplemente puede soltar la DATABASECHANGELOGLOCKtabla y se recreará.

Adrian Ber avatar Sep 29 '2013 18:09 Adrian Ber

Editar junio 2020

No sigas este consejo. Ha causado problemas a muchas personas a lo largo de los años. A mí me funcionó hace mucho tiempo y lo publiqué de buena fe, pero claramente no es la forma de hacerlo. La tabla DATABASECHANGELOCK necesita tener cosas dentro, por lo que es una mala idea simplemente eliminar todo sin eliminar la tabla.

Leos Literak , por ejemplo, siguió estas instrucciones y el servidor no pudo iniciarse.

Respuesta original

Posiblemente se deba a que un proceso de liquibase cancelado no liberó su bloqueo en la tabla DATABASECHANGELOGLOCK. Entonces,

DELETE FROM DATABASECHANGELOGLOCK;

podría ayudarte.

Editar: la respuesta de @Adrian Ber proporciona una solución mejor que esta. Solo haga esto si tiene algún problema para resolver su solución.

e18r avatar May 22 '2015 09:05 e18r