[infinispan-issues] [JBoss JIRA] (ISPN-11211) Classloading issues when using annotation generated marshallers in deployed server tasks

Nistor Adrian (Jira) issues at jboss.org
Thu Jan 23 04:27:03 EST 2020


Nistor Adrian created ISPN-11211:
------------------------------------

             Summary: Classloading issues when using annotation generated marshallers in deployed server tasks
                 Key: ISPN-11211
                 URL: https://issues.redhat.com/browse/ISPN-11211
             Project: Infinispan
          Issue Type: Bug
    Affects Versions: 9.4.0.Final
            Reporter: Nistor Adrian
            Assignee: Nistor Adrian
             Fix For: 9.4.18.Final


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.

{code}
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 at 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
{code}




--
This message was sent by Atlassian Jira
(v7.13.8#713008)


More information about the infinispan-issues mailing list