Azure Service Fabric StatelessService не вызывает OnCloseAsync - PullRequest
0 голосов
/ 26 октября 2018

У меня есть простой StatelessService, и я хочу знать, когда он закрывается, чтобы я мог выполнить некоторую быструю очистку.Но он никогда не вызывает OnCloseAsync.

Когда служба работает, и я использую команду «Перезапустить» на работающем узле через обозреватель Service Fabric, он удаляет службы и перезапускает узел.Но он никогда не вызывает переопределение OnCloseAsync, даже если он заведомо закрывается.

И при этом он не сигнализирует cancellationToken, который передается в метод RunAsync.Таким образом, нет никаких признаков того, что служба закрыта.Существуют ли обстоятельства, когда он вызывает OnCloseAsync, потому что в данный момент я не вижу в этом особого смысла.

1 Ответ

0 голосов
/ 26 октября 2018

Интересно, почему вы запускаете команду restart, какое поведение вы ожидаете?Однако это объясняет поведение, которое вы видите.Начиная с документов (имейте в виду, что перезапуск - это просто комбинированный останов и запуск)

Остановка узла переводит его в состояние останова, когда он не является членомкластер и не может размещать службы, имитируя тем самым отключенный узелЭто полезно для введения ошибок в систему для проверки вашего приложения.

Теперь, если мы посмотрим на жизненный цикл , мы прочитаем это:

После того, как CloseAsync () завершится на каждом слушателе и RunAsync ()также завершается, вызывается метод StatelessService.OnCloseAsync (), если таковой имеется.OnCloseAsync вызывается, когда экземпляр службы без сохранения состояния будет корректно завершен .

Таким образом, основная проблема заключается в том, что служба не завершается корректно.Команда перезапуска убивает процесс, и отмены не будет.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...