[Bug]: Go SDK row coder encodes negative INT32 schema fields as 10 byte varints that Java and Python reject
Maintainers usually reply within 1 day
@Eliaaazzz is already working on this.
Since Sep 17, 2026.
Assessment
This issue has not been assessed yet.
Description
What happened?
The Go SDK reflection row coder encodes int32 struct fields with EncodeVarInt(rv.Int()), the signed 64 bit varint, so a negative value takes 10 bytes: -1 becomes ff ff ff ff ff ff ff ff ff 01 (sdks/go/pkg/beam/core/graph/coder/row_encoder.go, the reflect.Int32 case shared with the other int kinds).
The other SDKs encode the INT32 schema type as the varint of the unsigned 32 bit form of the value, 5 bytes at most:
- Java
VarIntCodercallsVarInt.encode(int), which masks with0xFFFFFFFFL, so-1isff ff ff ff 0f.VarInt.decodeIntthrowsvarint overflowfor the Go bytes because they decode to a negative long. - Python
VarInt32Coderwritesv & 0xFFFFFFFF(write_var_int32inslow_stream.py) andread_var_int32packs the decoded value withstruct.pack('<I', v), which raises for the negative value produced by the Go bytes.
So a Go row with a negative int32 field cannot be read by the Java or Python SDK. Positive values are unaffected, and Go can already read the 5 byte form because reflect.Value.SetInt truncates to 32 bits.
This is the INT32 counterpart of #40151 (INT16). Found while working on #39684.
Issue Priority
Priority: 2 (default / most bugs should be filed as P2)
Issue Components
- Component: Python SDK
- Component: Java SDK
- Component: Go SDK
- Component: Typescript SDK
- Component: IO connector
- Component: Beam YAML
- Component: Beam examples
- Component: Beam playground
- Component: Beam katas
- Component: Website
- Component: Infrastructure
- Component: Spark Runner
- Component: Flink Runner
- Component: Prism Runner
- Component: Twister2 Runner
- Component: Hazelcast Jet Runner
- Component: Google Cloud Dataflow Runner
- Dominant language
- Java
- Stars
- 8.7k
- Forks
- 4.8k
- Avg merge
- 2d 9h
- Merged PRs (30d)
- 368
Getting set up
- No Dockerfile or Docker Compose file
- Has a pull request template
- Read the contributing guide
First steps
- Read the whole issue, then the project's contributing guide.
- Comment on the issue to say you are picking it up — it saves two people doing the same work.
- Fork the repository and make your change on a branch.
- Open a pull request that references the issue number.
More from apache/beam
-
awaiting triage bug P3
Difficulty 1/5 Under an hour Newbie friendliness 67/100
apache/beam#41197 · 2 comments ·
Maintainers usually reply within 1 day
-
[Bug]: [Python] WriteToJson silently rounds floats to 10 decimal placesPossibly taken @Abhi2939 claimed this 1 day ago. Openio P2 python yaml
Difficulty 2/5 1-3 hours Newbie friendliness 62/100
apache/beam#41102 · 4 comments ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 68/100
apache/beam#39624 · 2 reactions ·
Maintainers usually reply within 1 day
-
[Bug]: PubsubIO used in batch incorrect batch cutoff sizePossibly taken @1fanwang claimed this 78 days ago. Openbug io P3 pinned pubsub
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
apache/beam#28011 · 4 comments ·
Maintainers usually reply within 1 day
-
build P3 sub-task
Difficulty 1/5 Under an hour Newbie friendliness 68/100
Maintainers usually reply within 1 day
Similar issues
-
Difficulty 2/5 1-3 hours Newbie friendliness 66/100
SasanLabs/VulnerableApp#912 ·
Maintainers usually reply within 1 day
-
Difficulty 2/5 1-3 hours Newbie friendliness 76/100
Maintainers usually reply within 1 day
-
desktop edt not responding
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
-
Difficulty 2/5 1-3 hours Newbie friendliness 78/100
datafusion-contrib/StreamFusion#653 ·
Maintainers usually reply within 1 day
-
[Bug] Absolute row/column index 0 is ignored for images, hyperlinks and commentsPossibly taken @fanOfSunny claimed this today. Open
Difficulty 2/5 1-3 hours Newbie friendliness 82/100
Maintainers usually reply within 1 day