1.9 KiB
1.9 KiB
Graceful shutdown на 30 секунд
Зачем
Чтобы при restart или stop сервер получал небольшой запас времени на завершение опасных операций:
- текущий
AddBlock; - full resync цепочки;
- очистку marker-file;
- дописывание временных файлов.
Это должно уменьшить число случаев, когда приходится потом добирать хвост recovery-логикой.
Что сделать
- На стороне
systemdзадатьTimeoutStopSec=30s. - В коде добавить корректную обработку shutdown-сигнала:
- перестать принимать новые блоки и sync-задачи;
- дождаться текущих операций;
- выйти в пределах таймаута.
- При необходимости закрывать текущие ресурсы аккуратно:
- сетевые соединения;
- фоновые executor-ы;
- временные marker-файлы.
Что уже есть
BlockchainTmpRecoveryOnStartupиBlockchainResyncRecoveryOnStartupуже умеют добирать незавершённые хвосты после старта.AddBlockуже стал crash-safe черезtmp_bch/write_check/write_pending.
Откуда продолжать
- начать с
systemd-юнита и базового shutdown-hook в сервере; - затем проверить, что текущие операции реально завершаются в отведённые 30 секунд.
Какие документы потом обновить
Dev_Docs/deploy/;Dev_Docs/Blockchain/sync-between-servers.md, если изменится поведение остановки/восстановления.