fury
fury copied to clipboard
ClassID discrepancy on different fury setup
Search before asking
- [x] I had searched in the issues and found no similar issues.
Version
v0.10
Component(s)
Java
Minimal reproduce step
ClassCompleteField<String> subclass = new ClassCompleteField<>("subclass", "subclass2");
ClassCompleteField<ClassCompleteField<String>> classCompleteField =
new ClassCompleteField<>(subclass, subclass);
byte[] serialized = getFury(
RANDOM_CLASS_1.class,
RANDOM_CLASS_2.class,
RANDOM_CLASS_3.class,
ClassCompleteField.class,
RANDOM_CLASS_4.class,
RANDOM_CLASS_5.class,
RANDOM_CLASS_6.class,
RANDOM_CLASS_7.class,
RANDOM_CLASS_8.class,
RANDOM_CLASS_9.class
).serializeJavaObject(classCompleteField);
ClassMissingField<ClassMissingField<String>> classMissingField =
getFury(
ClassMissingField.class,
RANDOM_CLASS_10.class,
RANDOM_CLASS_11.class,
RANDOM_CLASS_12.class
).deserializeJavaObject(serialized, ClassMissingField.class);
assertEq(classCompleteField, classMissingField);
reproable on my fork https://github.com/orisgarno/fury/blob/fc07354bb388b54b6ed09c59c18f3d5f795ccf87/java/fury-core/src/test/java/org/apache/fury/serializer/compatible/DifferentPOJOCompatibleSerializerWithRegistrationTest.java#L58
What did you expect to see?
Able to decode
What did you see instead?
class id value may translate to different actual class
and also array out of bound
Anything Else?
No response
Are you willing to submit a PR?
- [x] I'm willing to submit a PR!
You need to invoke FuryBuilder#withName to set different name if you register different classes. Otherwise those fury will share same generated Serializer, which is unexpected since you registered different classes