SHiNE-server/TODO/2026-06-26_1800_корректное_завершение_за_30с.md
2026-06-28 09:30:59 +04:00

41 lines
1.9 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

# 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`, если изменится поведение остановки/восстановления.