fury
fury copied to clipboard
When using `buildThreadSafeFuryPool(10, 60)` for init ThreadSafePool, the following exception occurs:
Search before asking
- [X] I had searched in the issues and found no similar issues.
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?
- [ ] I'm willing to submit a PR!