Na naszym serwerze BUILD mamy wiele oddziałów funkcji, zostaje wdrażane w stosunku do jednej bazy danych. Problemem jest czasami niektóre skrypty buggy w jednej gałęzi, powodują wyjście LB, aby wyjść bez zwolnienia zamka. Problem polega na tym, że nie ma łatwego sposobu, aby dowiedzieć się, jaką oddział powodował. Możemy stale wdrożyć do 30 oddziałów, ponieważ istnieją nowe zmiany przeciwko gałęzi.

Czy jest jakiś sposób (lub czy możemy mieć nową funkcję w Liquibase), aby ustawić nazwę instancji, a nazwa może być przechowywana w kolumnie Lockedby Table DataBasechangeloglock, dzięki czemu możemy łatwo dowiedzieć się, jaką oddział / instancja spowodowała problem?

Obecnie Lockedby ma tylko IP, który jest taki sam dla wszystkich instancji.

1
xbmono 17 luty 2017, 06:19

2 odpowiedzi

Najlepsza odpowiedź

Myślę, że to osiągnąć, musisz patrzeć na skądś tutaj?

https://github.com/liquibase/LIQUIBASE/BLOB/ED4BD55C36F52980A43F1AC2C7CE8F819E606E38/LIQUIBASE-CORE/SRC/main/java/liquibase/lockservice/databasechangeloglock.java.

https://github.com/liquibase/liquibase/blob/ed4bd55C36F52980A43F1AC2C7C8CE8F819E606E38/LIQUIBASE-CORE/SRC/main/java/liquibase/lockservice/standardlockservice.java.java.

Aby pobrać dodatkową zmienną w jakiś sposób (zmienna do pliku właściwości / ENV Env / ETC) oraz przechowywać w tabeli.

BTW uważaj za pomocą wdrażania wielu oddziałów z tym samym instancją bazy danych, ponieważ jest to możliwe, że dokonasz zmiany struktury DB dla jednej gałęzi, która przerwie kolejna.

1
dbf 17 luty 2017, 12:24

Możesz określić właściwość systemu, która otrzymuje wstawkę do kolumny LockedBy :

System.setProperty("liquibase.hostDescription", "some value");
2
Jürgen Obernolte 8 marzec 2017, 09:29