v0.102.0 — R-82 Slice D: an unprovisioned tier DEFERS instead of failing
Prerequisite for the installer default (host-install 1.20.0). A fresh box now carries the offsite tier, but felhom-pbs only exists once the hub provisions the DR tier. Without this the tier would report due in that window and the controller would quiesce the apps and fire a vzdump at a missing storage every cadence. - GET /backup/due?target= defers when the target storage is absent (targetStoragePresent): due:false with a reason that says why. The tier goes live with NO restart once the storage appears. Fail-safe: a storage-view ERROR returns present and the tier stays due. 'I could not check' must never be read as 'not there' — that would silently suppress backups, the absence-is-not-failure rule relearned three times now (R-80, R-81, the R-82 wait timeout). Full suite green.
This commit is contained in:
@@ -1,3 +1,28 @@
|
||||
## v0.102.0 — R-82 Slice D: an unprovisioned tier DEFERS instead of failing (2026-07-26)
|
||||
|
||||
Prerequisite for putting the offsite tier into the installer defaults (host-install 1.20.0).
|
||||
|
||||
A fresh box now carries the offsite tier in its config, but `felhom-pbs` does not exist until the hub
|
||||
provisions the DR tier (`felhom-pbs-apply`). Without this change the tier would report **due** in
|
||||
that window, so the controller would quiesce the apps and fire a vzdump at a storage that is not
|
||||
there — **every cadence, until provisioning happens**.
|
||||
|
||||
### Changed
|
||||
- **`GET /backup/due?target=…` DEFERS when the target storage is absent**
|
||||
(`Server.targetStoragePresent`): `due:false`, reason *"target storage not present yet — tier
|
||||
deferred until it is provisioned"*. The tier stays silent until it is real and goes live with **no
|
||||
restart** the moment the storage appears.
|
||||
|
||||
**Fail-safe, and it is the point:** a storage-view ERROR returns `present` and the tier stays due.
|
||||
*"I could not check"* must never be read as *"not there"* — reading it that way would silently
|
||||
suppress backups, which is the absence-is-not-failure rule this project has now relearned three
|
||||
times (R-80, R-81, and the R-82 wait-timeout). Pinned by
|
||||
`TestBackupDue_StorageViewError_DoesNotSuppress`.
|
||||
|
||||
### Tests
|
||||
`TestBackupDue_TargetStorageMissing_Defers` (deferral + a reason that says WHY, so it is
|
||||
distinguishable from a healthy tier) and the fail-safe above. Full suite green.
|
||||
|
||||
## v0.101.0 — R-82: a leaked restore-test scratch can no longer auto-start (2026-07-26)
|
||||
|
||||
**Correction first, because it matters more than the fix.** I reported earlier in this arc that the
|
||||
|
||||
Reference in New Issue
Block a user