# Graceful shutdown на 30 секунд ## Зачем Чтобы при `restart` или `stop` сервер получал небольшой запас времени на завершение опасных операций: - текущий `AddBlock`; - full resync цепочки; - очистку marker-file; - дописывание временных файлов. Это должно уменьшить число случаев, когда приходится потом добирать хвост recovery-логикой. ## Что сделать 1. На стороне `systemd` задать `TimeoutStopSec=30s`. 2. В коде добавить корректную обработку shutdown-сигнала: - перестать принимать новые блоки и sync-задачи; - дождаться текущих операций; - выйти в пределах таймаута. 3. При необходимости закрывать текущие ресурсы аккуратно: - сетевые соединения; - фоновые 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`, если изменится поведение остановки/восстановления.