v0.175.0 — R-82: a tier that overruns the quiesce bound defers the rest
Operator ruling 2026-07-26: let the first backup run as long as needed; other backups shouldn't start until finished. A first FULL offsite snapshot runs for hours, far past max_quiesce. When that bound elapses the app resumes (unchanged), but the loop then started the NEXT tier while the first was still uploading. Now it breaks and defers the rest to a later poll — vzdump still holds the guest lock, so the second start would be refused by the agent (409, v0.99.0) or fail on the lock, and a failed backup never satisfies a cadence, so the tier would retry into the same wall forever. pollTier returns (phase, stillRunning, err). The app still resumes exactly once. Red-proof observed and restored; full suite green.
This commit is contained in:
@@ -1,5 +1,28 @@
|
||||
## Changelog
|
||||
|
||||
### v0.175.0 — R-82: a tier that overruns the quiesce bound defers the rest (2026-07-26)
|
||||
|
||||
Operator ruling 2026-07-26: *"let the first backup run as long as needed; other backups shouldn't
|
||||
start until finished."*
|
||||
|
||||
A first FULL offsite snapshot legitimately runs for **hours** — far past `max_quiesce`. When that
|
||||
bound elapses the app resumes (correct, and unchanged), but `quiesceAndPollTiers` then moved on and
|
||||
started the NEXT tier while the first was still uploading. That is now a `break`: the remaining tiers
|
||||
are deferred to a later poll.
|
||||
|
||||
Why it matters: vzdump still holds the guest lock, so the second start would be **refused by the
|
||||
agent (409, v0.99.0)** or fail on the lock — and a failed backup never satisfies a cadence, so the
|
||||
tier would stay permanently due and retry into the same wall every poll.
|
||||
|
||||
`pollTier` now returns `(phase, stillRunning, err)`; `stillRunning` means the bound elapsed with the
|
||||
backup still going. Nothing else changed — the app still resumes exactly once, on the same guard.
|
||||
|
||||
**Tests:** `TestTierOverrunsQuiesceBound_RemainingTiersDeferred`. Red-proof observed: dropping the
|
||||
`break` starts the second tier and the test fails with
|
||||
`the second tier MUST NOT start while the first is still running; started=[local felhom-pbs]`.
|
||||
Restored; full suite green.
|
||||
|
||||
|
||||
### v0.174.0 — R-82 Slice B: one quiesce window, two backup tiers (2026-07-26)
|
||||
|
||||
**MinAgent UNCHANGED — deliberately.** This release degrades gracefully against ANY older agent; it
|
||||
|
||||
Reference in New Issue
Block a user