2017-02-17 217 views
1

在我们的构建服务器中,我们有许多特征分支针对一个数据库进行部署。问题是有时候,一个分支中的一些错误脚本会导致LB在不释放锁的情况下退出。问题是没有简单的方法来找出哪个分支造成这种情况。由于分支机构发生新的变化,我们可能会不断部署多达30个分支机构。如何让Liquibase将更多数据添加到DATABASECHANGELOGLOCK表中?

是否有任何方式(或者我们是否可以在Liquibase中有新特性)设置实例名称并且名称可以存储在表DATABASECHANGELOGLOCK的LOCKEDBY列中,以便我们可以轻松找出造成问题的分支/实例?

目前,LOCKEDBY只有IP,它对所有实例都是相同的。

回答

1

我认为要实现这一目标,你需要在这里的某个地方修补Liquibase:

https://github.com/liquibase/liquibase/blob/ed4bd55c36f52980a43f1ac2c7ce8f819e606e38/liquibase-core/src/main/java/liquibase/lockservice/DatabaseChangeLogLock.java

https://github.com/liquibase/liquibase/blob/ed4bd55c36f52980a43f1ac2c7ce8f819e606e38/liquibase-core/src/main/java/liquibase/lockservice/StandardLockService.java

到表中获取额外的变量在某种程度上(属性文件/环境变量/等)和存储。

顺便说一句,小心使用相同的数据库实例部署多个分支,因为您可能会更改一个分支的DB结构,这将打破另一个分支。

2

您可以指定它得到插入LOCKEDBY列的系统属性:

System.setProperty("liquibase.hostDescription", "some value"); 
+0

感谢。我们意识到它使用主机名,因为我们的应用程序被部署在码头容器中,并且我们没有为它指定名称,它使用的是IP地址。现在我们设置名称,并插入正确的名称而不是IP – xbmono

相关问题