Перенести backlog в TODO

This commit is contained in:
AidarKC
2026-06-28 09:30:59 +04:00
parent 0cdcc77606
commit c93cc6c522
17 changed files with 39 additions and 51 deletions
@@ -0,0 +1,40 @@
# 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`, если изменится поведение остановки/восстановления.