2017-02-17 32 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

相關問題