From fd3788c51744122cabfa673f84113a6cd7f3a7e4 Mon Sep 17 00:00:00 2001 From: jochen Date: Thu, 12 Nov 2026 02:21:03 +0100 Subject: [PATCH] Fix 10: the indexer's source catch-up and trunk directories are answered in name order, not a map's MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Kind: an order asserted or acted on that came from ranging a map. Builds: design 47 G §15, §115, §362 --- .../cmd/mesh-delivery-indexer/main_test.go | 2 +- .../mesh-delivery-indexer/cmd/mesh-delivery-indexer/named.go | 2 ++ .../cmd/mesh-delivery-indexer/named_test.go | 1 - .../mesh-delivery-indexer/cmd/mesh-delivery-indexer/source.go | 4 +++- 4 files changed, 6 insertions(+), 3 deletions(-) diff --git a/modules/mesh-delivery-indexer/cmd/mesh-delivery-indexer/main_test.go b/modules/mesh-delivery-indexer/cmd/mesh-delivery-indexer/main_test.go index fa510722..9eade6df 100644 --- a/modules/mesh-delivery-indexer/cmd/mesh-delivery-indexer/main_test.go +++ b/modules/mesh-delivery-indexer/cmd/mesh-delivery-indexer/main_test.go @@ -217,7 +217,7 @@ func TestTheSourceIsReadFromTheSeatAndASourceMovedDuringTheCatchUpIsReadAfterIt( s.catchUp(context.Background()) // The trunk, then each other watched branch the seat lists (a name unescaped), then what was heard meanwhile once each, // beta among them: main through the take-in, every other branch into its own revision (A-93). - want := []string{"read main", "apply main 4", "read ", "read beta", "branch beta 4", "read feat=2e1", "branch feat.1 4", "read main", "apply main 4", "read beta", "branch beta 4"} + want := []string{"read main", "apply main 4", "read ", "read beta", "branch beta 4", "read feat=2e1", "branch feat.1 4", "read beta", "branch beta 4", "read main", "apply main 4"} if !reflect.DeepEqual(order, want) { t.Errorf("order = %v, want %v", order, want) } diff --git a/modules/mesh-delivery-indexer/cmd/mesh-delivery-indexer/named.go b/modules/mesh-delivery-indexer/cmd/mesh-delivery-indexer/named.go index a08fda8c..c1218c42 100644 --- a/modules/mesh-delivery-indexer/cmd/mesh-delivery-indexer/named.go +++ b/modules/mesh-delivery-indexer/cmd/mesh-delivery-indexer/named.go @@ -8,6 +8,7 @@ import ( "fmt" "git.novox.be/novox/mesh-delivery/modules/mesh-delivery-checker/checkermsg" "path" + "slices" "strings" "git.novox.be/novox/mesh-delivery/contracts/go/clients/meshcatalogclient" @@ -110,6 +111,7 @@ func trunkVia(call toolCaller) func(ctx context.Context, repository, sha string) for dir := range a.Trees { dirs = append(dirs, dir) } + slices.Sort(dirs) // a map's order is random: the directories are answered in name order return dirs, nil } } diff --git a/modules/mesh-delivery-indexer/cmd/mesh-delivery-indexer/named_test.go b/modules/mesh-delivery-indexer/cmd/mesh-delivery-indexer/named_test.go index 0386dd2a..ec59b489 100644 --- a/modules/mesh-delivery-indexer/cmd/mesh-delivery-indexer/named_test.go +++ b/modules/mesh-delivery-indexer/cmd/mesh-delivery-indexer/named_test.go @@ -83,7 +83,6 @@ func TestTheTrunkIsTheDirectoriesTheForgeListsTrees(t *testing.T) { // 1900/AC3 if err != nil { t.Fatal(err) } - slices.Sort(dirs) if !slices.Equal(dirs, []string{"modules/a", "modules/b"}) { t.Errorf("dirs = %v", dirs) } diff --git a/modules/mesh-delivery-indexer/cmd/mesh-delivery-indexer/source.go b/modules/mesh-delivery-indexer/cmd/mesh-delivery-indexer/source.go index 16b62e1f..f7a37cac 100644 --- a/modules/mesh-delivery-indexer/cmd/mesh-delivery-indexer/source.go +++ b/modules/mesh-delivery-indexer/cmd/mesh-delivery-indexer/source.go @@ -4,6 +4,8 @@ import ( "context" "encoding/json" "fmt" + "maps" + "slices" "strings" "sync" @@ -71,7 +73,7 @@ func (s *sourceFollow) catchUp(ctx context.Context) { branches := s.waiting s.waiting = nil s.mu.Unlock() - for branch := range branches { + for _, branch := range slices.Sorted(maps.Keys(branches)) { // a map's order is random: the branches are read in name order s.take(ctx, branch) } }