[infinispan-issues] [JBoss JIRA] (ISPN-2841) DefaultExecutorService: No possibility to set ClassLoader used for cloning Callables
Galder Zamarreño (JIRA)
issues at jboss.org
Tue Jun 19 07:51:00 EDT 2018
[ https://issues.jboss.org/browse/ISPN-2841?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Galder Zamarreño resolved ISPN-2841.
------------------------------------
Resolution: Out of Date
> DefaultExecutorService: No possibility to set ClassLoader used for cloning Callables
> ------------------------------------------------------------------------------------
>
> Key: ISPN-2841
> URL: https://issues.jboss.org/browse/ISPN-2841
> Project: Infinispan
> Issue Type: Enhancement
> Components: Clustered Executor
> Affects Versions: 5.2.1.Final
> Reporter: Carsten Lohmann
> Assignee: Galder Zamarreño
>
> When using the DistributedExecutorService we noticed that the ContextClassLoader of the current thread is used for cloning the Callable.
> But this ClassLoader wasn't able to find the Callable class in our case, so we got this exception:
> {noformat}
> org.infinispan.CacheException: java.lang.ClassNotFoundException: [...]Callable
> at org.infinispan.util.Util.cloneWithMarshaller(Util.java:259)
> at org.infinispan.distexec.DefaultExecutorService.clone(DefaultExecutorService.java:555)
> at org.infinispan.distexec.DefaultExecutorService.submitEverywhere(DefaultExecutorService.java:510)
> at org.infinispan.distexec.DefaultExecutorService.submitEverywhere(DefaultExecutorService.java:497)
> [...]
> Caused by: java.lang.ClassNotFoundException: [...]Callable
> at java.net.URLClassLoader$1.run(URLClassLoader.java:366)
> at java.net.URLClassLoader$1.run(URLClassLoader.java:355)
> at java.security.AccessController.doPrivileged(Native Method)
> at java.net.URLClassLoader.findClass(URLClassLoader.java:354)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:423)
> at sun.misc.Launcher$AppClassLoader.loadClass(Launcher.java:308)
> at java.lang.ClassLoader.loadClass(ClassLoader.java:356)
> at java.lang.Class.forName0(Native Method)
> at java.lang.Class.forName(Class.java:264)
> at org.jboss.marshalling.AbstractClassResolver.loadClass(AbstractClassResolver.java:135)
> at org.jboss.marshalling.AbstractClassResolver.resolveClass(AbstractClassResolver.java:116)
> at org.jboss.marshalling.river.RiverUnmarshaller.doReadClassDescriptor(RiverUnmarshaller.java:893)
> at org.jboss.marshalling.river.RiverUnmarshaller.doReadNewObject(RiverUnmarshaller.java:1205)
> at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:272)
> at org.jboss.marshalling.river.RiverUnmarshaller.doReadObject(RiverUnmarshaller.java:209)
> at org.jboss.marshalling.AbstractObjectInput.readObject(AbstractObjectInput.java:37)
> at org.infinispan.marshall.jboss.AbstractJBossMarshaller.objectFromObjectStream(AbstractJBossMarshaller.java:163)
> at org.infinispan.marshall.VersionAwareMarshaller.objectFromByteBuffer(VersionAwareMarshaller.java:116)
> at org.infinispan.marshall.AbstractMarshaller.objectFromByteBuffer(AbstractMarshaller.java:106)
> at org.infinispan.marshall.AbstractDelegatingMarshaller.objectFromByteBuffer(AbstractDelegatingMarshaller.java:99)
> at org.infinispan.util.Util.cloneWithMarshaller(Util.java:254)
> {noformat}
> So there should be a possibility to explicitly set the ClassLoader that the ExecutorService will use for cloning the Callable.
> Maybe by using the ClassLoader set via AdvancedCache.with(ClassLoader) on the AdvancedCache given to the ExecutorService.
--
This message was sent by Atlassian JIRA
(v7.5.0#75005)
More information about the infinispan-issues
mailing list