v0.335.0: no app stop for a tier the agent will refuse because its host is busy (host_busy pre-check, R-921)
gates / gates (push) Successful in 53s

This commit is contained in:
2026-10-19 20:05:52 +02:00
parent db980ff2cc
commit 15ea002458
9 changed files with 282 additions and 13 deletions
+6
View File
@@ -1410,6 +1410,12 @@ The nightly backup has two phases that run sequentially. All paths are **per-dri
> the three daily legs via `scheduler.UpdateDaily` and takes effect **without a restart**. Precedence:
> settings > controller.yaml `db_dump_schedule` > "02:30". See `internal/backupwindow`.
> **Check first, stop second (v0.305.0 / v0.335.0, R-921).** Before any app is stopped for a whole-guest tier the loop
> asks the agent whether it would refuse: another tier's job in flight (`GET /backup/status?target=…`), or — with an
> agent that serves it — its host-wide heavy-operation gate held (`host_busy`: another guest's backup, the restore
> test, the night OS step). Then no app is stopped; a held gate is recorded as contention (retry in 15 min, one
> „BLOCKED" alarm after 3 h). An agent without `host_busy` keeps the old order (stop, ask, resume at once on 409).
> **Absent-storage tier skip (v0.243.0, R-518).** A tier whose storage the agent (≥ 0.131.0) reports `absent` is dropped from the manual and the scheduled run before anything is stopped (`quiesce.skipAbsentTiers`), logged, and reported once as `backup_tier_skipped`. `unknown` or a legacy agent is never skipped.
> **OOM visibility (v0.243.0, R-514).** The 30 s dead-app check also reads `State.OOMKilled` for running app containers (`Manager.ScanOOMKilled`); the dashboard shows „Memória elfogyott" and the hub gets `app_oom` once per container run. The controller does not restart the app.