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

ServerTask - ALL_NODES - No marshaller registered for Java type java.util.Collections$SynchronizedRandomAccessList

    XMLWordPrintable

Details

    • Bug
    • Resolution: Unresolved
    • Major
    • None
    • 11.0.0.Final
    • Tasks
    • None
    • Hide

      Tested on JDK8 with Infinispan server distribution 11.0.0.Final, running multiple standalone instances locally.

      Any Server Task with ExecutionMode set to ALL_NODES throws the error.

      Can easily be reproduced with this simple example (forked from the infinispan-simple-tutorials repo), available here:
      https://github.com/Gingerbreadz/infinispan-simple-tutorials/tree/master/distributed-server-tasks

      Show
      Tested on JDK8 with Infinispan server distribution 11.0.0.Final, running multiple standalone instances locally. Any Server Task with ExecutionMode set to ALL_NODES throws the error. Can easily be reproduced with this simple example (forked from the infinispan-simple-tutorials repo), available here: https://github.com/Gingerbreadz/infinispan-simple-tutorials/tree/master/distributed-server-tasks

    Description

      When deploying and running ServerTask.s in ALL_NODES execution mode, the task execution fails and the following server error is returned to the hotrod client.

      Exception in thread "main" org.infinispan.client.hotrod.exceptions.HotRodClientException:Request for messageId=15 returned server error (status=0x85): org.infinispan.commons.marshall.MarshallingException: No marshaller registered for Java type java.util.Collections$SynchronizedRandomAccessList
      	at org.infinispan.client.hotrod.impl.protocol.Codec20.checkForErrorsInResponseStatus(Codec20.java:329)
      	at org.infinispan.client.hotrod.impl.protocol.Codec20.readHeader(Codec20.java:168)
      	at org.infinispan.client.hotrod.impl.transport.netty.HeaderDecoder.decode(HeaderDecoder.java:140)
      	at org.infinispan.client.hotrod.impl.transport.netty.HintedReplayingDecoder.callDecode(HintedReplayingDecoder.java:94)
      	at io.netty.handler.codec.ByteToMessageDecoder.channelRead(ByteToMessageDecoder.java:276)
      	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
      	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
      	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
      	at io.netty.handler.timeout.IdleStateHandler.channelRead(IdleStateHandler.java:286)
      	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
      	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
      	at io.netty.channel.AbstractChannelHandlerContext.fireChannelRead(AbstractChannelHandlerContext.java:357)
      	at io.netty.channel.DefaultChannelPipeline$HeadContext.channelRead(DefaultChannelPipeline.java:1410)
      	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:379)
      	at io.netty.channel.AbstractChannelHandlerContext.invokeChannelRead(AbstractChannelHandlerContext.java:365)
      	at io.netty.channel.DefaultChannelPipeline.fireChannelRead(DefaultChannelPipeline.java:919)
      	at io.netty.channel.epoll.AbstractEpollStreamChannel$EpollStreamUnsafe.epollInReady(AbstractEpollStreamChannel.java:792)
      	at io.netty.channel.epoll.EpollEventLoop.processReady(EpollEventLoop.java:475)
      	at io.netty.channel.epoll.EpollEventLoop.run(EpollEventLoop.java:378)
      	at io.netty.util.concurrent.SingleThreadEventExecutor$4.run(SingleThreadEventExecutor.java:989)
      	at io.netty.util.internal.ThreadExecutorMap$2.run(ThreadExecutorMap.java:74)
      	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)
      
      

      I suspect org.infinispan.server.tasks.DistributedServerTaskRunner tries to return to the hotrod client a java.util.Collections.SynchronizedRandomAccessList it created to collect return values from the ClusterExecutor. I could not work around this by requesting a specific DataFormat before executing the task - the hotrod client would always fail to unmarshall the received data.

      Attachments

        Issue Links

          Activity

            People

              Unassigned Unassigned
              leforta Anatole Lefort (Inactive)
              Votes:
              0 Vote for this issue
              Watchers:
              3 Start watching this issue

              Dates

                Created:
                Updated: