From cddaf14cd0fa5e3919cd0752917a3fac44407b98 Mon Sep 17 00:00:00 2001 From: jochen Date: Tue, 10 Nov 2026 04:11:07 +0100 Subject: [PATCH] =?UTF-8?q?D7a:=20the=20assigner,=20the=20indexer=20and=20?= =?UTF-8?q?the=20builder=20ask=20a=20node's=20manifest-reads=20once=20befo?= =?UTF-8?q?re=20the=20kept=20call,=20so=20a=20node=20that=20answers=20noth?= =?UTF-8?q?ing=20reads=20as=20its=20fallback=20at=20once=20(issue=201966,?= =?UTF-8?q?=20ADR=200668=20=C2=A73;=20review=20round=201,=20finding=201)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Claude-Session: https://claude.ai/code/session_01JG73KEq4zoDfM9WtYpcQgZ --- .../mesh-delivery-assigner/cmd/mesh-delivery-assigner/main.go | 1 + modules/mesh-delivery-builder/cmd/mesh-delivery-builder/main.go | 1 + modules/mesh-delivery-indexer/cmd/mesh-delivery-indexer/main.go | 1 + 3 files changed, 3 insertions(+) diff --git a/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/main.go b/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/main.go index 1f51d4bc..9fb35753 100644 --- a/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/main.go +++ b/modules/mesh-delivery-assigner/cmd/mesh-delivery-assigner/main.go @@ -317,6 +317,7 @@ func follow(ctx context.Context, js jetstream.JetStream, nc process.Subscriber, reads := &enginereads.Keeper{Fallback: w.recordReads, Changed: wake, Logf: logger.Printf} if bus != nil { reads.Call = bus.CallKeptOn // a kept call, called again through a transport fault (ADR 0668 §1) + reads.Once = bus.CallOn // its fault keeps the fallback at once while the kept call asks on (ADR 0668 §3) } if kv := kvs[engineReadsBucket]; kv != nil { reads.Put = func(node string, v []byte) error { _, err := kv.Put(ctx, node, v); return err } diff --git a/modules/mesh-delivery-builder/cmd/mesh-delivery-builder/main.go b/modules/mesh-delivery-builder/cmd/mesh-delivery-builder/main.go index 71dd3e3d..71e15570 100644 --- a/modules/mesh-delivery-builder/cmd/mesh-delivery-builder/main.go +++ b/modules/mesh-delivery-builder/cmd/mesh-delivery-builder/main.go @@ -270,6 +270,7 @@ func run(ctx context.Context, getenv func(string) string, logOut io.Writer) erro // What each counted node's engine reads (ADR 0618 §2, ADR 0624 §1): asked through the node-engine seat's verb as the // builder's own account, for every node the assignments names, and kept in the state engine-reads once it is bound. reads := newEngineReads(calls.CallKeptOn, gate, logger.Printf) + reads.keeper.Once = calls.CallOn // its fault keeps the last statement at once while the kept call asks on (ADR 0668 §3) // The old reference form's window over them (DLV-B9), kept in the state old-form once it is bound; builder_old_form // reads it and drops a retired node by hand. reads.ctx = context.WithoutCancel(ctx) diff --git a/modules/mesh-delivery-indexer/cmd/mesh-delivery-indexer/main.go b/modules/mesh-delivery-indexer/cmd/mesh-delivery-indexer/main.go index 23d17e0e..d973cc3f 100644 --- a/modules/mesh-delivery-indexer/cmd/mesh-delivery-indexer/main.go +++ b/modules/mesh-delivery-indexer/cmd/mesh-delivery-indexer/main.go @@ -493,6 +493,7 @@ func run(ctx context.Context, getenv func(string) string, logOut io.Writer) erro // §2): asked through the node-engine seat's verb as the indexer's own account, for every node the assignments names, // kept in the state engine-reads once it is bound; each change weighs the holds again. reads := newEngineReads(calls.CallKeptOn, gate, func() { ix.KickHolds(ctx) }, logger.Printf) + reads.keeper.Once = calls.CallOn // its fault keeps the last statement at once while the kept call asks on (ADR 0668 §3) gate.OnPlaced = reads.placed ix.Counted, ix.AskEngines = reads.counted, reads.ask // The holds, new with ADR 0632 (issue 1790's kind), bound when they appear: until then a merge that would hold a