Search before asking
Version
java v0.9.0
Component(s)
Java
Minimal reproduce step
BaseFury s = FuryFury.builder()
.withLanguage(Language.JAVA)
.withRefTracking(true)
.withIntCompressed(true)
.withLongCompressed(true)
.withStringCompressed(true)
.withCompatibleMode(CompatibleMode.COMPATIBLE)
.requireClassRegistration(false)
.withAsyncCompilation(true)
.serializeEnumByName(true)
.buildThreadSafeFury()
public class PrivateFliedClassNumberOne {
private boolean privateBoolean = true;
private int privateInt = 10;
private String privateString = "notNull";
private Map<String, String> privateMap = Map.of("a", "b");
private List<String> privateList = List.of("l");
private PrivateFieldSubClass privateFieldSubClass = new PrivateFieldSubClass();
}
public class PrivateFliedClassNumberTwoWithMissingField {
private Map<String, String> privateMap = Map.of("a", "b");
private int privateInt = 10;
private PrivateFieldSubClass privateFieldSubClass = new PrivateFieldSubClass();
private List<String> privateList = List.of("l");
private boolean privateBoolean = true;
}
code to repro
PrivateFliedClassNumberOne privateField = new PrivateFliedClassNumberOne();
byte[] serialized = s.serializeJavaObject(privateField);
PrivateFliedClassNumberTwoWithMissingField privateField2 = s.deserializeJavaObject(
serialized,
PrivateFliedClassNumberTwoWithMissingField.class
);
What did you expect to see?
Should be able to deserialize successfully
What did you see instead?
exception
Deserialize failed, read objects are: [PrivateFliedClassNumberTwoWithMissingField{privateMap={a=b}, privateInt=10, privateFieldSubClass=true, privateList=[l], privateBoolean=true}]
at org.apache.fury.util.ExceptionUtils.handleReadFailed(ExceptionUtils.java:63)
at org.apache.fury.Fury.deserializeJavaObject(Fury.java:1124)
at org.apache.fury.Fury.deserializeJavaObject(Fury.java:1101)
at org.apache.fury.ThreadLocalFury.deserializeJavaObject(ThreadLocalFury.java:202)
at serde.SerdeTestBase.testBasicPrivateField_diffClassScrambledField(SerdeTestBase.java:89)
at serde.SerdeTestBase.runAll(SerdeTestBase.java:35)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at java.base/jdk.internal.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:77)
at java.base/jdk.internal.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.base/java.lang.reflect.Method.invoke(Method.java:568)
at org.testng.internal.MethodInvocationHelper.invokeMethod(MethodInvocationHelper.java:104)
at org.testng.internal.Invoker.invokeMethod(Invoker.java:645)
at org.testng.internal.Invoker.invokeTestMethod(Invoker.java:851)
at org.testng.internal.Invoker.invokeTestMethods(Invoker.java:1177)
at org.testng.internal.TestMethodWorker.invokeTestMethods(TestMethodWorker.java:129)
at org.testng.internal.TestMethodWorker.run(TestMethodWorker.java:112)
at org.testng.TestRunner.privateRun(TestRunner.java:756)
at org.testng.TestRunner.run(TestRunner.java:610)
at org.testng.SuiteRunner.runTest(SuiteRunner.java:387)
at org.testng.SuiteRunner.runSequentially(SuiteRunner.java:382)
at org.testng.SuiteRunner.privateRun(SuiteRunner.java:340)
at org.testng.SuiteRunner.run(SuiteRunner.java:289)
at org.testng.SuiteRunnerWorker.runSuite(SuiteRunnerWorker.java:52)
at org.testng.SuiteRunnerWorker.run(SuiteRunnerWorker.java:86)
at org.testng.TestNG.runSuitesSequentially(TestNG.java:1293)
at org.testng.TestNG.runSuitesLocally(TestNG.java:1218)
at org.testng.TestNG.runSuites(TestNG.java:1133)
at org.testng.TestNG.run(TestNG.java:1104)
at com.intellij.rt.testng.IDEARemoteTestNG.run(IDEARemoteTestNG.java:65)
at com.intellij.rt.testng.RemoteTestNGStarter.main(RemoteTestNGStarter.java:105)
Caused by: java.lang.ArrayIndexOutOfBoundsException: Index 111 out of bounds for length 6
at org.apache.fury.collection.ObjectArray.set(ObjectArray.java:58)
at org.apache.fury.resolver.MapRefResolver.setReadObject(MapRefResolver.java:209)
at org.apache.fury.Fury.readRef(Fury.java:875)
at org.apache.fury.serializer.ObjectSerializer.readContainerFieldValue(ObjectSerializer.java:385)
at org.apache.fury.serializer.ObjectSerializer.readAndSetFields(ObjectSerializer.java:318)
at org.apache.fury.serializer.ObjectSerializer.read(ObjectSerializer.java:246)
at org.apache.fury.Fury.readDataInternal(Fury.java:959)
at org.apache.fury.Fury.deserializeJavaObject(Fury.java:1118)
... 30 more
Anything Else?
this is the first time i encounter this issue.
i was using fury v0.5.1 and doesnt have this kind of problem. i am also tried to repro this on 0.5.1, but its not happening on that version.
Are you willing to submit a PR?
Search before asking
Version
java v0.9.0
Component(s)
Java
Minimal reproduce step
code to repro
What did you expect to see?
Should be able to deserialize successfully
What did you see instead?
exception
Anything Else?
this is the first time i encounter this issue.
i was using fury v0.5.1 and doesnt have this kind of problem. i am also tried to repro this on 0.5.1, but its not happening on that version.
Are you willing to submit a PR?