Pin mesh-sdk dbcaa29, so a held module's hold no longer spreads to the modules that read from it (issue 1960) #175

Merged
mesh-tools merged 2 commits from fix/1960-no-hold-spread into main 2026-10-29 15:35:33 +00:00
Showing only changes of commit 86a05babed - Show all commits
+9 -7
View File
@@ -315,9 +315,9 @@ func TestTheNodeComposesItsWantsFromTheBus(t *testing.T) {
}
// Issue 1126, the applying path (review of the seed): one module's own refusal holds that module alone. On novox,
// de-spiegel's unset route names (its manifest at the indexer's commit e25e1beb, captured) refused the whole node and
// marked all its modules not composed. Now lemurs is handed; de-spiegel is held, and proxy with it, which receives its
// routes: what was handed of de-spiegel stays handed, so the node keeps running it, and the agent is told those two
// alone, de-spiegel in its config form's words.
// marked all its modules not composed. Now lemurs and proxy are handed; de-spiegel is held alone (issue 1960: a hold
// never spreads to proxy, which composes without its routes, nor to its smtp provider): what was handed of de-spiegel
// stays handed, so the node keeps running it, and the agent is told it alone, in its config form's words.
spiegel, err := os.ReadFile("testdata/de-spiegel-e25e1beb.module.json")
if err != nil {
t.Fatal(err)
@@ -353,15 +353,17 @@ func TestTheNodeComposesItsWantsFromTheBus(t *testing.T) {
if u, ok := handed3[lemursKey3]; !ok || u.Deleted {
t.Errorf("lemurs, which composes, is not handed beside de-spiegel's refusal: %v (told %q)", handed3, *told)
}
if u, ok := handed3[proxyKey]; ok {
t.Errorf("proxy is handed without held de-spiegel's routes: %+v", u)
// Issue 1960: a hold never spreads. proxy is handed, composed without held de-spiegel's routes, which do not compose.
if u, ok := handed3[proxyKey]; !ok || u.Deleted {
t.Errorf("proxy is not handed beside held de-spiegel: %v (told %q)", handed3, *told)
}
if u, ok := handed3[spiegelKey]; ok {
t.Errorf("held de-spiegel is handed %+v, want what was handed of it kept", u)
}
if len(*told) != 1 || !strings.HasPrefix((*told)[0], "held de-spiegel: ") || !strings.Contains((*told)[0], "${config:praktijk-name}") ||
!strings.Contains((*told)[0], "held proxy: ") || strings.Contains((*told)[0], "held lemurs") {
t.Errorf("the agent was told %q, want de-spiegel held in its config form's words, and proxy", *told)
!strings.Contains((*told)[0], "without what it contributes to route") || strings.Contains((*told)[0], "held proxy") ||
strings.Contains((*told)[0], "held lemurs") {
t.Errorf("the agent was told %q, want de-spiegel held alone, in its config form's words, without its routes", *told)
}
// A read the bus did not answer, timed out or not, is tried again later; the run's own end and a refusal are not.