Skip to content

build: move to Go 1.27, pin Vitess v0.23.5, bump gRPC to v1.83.2 - #172

Merged
maxpert merged 1 commit into
masterfrom
chore/go-1.27-vitess-grpc-bump
Sep 2, 2026
Merged

maxpert merged 1 commit into
masterfrom
chore/go-1.27-vitess-grpc-bump

Conversation

@maxpert

@maxpert maxpert commented Sep 2, 2026

Copy link
Copy Markdown
Owner

Supersedes #162, which bumped go.mod without regenerating go.sum and failed every CI job.

Toolchain

  • go 1.27.1 (root) and go 1.27 (modules/vecindex); go.sum regenerated and verified
  • release.yml: setup-go on 1.27.x with check-latest: true; actions/checkout v3 → v4
  • Example Dockerfiles on golang:1.27-bookworm
  • GOEXPERIMENT=greenteagc removed from the workflow, build-linux.sh, and Dockerfiles. Green Tea GC has been the default collector since Go 1.26 (internal/buildcfg/exp.go sets GreenTeaGC: true), so the flag was a no-op.

Dependencies

Module Before After
vitess.io/vitess v0.10.3-0.20260213203506-6d6ed6507e0b (main branch) v0.23.5
google.golang.org/grpc v1.78.0 v1.83.2
golang.org/x/net (indirect) v0.50.0 v0.58.0

Vitess. The main-branch pseudo-version sorted as v0.10.x and tripped every scanner. It existed only because v0.23.0 failed to compile on Go 1.26 (go/hack/ensure_swiss_map.go: invalid array length -1), which v0.23.3+ fixed. Marmot imports only go/vt/sqlparser and go/mysql; the mysqlctl backup code covered by CVE-2026-27969 / CVE-2026-27965 is not in the dependency graph.

gRPC / x/net. These were the reachable issues on master: GO-2026-4762 (auth bypass via :path), GO-2026-6061, and GO-2026-4559 (HTTP/2 frame panic), all through the gRPC server path. gRPC's sharedWriteBuffer default is now true; Marmot never set it.

Behaviour change

Vitess v0.23.5 rejects a bare * outside the leading select-list position (SELECT id, * FROM t). This matches MySQL 8.4's select_item_list grammar exactly; the previous pin was looser than MySQL and upstream has since reverted it on main too. TestMySQLSelectStarPosition pins the parity.

Verification

  • build / vet / gofmt clean on go1.27.1
  • all unit packages in both modules pass
  • ./test cluster integration suite passes (MARMOT_RUN_CLUSTER_INTEGRATION_TESTS=1 -p 1)
  • govulncheck with the full sqlite tag set: 0 reachable vulnerabilities (24 on master)
  • go mod verify and go mod tidy -diff clean in both modules
  • Independent review: Vitess API diff touches only window-function plumbing Marmot does not use; go/mysql handshake constants unchanged; every gRPC package Marmot imports is byte-identical between v1.78.0 and v1.83.2

🤖 Generated with Claude Code

https://claude.ai/code/session_014u4bCrv6aSsNKiY6oWuvrt

Supersedes #162, which bumped go.mod without regenerating go.sum.

Toolchain
- go directive 1.27.1 (root) and 1.27 (modules/vecindex); go.sum regenerated
- release.yml: setup-go 1.27.x with check-latest, actions/checkout v3 -> v4
- example Dockerfiles: golang:1.27-bookworm
- drop GOEXPERIMENT=greenteagc everywhere: Green Tea GC is the default
  collector since Go 1.26, so the flag was a no-op

Dependencies
- vitess.io/vitess: main-branch pseudo-version (2026-02-13) -> v0.23.5.
  The pseudo-version sorted as v0.10.x and tripped every scanner; it
  existed only because v0.23.0 failed to compile on Go 1.26, which
  v0.23.3+ fixed. Marmot imports only sqlparser and go/mysql; the
  mysqlctl backup code covered by CVE-2026-27969/27965 is not in the
  dependency graph.
- google.golang.org/grpc v1.78.0 -> v1.83.2 and golang.org/x/net
  v0.50.0 -> v0.58.0: closes GO-2026-4762, GO-2026-6061 and
  GO-2026-4559, all reachable through the gRPC server path.
- gRPC's sharedWriteBuffer default is now true; Marmot never set it.

Behaviour
- Vitess v0.23.5 rejects a bare '*' outside the leading select-list
  position, matching MySQL 8.4 select_item_list. The previous pin was
  looser than MySQL. Added TestMySQLSelectStarPosition to pin parity.

Verification: build/vet/gofmt clean on go1.27.1; all unit packages in
both modules pass; ./test cluster integration suite passes with
MARMOT_RUN_CLUSTER_INTEGRATION_TESTS=1 -p 1; govulncheck reports zero
reachable vulnerabilities (24 on master); go mod verify clean.

Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_014u4bCrv6aSsNKiY6oWuvrt
@maxpert
maxpert merged commit 07a889c into master Sep 2, 2026
10 checks passed
@maxpert
maxpert deleted the chore/go-1.27-vitess-grpc-bump branch September 2, 2026 15:59
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant