Raise a check's store without durability and remove what earlier holders left (hq issue 306)
mesh/merge-gate pass: builds build-agent, mesh-controller, route-proxy → ace, g14, novox, shanks; no bus step; every machine composes with the change as it…
mesh/repo-check pass: its merge-check.sh passed
mesh/delivery delivered

On the control node the store-bound packages of the controller's suite ran
five to seven times slower than on any other holder, and every controller
check that landed there ran past the suite's thirty minutes: a throwaway
store flushing to a disk the mesh's own store, bus and forge keep busy.
A store that lives for one check needs no crash safety.

A holder recreated mid-check left the check's store and bus running, and
the redelivery went to another machine, so nothing removed them: eleven
pairs across four machines. A starting holder has taken nothing, so every
container labelled with an ask of the seat is an earlier holder's.
This commit is contained in:
jochen
2026-10-08 10:20:28 +02:00
parent c714d07739
commit 85b2a1855b
7 changed files with 178 additions and 1 deletions
+37
View File
@@ -101,3 +101,40 @@ func TestAKillRemovesTheContainersLabelledWithTheBuild(t *testing.T) {
t.Errorf("ran %v", ran)
}
}
// **Issue 306**: a holder starting removes what earlier holders on its machine left — every container
// labelled with an ask of the seat — and nothing labelled otherwise.
func TestAStartingHolderRemovesWhatEarlierHoldersLeftAndNothingElse(t *testing.T) {
var ran [][]string
run := func(_ context.Context, _ string, name string, args ...string) (string, error) {
ran = append(ran, append([]string{name}, args...))
if args[0] == "ps" {
return "c1 build-1791418000320743455\nc2 build-1791418000320743455\n" +
"c3 check-here-1791418000320743455\nc4 check-test-17\nc5 build-x\nc6 build-\n\nc7 build-1791319895953076871\n", nil
}
return "", nil
}
n, err := RemoveLeftBehind(context.Background(), run)
if err != nil {
t.Fatal(err)
}
if n != 3 {
t.Errorf("removed %d", n)
}
if len(ran) != 2 || !reflect.DeepEqual(ran[1], []string{"docker", "rm", "-f", "c1", "c2", "c7"}) {
t.Fatalf("ran %v", ran)
}
if !strings.Contains(strings.Join(ran[0], " "), "--filter label=mesh.build") {
t.Errorf("listed with %v", ran[0])
}
// Nothing left behind: nothing removed, and no rm asked.
ran = nil
quiet := func(_ context.Context, _ string, name string, args ...string) (string, error) {
ran = append(ran, append([]string{name}, args...))
return "c3 check-here-1\n", nil
}
if n, err := RemoveLeftBehind(context.Background(), quiet); err != nil || n != 0 || len(ran) != 1 {
t.Errorf("with nothing of the seat's: %d %v %v", n, err, ran)
}
}