Skip to content

fix(deps): pin thrift to v0.22.0 to unbreak the 32-bit release build#2515

Merged
devarismeroxa merged 2 commits into
mainfrom
fix/thrift-32bit-release
Jul 4, 2026
Merged

fix(deps): pin thrift to v0.22.0 to unbreak the 32-bit release build#2515
devarismeroxa merged 2 commits into
mainfrom
fix/thrift-32bit-release

Conversation

@devarismeroxa

Copy link
Copy Markdown
Contributor

The v0.15.0 release build failed on this. Fixes the release blocker.

What broke

GoReleaser cross-compiles a linux/386 (i386) artifact. apache/thrift v0.23.0 uses math.MaxUint32 as an untyped int constant in framed_transport.go:206, which overflows int on 32-bit architectures:

thrift@v0.23.0/lib/go/thrift/framed_transport.go:206:12: math.MaxUint32 (untyped int constant 4294967295) overflows int

Regular CI only builds on 64-bit (amd64/arm64), so this stayed latent until the release cross-compiled for 386.

Fix

thrift is an indirect dependency (built-in S3 connector → parquet-go → thrift). The v0.16 → v0.23 bump in the Go 1.25 refresh (#2507) wasn't required — pin it back to v0.22.0, which compiles on 32-bit and satisfies parquet-go's requirement. Verified GOOS=linux GOARCH=386 go build ./... passes and 64-bit build/tests are unchanged.

Guard (postmortem follow-up)

This reached the release process, so per the postmortem discipline it gets a new automated check: a build (linux/386) job in test.yml that cross-compiles for the 32-bit release target, so a 32-bit-only compile failure is caught in CI instead of during a release. The job passing on this PR is the proof the fix works.

Risk tier

Tier 2 (dependency + CI). No functional change — a thrift patch-level downgrade on the parquet path; behavior unchanged.

Note on v0.15.0

The v0.15.0 tag was created but its Release workflow failed, so no GitHub release or artifacts were published. Once this merges, the tag needs to be re-cut on the fixed main.

🤖 Generated with Claude Code

devarismeroxa and others added 2 commits July 4, 2026 13:08
Update the .deb/.rpm install-command examples to reference v0.15.0 for the
release (release-checklist documentation step).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
…guard

The v0.15.0 release build failed: apache/thrift v0.23.0 uses math.MaxUint32 as
an untyped int constant in framed_transport.go, which overflows int on 32-bit
architectures. GoReleaser cross-compiles a linux/386 (i386) artifact, so the
build broke at release time. Regular CI only builds on 64-bit, so it wasn't
caught.

thrift is an indirect dependency (built-in S3 connector -> parquet-go ->
thrift); the v0.16 -> v0.23 bump in the Go 1.25 refresh wasn't required. Pin it
back to v0.22.0, which compiles on 32-bit and satisfies parquet-go. Verified
`GOOS=linux GOARCH=386 go build ./...` passes and 64-bit build/tests are unchanged.

Add a build (linux/386) job to the test workflow so a 32-bit-only compile
failure is caught in CI instead of during a release (postmortem follow-up:
this reached the release process).

Co-Authored-By: Claude Opus 4.8 (1M context) <noreply@anthropic.com>
@devarismeroxa devarismeroxa requested a review from a team as a code owner July 4, 2026 20:19
@devarismeroxa devarismeroxa merged commit 359c848 into main Jul 4, 2026
5 checks passed
@devarismeroxa devarismeroxa deleted the fix/thrift-32bit-release branch July 4, 2026 20:28
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