-liquibase双重检查锁定模式? (如果一切最新的话,使Liquibase都不会获取锁)

问题描述 投票:0回答:2

如果应用程序崩溃(OOM /电源故障 /杀死-9)在Liquibase获得锁后,但是在释放锁之前,锁将永远保留在

databasechangeloglock
表中,我们需要手动将其删除。

我想知道是否有可能强制使用Liquibase进行应用:

    检查是否需要应用任何更改
  1. 没有锁
  2. 如果因此,获取锁,再次检查需求,依此类推。如果一切都是最新的 -
  3. 没有获取锁并继续启动带。
  4. 我希望它加快应用程序引导程序(当没有新迁移时)并减少将锁定锁定的机会。
目前,我只是创建一个

databasechangeloglock

春豆。我假设我需要创建一些自定义棘手的@conditionalon ...注释

您可以使用

Serviceloader
机制提供自己的

liquibase.integration.spring.SpringLiquibase
java spring locking database-migration liquibase
2个回答
1
投票
liquibase.lockservice.LockService

pg_try_advisory_lock
函数。当连接丢失时,锁会自动释放,从而使另一个连接获取。并尝试进行迁移。以下库支持以下数据库:
Mysql
mariadb

postgresql
  • oracle
  • MMSSQL
  • https://github.com/blagerweij/liquibase-sessionlock
liquibase已经使用fastCheck进行了1:

HEREHERHE

。那是相对较新的东西。 但是所接受的答案也很好!

0
投票
最新问题
© www.soinside.com 2019 - 2025. All rights reserved.