asalabaev-nymbus commented on issue #1633:
URL: 
https://github.com/apache/incubator-fury/issues/1633#issuecomment-2110968489

   ok, I was able to reproduce a somewhat similar. And it is also similar to 
the #1325 
   
   now the error is the combination of the two bugs - I see both errors now. 
The details are below. But it maybe another issue since initially when opening 
this ticket there was only NullPointerException that I have seen.
   ```
   Create sequential serializer failed, 
   class: class i.MyClass
   java.lang.RuntimeException: Create sequential serializer failed, 
   class: class i.MyClass
        at 
org.apache.fury.serializer.CodegenSerializer.loadCodegenSerializer(CodegenSerializer.java:52)
        at 
org.apache.fury.resolver.ClassResolver.lambda$getObjectSerializerClass$2(ClassResolver.java:954)
        at 
org.apache.fury.builder.JITContext.registerSerializerJITCallback(JITContext.java:131)
        at 
org.apache.fury.resolver.ClassResolver.getObjectSerializerClass(ClassResolver.java:952)
        at 
org.apache.fury.resolver.ClassResolver.getSerializerClass(ClassResolver.java:885)
        at 
org.apache.fury.resolver.ClassResolver.getSerializerClass(ClassResolver.java:782)
        at 
org.apache.fury.resolver.ClassResolver.createSerializer(ClassResolver.java:1168)
        at 
org.apache.fury.resolver.ClassResolver.getOrUpdateClassInfo(ClassResolver.java:1107)
        at org.apache.fury.Fury.write(Fury.java:312)
        at org.apache.fury.Fury.serialize(Fury.java:248)
        at org.apache.fury.Fury.serialize(Fury.java:202)
        at i.FuryTest.testFury(FuryTest.java:43)
        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.junit.runners.model.FrameworkMethod$1.runReflectiveCall(FrameworkMethod.java:59)
        at 
org.junit.internal.runners.model.ReflectiveCallable.run(ReflectiveCallable.java:12)
        at 
org.junit.runners.model.FrameworkMethod.invokeExplosively(FrameworkMethod.java:56)
        at 
org.junit.internal.runners.statements.InvokeMethod.evaluate(InvokeMethod.java:17)
        at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
        at 
org.junit.runners.BlockJUnit4ClassRunner$1.evaluate(BlockJUnit4ClassRunner.java:100)
        at org.junit.runners.ParentRunner.runLeaf(ParentRunner.java:366)
        at 
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:103)
        at 
org.junit.runners.BlockJUnit4ClassRunner.runChild(BlockJUnit4ClassRunner.java:63)
        at org.junit.runners.ParentRunner$4.run(ParentRunner.java:331)
        at org.junit.runners.ParentRunner$1.schedule(ParentRunner.java:79)
        at org.junit.runners.ParentRunner.runChildren(ParentRunner.java:329)
        at org.junit.runners.ParentRunner.access$100(ParentRunner.java:66)
        at org.junit.runners.ParentRunner$2.evaluate(ParentRunner.java:293)
        at org.junit.runners.ParentRunner$3.evaluate(ParentRunner.java:306)
        at org.junit.runners.ParentRunner.run(ParentRunner.java:413)
        at 
org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.runTestClass(JUnitTestClassExecutor.java:110)
        at 
org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:58)
        at 
org.gradle.api.internal.tasks.testing.junit.JUnitTestClassExecutor.execute(JUnitTestClassExecutor.java:38)
        at 
org.gradle.api.internal.tasks.testing.junit.AbstractJUnitTestClassProcessor.processTestClass(AbstractJUnitTestClassProcessor.java:62)
        at 
org.gradle.api.internal.tasks.testing.SuiteTestClassProcessor.processTestClass(SuiteTestClassProcessor.java:51)
        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.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:36)
        at 
org.gradle.internal.dispatch.ReflectionDispatch.dispatch(ReflectionDispatch.java:24)
        at 
org.gradle.internal.dispatch.ContextClassLoaderDispatch.dispatch(ContextClassLoaderDispatch.java:33)
        at 
org.gradle.internal.dispatch.ProxyDispatchAdapter$DispatchingInvocationHandler.invoke(ProxyDispatchAdapter.java:94)
        at jdk.proxy1/jdk.proxy1.$Proxy2.processTestClass(Unknown Source)
        at 
org.gradle.api.internal.tasks.testing.worker.TestWorker$2.run(TestWorker.java:176)
        at 
org.gradle.api.internal.tasks.testing.worker.TestWorker.executeAndMaintainThreadName(TestWorker.java:129)
        at 
org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:100)
        at 
org.gradle.api.internal.tasks.testing.worker.TestWorker.execute(TestWorker.java:60)
        at 
org.gradle.process.internal.worker.child.ActionExecutionWorker.execute(ActionExecutionWorker.java:56)
        at 
org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:133)
        at 
org.gradle.process.internal.worker.child.SystemApplicationClassLoaderWorker.call(SystemApplicationClassLoaderWorker.java:71)
        at 
worker.org.gradle.process.internal.worker.GradleWorkerMain.run(GradleWorkerMain.java:69)
        at 
worker.org.gradle.process.internal.worker.GradleWorkerMain.main(GradleWorkerMain.java:74)
   Caused by: java.lang.NullPointerException
        at 
java.base/java.util.stream.ReferencePipeline$3$1.accept(ReferencePipeline.java:197)
        at 
java.base/java.util.Spliterators$ArraySpliterator.forEachRemaining(Spliterators.java:992)
        at 
java.base/java.util.stream.AbstractPipeline.copyInto(AbstractPipeline.java:509)
        at 
java.base/java.util.stream.AbstractPipeline.wrapAndCopyInto(AbstractPipeline.java:499)
        at 
java.base/java.util.stream.ReduceOps$ReduceOp.evaluateSequential(ReduceOps.java:921)
        at 
java.base/java.util.stream.AbstractPipeline.evaluate(AbstractPipeline.java:234)
        at 
java.base/java.util.stream.ReferencePipeline.collect(ReferencePipeline.java:682)
        at 
org.apache.fury.reflect.TypeRef$WildcardCapturer.captureAsTypeVariable(TypeRef.java:887)
        at 
org.apache.fury.reflect.TypeRef$WildcardCapturer$1.captureAsTypeVariable(TypeRef.java:921)
        at 
org.apache.fury.reflect.TypeRef$WildcardCapturer.capture0(TypeRef.java:878)
        at 
org.apache.fury.reflect.TypeRef$WildcardCapturer.capture0(TypeRef.java:868)
        at 
org.apache.fury.reflect.TypeRef$WildcardCapturer.capture0(TypeRef.java:868)
   ```
   The code to reproduce it was to add generics: 
   ```
   package i;
   
   import org.apache.fury.Fury;
   import org.apache.fury.config.Language;
   import org.junit.Test;
   
   import java.util.Map;
   import java.util.TreeMap;
   
   
   class MyInternalClass<T> {
       public int c = 9;
   }
   class MyInternalBaseClass extends MyInternalClass<String> {
       public int d = 19;
   
   }
   
   class MyClass {
       protected Map<String, MyInternalClass<?>> fields;
       private transient int r = 13;
   
       public MyClass() {
           fields = new TreeMap<>(String.CASE_INSENSITIVE_ORDER);
           fields.put("test", new MyInternalBaseClass());
       }
   }
   
   public class FuryTest {
   
       static Fury fury = Fury.builder().withLanguage(Language.JAVA)
   //            .withCodegen(false)
               .build();
       static {
           fury.register(MyClass.class); //
           fury.register(MyInternalClass.class); //
           fury.register(MyInternalBaseClass.class); //
           fury.register(String.CASE_INSENSITIVE_ORDER.getClass()); //
       }
   
       @Test
       public void testFury() {
           byte[] serialize = fury.serialize(new MyClass());
           System.out.println("Code size =" + serialize.length);
       }
   }
   ```


-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: [email protected]

For queries about this service, please contact Infrastructure at:
[email protected]


---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to