Nothing the control queue carries is lost while the store restarts: an enrolment claims its token and spends it last, and is asked to try again; build results, upgrades and catch-ups are handed back, bounded (novox/hq issue 083)

This commit is contained in:
2026-09-22 14:06:28 +02:00
parent b9cdb96a90
commit 1a41b88ed3
8 changed files with 433 additions and 59 deletions
@@ -0,0 +1,11 @@
-- A token is claimed by the enrolment presenting it, and spent only when that enrolment has
-- written everything it needs (novox/hq 04-ISSUES/083).
--
-- Spending came first and the node's keys after, in another database: a store that went away
-- between the two left a spent token and a node with no key, and the host — which makes new keys
-- on every attempt — could not try again. The claim holds the token for one presenter for a short
-- lease, so an attempt that failed part-way can be made again by the same presenter, and a second
-- presenter cannot interleave with the first.
alter table enrolment_token add column claimed_by text;
alter table enrolment_token add column claimed_until timestamptz;