fix(python): inconsistent struct hash calculation between Java and Python #2108
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.
What does this PR do?
Problem
The struct hash calculation implementations in Java and Python are inconsistent. When
classinfo
isNone
in the Python implementation, the method returns early without updating the hash value, whereas the Java implementation continues with a default hash value of 0.Solution
Modified the
visit_customized
method in the Python implementation to initializehash_value
to 0 before checking ifclassinfo
isNone
, ensuring the hash computation continues regardless of theclassinfo
status. This approach aligns with the Java implementation behavior.Changes:
hash_value
to 0 at the beginning of the methodhash_value
_compute_field_hash
at the end of the methodTesting
Verified the fix by running the
CrossLanguageTest.java
tests that were previously failing due to this issue. The struct hash values now match between Java and Python implementations.Related issues
Does this PR introduce any user-facing change?
Benchmark