【发布时间】:2019-09-21 02:26:47
【问题描述】:
目前在容器化环境 (ECS) 中运行 SpringBoot 应用程序,我观察到容器在启动期间终止且仍持有 Liquibase 变更锁的情况。
这会导致之后旋转的所有容器出现问题,最终需要人工干预。
是否可以确保如果进程收到 SIGTERM,它会优雅地处理终止并释放锁?
我已经通过 InitProcessEnabled(在 CloudFormation 模板中)启用并使用“exec java ...”作为我们使用的 java 代理来确保容器正在接收信号,并在这种情况下正常关闭。
【问题讨论】:
-
您找到解决问题的方法了吗?我们的应用在 Wildfly 中运行时遇到了同样的问题。
-
现在在 Liqubase 存储库中创建问题:github.com/liquibase/liquibase/issues/1311
-
不,很遗憾我没有找到解决这个问题的方法,我们禁用了 liquibase 并采取了另一种方法。就我个人而言,我仍然很想知道它是如何进行的(我想我应该在他们的回购中提出一个问题)。
-
@bayetovsky 看看这里stackoverflow.com/a/65564995/1704634。使用 liquibase-sessionlock 扩展,一旦容器终止,它将自动释放锁。
标签: java spring-boot docker liquibase amazon-ecs