SHiNE-server/TODO/2026-06-26_1800_graceful_shutdown_30s.md

1.9 KiB
Raw Blame History

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