Search before asking
Version
0.9.0
Component(s)
Java
Minimal reproduce step
This issue does not occur when using buildThreadSafeFury().
Code to Reproduce
@Data
public static class Outer {
private String code;
private List<Inner> innerList;
}
@Data
public static class Inner {
private String name;
}
@Test
public void threadSafeTest() {
MetaContext context = new MetaContext();
ThreadSafeFury fury = Fury.builder()
.withLanguage(Language.JAVA)
.withMetaShare(true)
.withRefCopy(false)
.withCodegen(true)
.withCompatibleMode(CompatibleMode.COMPATIBLE)
.withScopedMetaShare(false)
.withJdkClassSerializableCheck(false)
.requireClassRegistration(true)
// Uncommenting the following line causes the issue
//.buildThreadSafeFuryPool(10,60);
.buildThreadSafeFury();
fury.register(Outer.class);
fury.register(Inner.class);
Outer bean = new Outer();
bean.setCode("test");
bean.setInnerList(new ArrayList<>());
for (int i = 0; i < 10000; i++) {
byte[] bytes = fury.execute(f -> {
f.getSerializationContext().setMetaContext(context);
return f.serialize(bean);
});
Outer des = (Outer) fury.execute(f -> {
f.getSerializationContext().setMetaContext(context);
return f.deserialize(bytes);
});
Assertions.assertEquals(bean, des);
}
}
What did you expect to see?
test success
What did you see instead?
java.lang.AssertionError: Meta context must be set before serialization, please set meta context by SerializationContext.setMetaContext
at org.apache.fury.resolver.ClassResolver.readClassInfoWithMetaShare(ClassResolver.java:1385)
at org.apache.fury.resolver.ClassResolver.readClassInfo(ClassResolver.java:1693)
at com.zhaopin.entinfo.router.test.MetaContextTest_OuterFuryCodecMetaShared0_0.readFields$(MetaContextTest_OuterFuryCodecMetaShared0_0.java:64)
at com.zhaopin.entinfo.router.test.MetaContextTest_OuterFuryCodecMetaShared0_0.read(MetaContextTest_OuterFuryCodecMetaShared0_0.java:118)
at org.apache.fury.Fury.readDataInternal(Fury.java:959)
at org.apache.fury.Fury.readRef(Fury.java:861)
at org.apache.fury.Fury.deserialize(Fury.java:793)
at org.apache.fury.Fury.deserialize(Fury.java:714)
at test.MetaContextTest.lambda$threadSafeTest$2(MetaContextTest.java:78)
at org.apache.fury.pool.ThreadPoolFury.execute(ThreadPoolFury.java:82)
at com.zhaopin.entinfo.router.test.MetaContextTest.threadSafeTest(MetaContextTest.java:76)
at sun.reflect.NativeMethodAccessorImpl.invoke0(Native Method)
at sun.reflect.NativeMethodAccessorImpl.invoke(NativeMethodAccessorImpl.java:62)
at sun.reflect.DelegatingMethodAccessorImpl.invoke(DelegatingMethodAccessorImpl.java:43)
at java.lang.reflect.Method.invoke(Method.java:498)
at org.junit.platform.commons.util.ReflectionUtils.invokeMethod(ReflectionUtils.java:532)
at org.junit.jupiter.engine.execution.ExecutableInvoker.invoke(ExecutableInvoker.java:115)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.lambda$invokeTestMethod$6(TestMethodTestDescriptor.java:171)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:72)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.invokeTestMethod(TestMethodTestDescriptor.java:167)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:114)
at org.junit.jupiter.engine.descriptor.TestMethodTestDescriptor.execute(TestMethodTestDescriptor.java:59)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$4(NodeTestTask.java:108)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:72)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:98)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:74)
at java.util.ArrayList.forEach(ArrayList.java:1259)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$4(NodeTestTask.java:112)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:72)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:98)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:74)
at java.util.ArrayList.forEach(ArrayList.java:1259)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.invokeAll(SameThreadHierarchicalTestExecutorService.java:38)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.lambda$executeRecursively$4(NodeTestTask.java:112)
at org.junit.platform.engine.support.hierarchical.ThrowableCollector.execute(ThrowableCollector.java:72)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.executeRecursively(NodeTestTask.java:98)
at org.junit.platform.engine.support.hierarchical.NodeTestTask.execute(NodeTestTask.java:74)
at org.junit.platform.engine.support.hierarchical.SameThreadHierarchicalTestExecutorService.submit(SameThreadHierarchicalTestExecutorService.java:32)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestExecutor.execute(HierarchicalTestExecutor.java:57)
at org.junit.platform.engine.support.hierarchical.HierarchicalTestEngine.execute(HierarchicalTestEngine.java:51)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:220)
at org.junit.platform.launcher.core.DefaultLauncher.lambda$execute$6(DefaultLauncher.java:188)
at org.junit.platform.launcher.core.DefaultLauncher.withInterceptedStreams(DefaultLauncher.java:202)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:181)
at org.junit.platform.launcher.core.DefaultLauncher.execute(DefaultLauncher.java:128)
at com.intellij.junit5.JUnit5IdeaTestRunner.startRunnerWithArgs(JUnit5IdeaTestRunner.java:57)
at com.intellij.rt.junit.IdeaTestRunner$Repeater$1.execute(IdeaTestRunner.java:38)
at com.intellij.rt.execution.junit.TestsRepeater.repeat(TestsRepeater.java:11)
at com.intellij.rt.junit.IdeaTestRunner$Repeater.startRunnerWithArgs(IdeaTestRunner.java:35)
at com.intellij.rt.junit.JUnitStarter.prepareStreamsAndStart(JUnitStarter.java:235)
at com.intellij.rt.junit.JUnitStarter.main(JUnitStarter.java:54)
Anything Else?
No response
Are you willing to submit a PR?
Search before asking
Version
0.9.0
Component(s)
Java
Minimal reproduce step
This issue does not occur when using
buildThreadSafeFury().Code to Reproduce
What did you expect to see?
test success
What did you see instead?
Anything Else?
No response
Are you willing to submit a PR?