Fix UUID handling in Rust Thrift compact protocol #3179
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This commit fixes two bugs in the Rust Thrift implementation that prevented UUID fields from working correctly with the compact protocol:
Missing UUID case in skip_till_depth function
Incorrect UUID serialization in compact protocol
The bug manifested as failures in cross-language tests between Go and Rust when using compact protocol. The error occurred because Go correctly expected raw 16-byte UUID values while Rust was incorrectly adding a length prefix.
Testing:
Test command: python3 test/test.py --server go --client rs -R ".compact."
🤖 Generated with Claude Code -- but I as a human reviewed every line, tested it, and ensured this is code I'm happy to put my name on. I used it to help reproduce the failure, figure out how to run the tests, and diagnose the issue - the diagnosis + fix is correct.
[skip ci]anywhere in the commit message to free up build resources.