From 4e2a1a5a1f5882aedbffc1daa36ba7605ccaebb2 Mon Sep 17 00:00:00 2001 From: jochen Date: Mon, 9 Nov 2026 13:36:38 +0100 Subject: [PATCH] mesh-build-go reads a compose ask's gzip-packed request (issue 1966) The checker sends a large node's request packed, as it passes the bus's message limit; compose reads either form through ComposeJob.RequestBytes. Only mesh-build-go serves compose. Delivered as a group with the mesh-delivery change of the same branch name: an older mesh-build-go refuses a packed ask naming that it holds no request object. Claude-Session: https://claude.ai/code/session_01NcbgfFfQ4Z9UE5jK32PmE5 --- modules/mesh-build-go/cmd/mesh-build-go/compose.go | 6 +++++- modules/mesh-build-go/cmd/mesh-build-go/compose_test.go | 4 ++++ 2 files changed, 9 insertions(+), 1 deletion(-) diff --git a/modules/mesh-build-go/cmd/mesh-build-go/compose.go b/modules/mesh-build-go/cmd/mesh-build-go/compose.go index a44dd7a55..a28671458 100644 --- a/modules/mesh-build-go/cmd/mesh-build-go/compose.go +++ b/modules/mesh-build-go/cmd/mesh-build-go/compose.go @@ -62,7 +62,11 @@ func (m *Module) compose(ctx context.Context, fetch buildstep.StepFunc, a sdkste if err != nil { return nil, err } - req, err := composer.Decode(job.Request) + body, err := job.RequestBytes() + if err != nil { + return nil, buildstep.Refuse("the compose ask %s: %v", a.ID, err) + } + req, err := composer.Decode(body) if err != nil { return nil, buildstep.Refuse("the compose ask %s: %v", a.ID, err) } diff --git a/modules/mesh-build-go/cmd/mesh-build-go/compose_test.go b/modules/mesh-build-go/cmd/mesh-build-go/compose_test.go index b14272e25..722b5abc7 100644 --- a/modules/mesh-build-go/cmd/mesh-build-go/compose_test.go +++ b/modules/mesh-build-go/cmd/mesh-build-go/compose_test.go @@ -81,6 +81,10 @@ func TestAKeptComposerIsRunWithTheManifestsFilled(t *testing.T) { } fetched := 0 fetch := func(context.Context, map[string]any) (any, error) { fetched++; return nil, nil } + // Issue 1966: the request arrives gzip-packed, as the checker sends one over the bus's message limit. + if err := a.Compose.PackRequest(a.Compose.Request); err != nil { + t.Fatal(err) + } out, err := m.compose(context.Background(), fetch, a) if err != nil { t.Fatal(err)