Delete the declarations' stream once every node runs the new node-engine, and assert it no more (issue 1945, B13)

A node away during the switch finds its last declaration on the stream; once every node's have names the
node-engine registered, no node reads one, so the stream and the nodes' consumers on it go, said once, and a raise
leaves them out (ADR 0539 clause 11).
This commit is contained in:
2026-10-24 17:28:10 +02:00
parent 03894e5e51
commit b4a62e9e6e
8 changed files with 246 additions and 4 deletions
+7 -1
View File
@@ -29,7 +29,13 @@ func assertBusObjects(ctx context.Context, inv *inventory.Inventory, r broker.Ra
for _, n := range nodes {
names = append(names, n.Name)
}
if err := broker.Raise(r, names); err != nil {
// Once every node runs the node-engine that reads no declaration, the declarations' stream and the nodes'
// consumers on it are not asserted again (novox/hq ADR 0539 clause 11; composed_start.go retires them).
raise := func() error { return broker.Raise(r, names) }
if declarationsRetiredNow(ctx, inv) {
raise = func() error { return broker.RaiseAfterDeclarations(r) }
}
if err := raise(); err != nil {
return nil, err
}
// And each node's bucket for the files of its declaration that travel by digest (novox/hq ADR 0486 §4), so a node finds its own