SHA256
Перенести backlog в TODO
This commit is contained in:
@@ -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`, если изменится поведение остановки/восстановления.
|
||||
|
||||
Reference in New Issue
Block a user