Uploaded image for project: 'Infinispan'
  1. Infinispan
  2. ISPN-11210

Classloading issues when using annotation generated marshallers in deployed server tasks

    Details

      Description

      A server task is deployed and the task generates annotation based protostream marshallers during context init.

      A NullPointerException is thrown as seen in this stacktrace, but this is another issue in javassist which obscures the real reason, a java.lang.NoClassDefFoundError: org/infinispan/protostream/ImmutableSerializationContext.

      The NoClassDefFoundError is caused by the use of the thread context classloader in the ClassPool of javassist. The TCL is not always suitable. At least it never is for deployed server tasks. There is no workaround for this, and the only option is to modify ProtoSchemaBuilder.build signature, or add an overloaded method that also accepts a ClassLoader so the user can take control.

      18:40:18,528 WARN  [org.infinispan.remoting.inboundhandler.NonTotalOrderPerCacheInboundInvocationHandler] (remote-thread--p2-t1) ISPN000071: Caught exception when handling command DistributedExecuteCommand [cache=Cache 'addressbook'@manapakam, keys=[], callable=org.infinispan.server.infinispan.task.DistributedServerTask@5403bdfd]: org.infinispan.protostream.annotations.ProtoSchemaBuilderException: Failed to generate marshaller implementation class
      	at org.infinispan.protostream.annotations.impl.ProtoSchemaGenerator.generateAndRegister(ProtoSchemaGenerator.java:144)
      	at org.infinispan.protostream.annotations.ProtoSchemaBuilder.build(ProtoSchemaBuilder.java:235)
      	at test.cacheloader.impl.RemoveObjectsTask.setTaskContext(RemoveObjectsTask.java:57)
      	at org.infinispan.server.infinispan.task.ServerTaskWrapper.inject(ServerTaskWrapper.java:43)
      	at org.infinispan.server.infinispan.task.DistributedServerTask.call(DistributedServerTask.java:46)
      	at org.infinispan.commands.read.DistributedExecuteCommand.invokeAsync(DistributedExecuteCommand.java:99)
      	at org.infinispan.remoting.inboundhandler.BasePerCacheInboundInvocationHandler.invokeCommand(BasePerCacheInboundInvocationHandler.java:117)
      	at org.infinispan.remoting.inboundhandler.BaseBlockingRunnable.invoke(BaseBlockingRunnable.java:99)
      	at org.infinispan.remoting.inboundhandler.BaseBlockingRunnable.runAsync(BaseBlockingRunnable.java:71)
      	at org.infinispan.remoting.inboundhandler.BaseBlockingRunnable.run(BaseBlockingRunnable.java:40)
      	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1149)
      	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:624)
      	at java.lang.Thread.run(Thread.java:748)
      Caused by: java.lang.NullPointerException
      	at protostream.javassist.CannotCompileException.<init>(CannotCompileException.java:77)
      	at protostream.javassist.util.proxy.DefineClassHelper.toClass(DefineClassHelper.java:249)
      	at protostream.javassist.ClassPool.toClass(ClassPool.java:1120)
      	at protostream.javassist.ClassPool.toClass(ClassPool.java:1083)
      	at protostream.javassist.ClassPool.toClass(ClassPool.java:1041)
      	at protostream.javassist.CtClass.toClass(CtClass.java:1278)
      	at org.infinispan.protostream.annotations.impl.MarshallerCodeGenerator.generateMessageMarshaller(MarshallerCodeGenerator.java:230)
      	at org.infinispan.protostream.annotations.impl.ProtoSchemaGenerator.generateMarshallers(ProtoSchemaGenerator.java:172)
      	at org.infinispan.protostream.annotations.impl.ProtoSchemaGenerator.generateAndRegister(ProtoSchemaGenerator.java:142)
      	... 12 more
      

        Gliffy Diagrams

          Attachments

            Issue Links

              Activity

                People

                • Assignee:
                  anistor Nistor Adrian
                  Reporter:
                  anistor Nistor Adrian
                • Votes:
                  0 Vote for this issue
                  Watchers:
                  1 Start watching this issue

                  Dates

                  • Created:
                    Updated:
                    Resolved: