From 45f4edbb36bb6722c8fe97d84a7abd757df03e06 Mon Sep 17 00:00:00 2001 From: jochen Date: Thu, 5 Nov 2026 15:23:30 +0100 Subject: [PATCH] =?UTF-8?q?minio=20reads=20who=20holds=20a=20seat=20throug?= =?UTF-8?q?h=20the=20placement=20client=20and=20the=20seat's=20state=20nam?= =?UTF-8?q?e,=20not=20go/delivery=20(B5e;=20ADR=200634=20=C2=A71,=20=C2=A7?= =?UTF-8?q?4;=20issue=201966)?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit Claude-Session: https://claude.ai/code/session_01NcbgfFSnn24M3GcqttoU7i --- modules/minio/cmd/object-store/main.go | 12 ++++++++---- modules/minio/cmd/object-store/manifest_test.go | 3 ++- modules/minio/cmd/object-store/server.go | 4 ++-- modules/minio/go.mod | 2 ++ 4 files changed, 14 insertions(+), 7 deletions(-) diff --git a/modules/minio/cmd/object-store/main.go b/modules/minio/cmd/object-store/main.go index 000e67bd3..9d5b1596c 100644 --- a/modules/minio/cmd/object-store/main.go +++ b/modules/minio/cmd/object-store/main.go @@ -12,11 +12,11 @@ package main import ( "context" "fmt" + mesh "git.novox.be/novox/mesh-contracts/placement/go/seats/meshmoduleassigner" "os" "git.novox.be/novox/mesh-contracts/health-and-repair/go/clients/meshconditionsclient" stdio "git.novox.be/novox/mesh-sdk/go" - "git.novox.be/novox/mesh-sdk/go/delivery" "git.novox.be/novox/mesh-contracts/health-and-repair/go/clients/meshhandactsclient" "git.novox.be/novox/mesh-sdk/go/views" @@ -31,9 +31,9 @@ const ( func main() { seats := &views.Reader{Module: "minio", Findings: meshconditionsclient.FindingWriter{State: stdio.State("findings")}, Acts: meshhandactsclient.Recorder{Ask: stdio.Ask}, Logf: func(f string, a ...any) { fmt.Fprintf(os.Stderr, "[object-store] "+f+"\n", a...) }} - seats.Follow(delivery.AssignerModule, delivery.SeatHoldersState, SeatHoldersTool) + seats.Follow(assignerModule, mesh.StateSeatHolders, SeatHoldersTool) s, err := newServer(os.Getenv(ConfigWord), os.Getenv(LinksWord), os.Getenv(ReceivesWord), - func() (map[string][]byte, error) { return seats.Values(delivery.SeatHoldersRead) }) + func() (map[string][]byte, error) { return seats.Values(assignerModule + "." + mesh.StateSeatHolders) }) if err != nil { fmt.Fprintf(os.Stderr, "[object-store] %v\n", err) os.Exit(1) @@ -46,7 +46,11 @@ func main() { } // SeatHoldersTool is the assigner's read tool of who holds which seat, which the manifest invokes (ADR 0615). -const SeatHoldersTool = delivery.AssignerModule + ".assigner_read_seat_holders" +// assignerModule is the holder of the seat mesh-module-assigner whose seat-holders view this module follows: the one name +// of it here, the same as its manifest's `consumes` and `invokes` carry (the manifest test holds them equal). +const assignerModule = "mesh-delivery-assigner" + +const SeatHoldersTool = assignerModule + ".assigner_read_seat_holders" func tools(s *server) []stdio.Tool { return []stdio.Tool{{ diff --git a/modules/minio/cmd/object-store/manifest_test.go b/modules/minio/cmd/object-store/manifest_test.go index 996713a5f..6dedfc847 100644 --- a/modules/minio/cmd/object-store/manifest_test.go +++ b/modules/minio/cmd/object-store/manifest_test.go @@ -2,6 +2,7 @@ package main import ( "encoding/json" + mesh "git.novox.be/novox/mesh-contracts/placement/go/seats/meshmoduleassigner" "os" "strings" "testing" @@ -40,7 +41,7 @@ func TestManifestClaimsTheSeat(t *testing.T) { } invokes, _ := m["invokes"].([]any) consumes, _ := m["consumes"].([]any) - if _, reads := m["reads"]; reads || len(invokes) != 2 || invokes[0] != SeatHoldersTool || invokes[1] != "seat:mesh-hand-acts.hand-act" || len(consumes) != 1 || consumes[0] != "mesh-delivery-assigner.views.seat-holders" { + if _, reads := m["reads"]; reads || len(invokes) != 2 || invokes[0] != SeatHoldersTool || invokes[1] != "seat:mesh-hand-acts.hand-act" || len(consumes) != 1 || consumes[0] != assignerModule+".views."+mesh.StateSeatHolders { t.Fatalf("reads %v, invokes %v, consumes %v: it asks the assigner's seat-holders once and follows its events (ADR 0615)", m["reads"], invokes, consumes) } var goBundle map[string]any diff --git a/modules/minio/cmd/object-store/server.go b/modules/minio/cmd/object-store/server.go index 14684beb2..6d99d4d9d 100644 --- a/modules/minio/cmd/object-store/server.go +++ b/modules/minio/cmd/object-store/server.go @@ -6,13 +6,13 @@ import ( "encoding/json" "errors" "fmt" + assignerclient "git.novox.be/novox/mesh-contracts/placement/go/clients/meshmoduleassignerclient" "os" "path/filepath" "strings" "time" stdio "git.novox.be/novox/mesh-sdk/go" - "git.novox.be/novox/mesh-sdk/go/delivery" "git.novox.be/novox/mesh-sdk/go/objectlink" ) @@ -247,7 +247,7 @@ func (s *server) holds(seat, node, module string) (bool, error) { if err != nil { return false, err } - holders, err := delivery.HoldersOf(keys, seat, node) + holders, err := assignerclient.HoldersOf(keys, seat, node) if err != nil { return false, err } diff --git a/modules/minio/go.mod b/modules/minio/go.mod index 3084aaef2..4d41b0807 100644 --- a/modules/minio/go.mod +++ b/modules/minio/go.mod @@ -5,6 +5,8 @@ go 1.26.0 require git.novox.be/novox/mesh-sdk/go v0.1.14-0.20261104174359-05b3e2e1b94f require ( + git.novox.be/novox/mesh-contracts/placement/go/clients/meshmoduleassignerclient v0.0.0-00010101000000-000000000000 + git.novox.be/novox/mesh-contracts/placement/go/seats/meshmoduleassigner v0.0.0-00010101000000-000000000000 git.novox.be/novox/mesh-contracts/health-and-repair/go/clients/meshconditionsclient v0.0.0-00010101000000-000000000000 git.novox.be/novox/mesh-contracts/health-and-repair/go/clients/meshhandactsclient v0.0.0-00010101000000-000000000000 git.novox.be/novox/mesh-contracts/go v0.0.0-20261104174344-ae5266e77639 // indirect