2017-02-17 17 views
1

На нашем сервере сборки у нас есть несколько ветвей функций, которые развертываются в одной базе данных. Проблема в том, что иногда некоторые ошибки в одном ветви приводят к выходу LB без освобождения блокировки. Проблема в том, что нет простого способа узнать, какая отрасль вызвала это. У нас может быть до 30 филиалов, которые постоянно развертываются, так как новые изменения произошли в отрасли.Как получить Liquibase для добавления дополнительных данных в таблицу DATABASECHANGELOGLOCK?

Есть ли способ (или у нас есть новая функция в Liquibase) для установки имени экземпляра, и имя может быть сохранено в столбце LOCKEDBY таблицы DATABASECHANGELOGLOCK, чтобы мы могли легко узнать, какая ветвь/экземпляр вызвала проблему?

В настоящее время 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

принести дополнительную переменную каким-то образом (свойств файла/окр переменной/и т.д.) и хранить в таблице ,

Btw, будьте осторожны при развертывании нескольких ветвей с одним и тем же экземпляром базы данных, так как возможно, что вы внесете изменения в структуру БД для одной ветви, которая сломает другую.

2

Вы можете указать свойство системы, которая получает вставки в LOCKEDBY колонки:

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

Спасибо. Мы поняли, что он использует имя хоста и потому, что наше приложение развертывается в контейнере докеров, и мы не указали ему имя, он использовал ip-адрес. Теперь мы задаем имя, и вместо него вставлено правильное имя, а не ip – xbmono

 Смежные вопросы

  • Нет связанных вопросов^_^