Record that a post-fence transaction cannot be abandoned
Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
This commit is contained in:
parent
2e4a32c73f
commit
94dea451e5
1 changed files with 21 additions and 0 deletions
|
|
@ -496,6 +496,27 @@ world-readable, integrity protected by signature rather than by mode.
|
||||||
is writable by the workload, and a daemon that can rewrite its own signing
|
is writable by the workload, and a daemon that can rewrite its own signing
|
||||||
identity does not have one. Odin's topology identity moved to the runtime root.
|
identity does not have one. Odin's topology identity moved to the runtime root.
|
||||||
|
|
||||||
|
## A transaction past Fencing cannot be abandoned
|
||||||
|
|
||||||
|
`begin_pre_fencing_abort` is gated on `phase < DeploymentPhase::Fencing`. After
|
||||||
|
the fence, every error goes to `record_resumable_error` and the transaction
|
||||||
|
retries forever. There is no operator verb to cancel one, and no server-side
|
||||||
|
expiry -- `--timeout-seconds` bounds the `idunn up` client's wait, not the
|
||||||
|
transaction.
|
||||||
|
|
||||||
|
That is correct while a candidate can still recover. It is a trap when the
|
||||||
|
candidate never can: a transient unit with `Restart=no` that has failed will not
|
||||||
|
come back on its own, so the transaction holds the target and every later
|
||||||
|
command for it stays `queued` indefinitely.
|
||||||
|
|
||||||
|
Found the hard way during Odin's first deployment, and made unrecoverable by
|
||||||
|
deleting the target's write-lease record to fix its mode while a transaction
|
||||||
|
held it -- `observe_exact` then reports "physical write lease disappeared after
|
||||||
|
Granted became durable", which is exactly the tamper it is there to catch. Do
|
||||||
|
not remove a lease record, projection record or brake store belonging to a
|
||||||
|
transaction that is not terminal; change the mode in place, or fix the shape
|
||||||
|
that produced the mode and redeploy.
|
||||||
|
|
||||||
## Cutting over the authority
|
## Cutting over the authority
|
||||||
|
|
||||||
Idunn last, and not by deploying Idunn with Idunn.
|
Idunn last, and not by deploying Idunn with Idunn.
|
||||||
|
|
|
||||||
Loading…
Reference in a new issue