У меня нет опыта работы с CloudFoun dry. Я знаю, как использовать его для подключения служб к приложению, а также для ведения войны, файлов журналов и т. Д. c. Так стандартно. Но когда дело доходит до конфигурации и поведения CloudFoun dry, мои знания заканчиваются.
Моя проблема в том, что сразу после запуска моего приложения и завершения New Reli c он ведет журнал с точки зрения того, что он использует как сборщик эт c. Ячейка CloudFoun dry останавливает экземпляр. Я использую весеннюю интеграцию, которая отключает все из-за сигнала, отключающего jvm. Я также отключил несколько логических значений в своей базе данных для некоторых заданий. До этого момента все работает, и все в порядке.
Как только все выключено, CloudFoun dry начинает уничтожать контейнер для текущего экземпляра. После этого в журнале написано, что уничтожение прошло успешно. Но приложение все еще работает так же хорошо, как и экземпляр. Мое приложение по-прежнему регистрирует некоторые вещи (которые не являются закрытыми заданиями) здесь и тогда, и экземпляр, кажется, все еще жив и не «обновляется».
Кто-нибудь знает, почему это происходит? Должен ли я реализовать в Spring что-то, что блокирует уничтожение экземпляра? Или это конфигурация CloudFoun dry, которую мне нужно сделать?
Одна странность в том, что это происходит только раз в одноранговую неделю. Каждую ночь со среды по утро четверга. Почти в то же время.
Изменить: вот журнал, в котором я удалил всю сенситивную информацию.
Some logs which indicate that the app is still running as expected.
// I think this is the part where i gets interesting.
2020-07-09T00:44:09.87+0200 [CELL/0] OUT Cell XXX requesting replacement for instance XXX
2020-07-09T00:44:10.37+0200 [CELL/0] OUT Cell XXX creating container for instance XXX
2020-07-09T00:44:12.17+0200 [CELL/0] OUT Cell XXX successfully created container for instance XXX
Downloading droplet, starting the application and notice that it was shutted down unexpectedly. The indication for that is a flag in the database that hasn't been set to true which would happen during a proper shutdown.
2020-07-09T00:45:14.70+0200 [CELL/0] OUT Container became healthy
Some New Relic information which are not important for this question.
2020-07-09T00:45:19.94+0200 [CELL/0] OUT Cell XXX stopping instance XXX
This is the part where the application shuts down it's listeners and jobs.
2020-07-09T00:45:25.70+0200 [APP/PROC/WEB/0] OUT Exit status 143
2020-07-09T00:45:25.70+0200 [CELL/0] OUT Cell XXX destroying container for instance XXX
2020-07-09T00:45:25.88+0200 [PROXY/0] OUT Exit status 137
2020-07-09T00:45:26.07+0200 [CELL/0] OUT Cell XXX successfully destroyed container for instance XXX
2020-07-09T00:49:36.17+0200 [APP/PROC/WEB/0] OUT 2020-07-09T00:49:36,178+0200 Some log entry which indicates that the app is still alive
После этого приложение все еще работает (оно не было перезапущено между ними) можно снова запустить все задания, установив флаг в значение true, которое было установлено в значение false в коде обработчика выключения, чтобы никакие новые задания не запускались, пока приложение завершает работу.