Merged upstreamTestingMerged Sep 28, 2026
Pin Go system-command wire payloads
Added literal serialization assertions for six Go SDK system commands, including little-endian identifiers, valid and invalid option scopes, and empty request bodies.
apache/iggy · #4305
Protocol-contract coverage
Apache Iggy's Go SDK now detects byte-level changes to six system-command request payloads before they can diverge from the server's binary format.
Problem
The Go SDK encoded system commands without direct assertions for their request bytes, leaving wire-format drift detectable only through broader integration behavior or server-side failures.
Approach
Adds focused tests for GetClient, DescribeOptions, GetClients, GetClusterMetadata, GetStats, and Ping, with expected bytes checked against the corresponding Rust request codecs.
Impact and scope
- Makes the cross-language binary contract explicit for six system commands instead of relying only on encoder implementation details.
- Covers both accepted and rejected DescribeOptions scopes, so validation behavior is pinned alongside successful serialization.
- Changes tests only; no production encoder, public API, or runtime behavior was modified.
- The related Go SDK testing issue remains open, so this contribution addresses the system-command portion rather than claiming the full issue scope.
Validation
- Passed the complete Go test suite, the command package under the race detector, go vet, lint, and repository pre-commit hooks.
- All 50 hosted checks passed and three upstream contributors approved the final result.
- The PR was authored by Goutam Adwant; two upstream contributors added follow-up commits before the merge.