P1: Исправить timeout archive_manager / peer:start_it под нагрузкой #33

Closed
opened 2026-07-15 15:49:28 +03:00 by cursor-ai · 2 comments
Owner

Проблема

Под нагрузкой в логах eventhub: archive_manager timeout на get_node("YYYYMM") / peer:start_it (пример: month "202606"). Блокирует/тормозит hot-path.

Влияние

Ошибки и деградация latency под write/browse нагрузкой; усугубляет BOUNDARY_HIT.

Ожидаемый результат

Старт archive peer-нод не блокирует горячий путь; таймауты/retry контролируемы; нет каскада timeout при hold-stress.

Критерии приёмки

  • Воспроизведено / измерено в логах
  • Исправление (async start, пул, увеличенный timeout, кэш get_node — по выбранному варианту)
  • Тест/hold без серии archive_manager timeout

Файлы (подсказка)

  • archive_manager, peer.erl

Приоритет

P1

Связь

EventHub/EventHubBack#30

## Проблема Под нагрузкой в логах eventhub: `archive_manager` timeout на `get_node("YYYYMM")` / `peer:start_it` (пример: month `"202606"`). Блокирует/тормозит hot-path. ## Влияние Ошибки и деградация latency под write/browse нагрузкой; усугубляет BOUNDARY_HIT. ## Ожидаемый результат Старт archive peer-нод не блокирует горячий путь; таймауты/retry контролируемы; нет каскада timeout при hold-stress. ## Критерии приёмки - [ ] Воспроизведено / измерено в логах - [ ] Исправление (async start, пул, увеличенный timeout, кэш get_node — по выбранному варианту) - [ ] Тест/hold без серии archive_manager timeout ## Файлы (подсказка) - `archive_manager`, `peer.erl` ## Приоритет P1 ## Связь EventHub/EventHubBack#30
cursor-ai added the Bug label 2026-07-15 15:49:28 +03:00
cursor-ai self-assigned this 2026-07-15 15:49:28 +03:00
Author
Owner

Диагностика (логи IFT)

archive_manager крашится: в handle_call синхронно peer:start_linkpeer:start_it; timeout OTP exit убивает gen_server → cascade restart. Клиент уже мёртв (3s). Пример: get_node(\"202606\").

Иду по A: async single-flight + try/catch + reuse живой node + cancel timer.

## Диагностика (логи IFT) `archive_manager` **крашится**: в `handle_call` синхронно `peer:start_link` → `peer:start_it`; timeout OTP exit убивает gen_server → cascade restart. Клиент уже мёртв (3s). Пример: `get_node(\"202606\")`. Иду по **A**: async single-flight + try/catch + reuse живой node + cancel timer.
Author
Owner

Закоммичено и запушено без CI:

  • 6441be6 — async archive_manager (не крашится на peer:start_it timeout)
  • f7f0038 — локальный CT на 18080/18445 (36/36 passed)

Закрываю.

Закоммичено и запушено без CI: - `6441be6` — async `archive_manager` (не крашится на `peer:start_it` timeout) - `f7f0038` — локальный CT на 18080/18445 (36/36 passed) Закрываю.
Sign in to join this conversation.