Служба azure service fabric statelessservice не вызывает oncloseasync.

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

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

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

0
0
332
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

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

Stopping a node puts it into a stopped state where it is not a member of the cluster and cannot host services, thus simulating a down node. This is useful for injecting faults into the system to test your application.

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

After CloseAsync() finishes on each listener and RunAsync() also finishes, the service's StatelessService.OnCloseAsync() method is called, if present. OnCloseAsync is called when the stateless service instance is going to be gracefully shut down.

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

Спасибо за разъяснения, я не понимал, что перезапуск имитирует неисправность, но подумал, что это плавный перезапуск. Виноват. Есть ли способ вызвать плавный перезапуск службы? Я ничего не могу найти.

Phil Wright 28.10.2018 23:22

@PhilWright Эта почта может быть полезным.

Peter Bons 29.10.2018 08:20

Другие вопросы по теме