From becff66e0a8a9f4a1b8d9d3654f0b6ed5ea5c077 Mon Sep 17 00:00:00 2001 From: jochen Date: Tue, 13 Oct 2026 06:09:50 +0200 Subject: [PATCH] Register R348: a fault from before a send failed the builds sent after it (hq issue 348) Proved with replays/cmd/prove: it fails on mesh-controller #179's first parent and passes on the fix. The resolver's half (mesh-catalog #161) has no replay: the module had no Go before it, and the binding's loss never reproduced past its burst; the entry says so. --- replays/register.go | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/replays/register.go b/replays/register.go index c133795..3a5ce65 100644 --- a/replays/register.go +++ b/replays/register.go @@ -530,6 +530,25 @@ var Register = []Replay{ "the fixed module plans it at the later merge's commit, and one does", Package: "./cmd/mesh-controller", Test: "TestReplay349", Files: []string{"cmd/mesh-controller/replay349_test.go"}, Home: "mesh-controller", HomeRef: "5740874ce3b99b47c27403f33e6c6d2a334ad3d7"}, + // A resolver that stopped answering ran on unnoticed, and builds sent after it were blamed for it (2026-10-09): + // the control node's resolver refused every question on its private address from 10:57:57 UTC and the machine's + // network condition was raised at 10:58:45. The controller and the node-engine sent at 10:59:34 failed their gate + // with "raised since it was sent", because the restarted engine's first, undecided statement cleared the condition + // and its next look raised it anew after the send. A test of its own in the controller, written with only what it + // had before — a mesh, stateHealth, the keeper's open conditions, aboutTheMachine — laid over the commit before. + // Needs a store: MESH_TEST_POSTGRES. Fix is the merge of its pull request (mesh-controller #179); Home is the + // commit that added the replay, reachable once its pull request merges. The resolver's own half — it binds each + // address once and its watch asks it a real question and restarts it (mesh-catalog #161, 105cc7c0) — has no + // replay here: the module had no Go before that fix, and the binding's loss was never reproduced past the burst + // that caused it (hq issue 348's diagnosis); dnsmasq's own tests and the controller's manifest test hold it. + {ID: "R348", Issue: 348, Kind: InRepository, Repository: "mesh-controller", Fix: "9ca7952d5e0a5ed1e23bdcf5aea36fe967e62d14", + What: "a network fault raised before a send was cleared by a restarted node-engine's undecided statement and " + + "raised again after it, and the gate put back the builds sent after the fault began", + Asserts: "a build sent while the machine's network condition is open, which flaps after the send, is not held " + + "for it, and an undecided statement does not clear the condition", + Package: "./cmd/mesh-controller", Test: "TestReplay348AFaultFromBeforeTheSendFailsNoGate", + Files: []string{"cmd/mesh-controller/replay348_test.go"}, + Home: "mesh-controller", HomeRef: "6eea92c323f4862d4162f9d977c8783d8a62efc3"}, } // Find is the replay of that id, or of that issue. -- 2.54.0