Я работаю над Гринвичской РЕЛИЗОВОЙ версией Spring Cloud.
Я создал задачу, связанную с моим сервером конфигурации.
Когда в моей Задаче возникает исключение, в случае, если я использую файл начальной загрузки, состояние Задачи никогда не будет ошибочным.
У меня правильный статус, когда я удаляю соединение с сервером конфигурации и добавляю файл приложения.
После расследования вот что я понимаю:
в классе BootstrapApplicationListener
был добавлен новый слушатель CloseContextOnFailureApplicationListener
. Этот слушатель поддерживает событие ApplicationFailedEvent
.
Чтобы поставить состояние задачи в состояние ошибки, прослушиватель TaskLifecycleListener
также основан на событии ApplicationFailedEvent
.
К сожалению, CloseContextOnFailureApplicationListener
сначала обрабатывает событие ApplicationFailedEvent
и возвращает событие ContextClosedEvent
с помощью метода context.close()
. Это событие завершает задание, но с помощью метода TaskLifecycleListener.stop()
, не обновляя тот факт, что задание выполнено с ошибкой.
После этого, наконец, TaskLifecycleListener
поддерживает событие ApplicationFailedEvent
, но, поскольку Задача уже завершена, состояние задачи не обновляется.
Как я могу запустить задачу с сервером конфигурации и иметь правильный статус (OK, KO)? Могу ли я изменить порядок слушателей так, чтобы событие ApplicationFailedEvent
сначала обрабатывалось TaskLifecycleListener
?
Спасибо.
Я исключил задачу с exitCode равным 1 (KO), но фактический exitCode равен 0 (OK).