fix(tradein/scheduler): boot-reap виден и при нуле — молчащий механизм неотличим от неподключённого (#3122)
All checks were successful
CI Trade-In / changes (pull_request) Successful in 8s
CI Trade-In / browser-tests (pull_request) Has been skipped
CI / changes (pull_request) Successful in 10s
CI Trade-In / frontend-checks (pull_request) Has been skipped
CI / backend-tests (pull_request) Has been skipped
CI / frontend-tests (pull_request) Has been skipped
CI / openapi-codegen-check (pull_request) Has been skipped
CI Trade-In / backend-tests (pull_request) Successful in 4m45s

Первая живая приёмка #3122: деплоевский startup-reap успел снять зомби
раньше, boot-reap отработал с нулём — и не оставил НИКАКОГО следа
исполнения. Ноль — штатный исход, но «сторож, молчащий при нуле» — это
слепая зона по построению: оборванную проводку не отличить от чистого
прода. INFO-строка при нуле, warning при снятых — как было.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
bot-backend 2026-08-27 14:33:06 +05:00
parent dea08a0523
commit 3c315b5105

View file

@ -451,6 +451,12 @@ def reap_boot_zombies(db: Session, boot_time: datetime) -> int:
len(rows),
[(r.id, r.source) for r in rows],
)
else:
# Ноль — штатный исход (деплоевский startup-reap обычно успевает раньше),
# но исполнение обязано быть видимым: молчащий при нуле механизм
# неотличим от неподключённого (первая же живая приёмка #3122 это
# показала — оборванную проводку было бы не отличить от чистого прода).
logger.info("scheduler: boot-reap — прогонов предыдущего контейнера нет (0)")
return len(rows)