[infinispan-issues] [JBoss JIRA] (ISPN-1465) Unsupported protocol version when handling RPC messages

Galder Zamarreño (Commented) (JIRA) jira-events at lists.jboss.org
Tue Oct 18 17:29:45 EDT 2011


    [ https://issues.jboss.org/browse/ISPN-1465?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12635573#comment-12635573 ] 

Galder Zamarreño commented on ISPN-1465:
----------------------------------------

It's very weird this hasn't got caught in our testsuite, which is why I'm slightly worried about rushing a fix for this in BETA2.

I'm probably gonna release BETA2 tomorrow morning CEST time anyway. We're likely to do a BETA3 next Monday anyway with other missing bits in BETA2.
                
> Unsupported protocol version when handling RPC messages
> -------------------------------------------------------
>
>                 Key: ISPN-1465
>                 URL: https://issues.jboss.org/browse/ISPN-1465
>             Project: Infinispan
>          Issue Type: Bug
>          Components: RPC
>    Affects Versions: 5.1.0.BETA1
>            Reporter: Paul Ferraro
>            Assignee: Paul Ferraro
>            Priority: Blocker
>             Fix For: 5.1.0.BETA2
>
>
> When testing the latest BETA1 as well as the latest SNAPSHOT (in anticipation of BETA2), I see the following exceptions in the AS7 testsuite:
> WARN: Problems unmarshalling remote command from byte buffer
> java.io.IOException: Unsupported protocol version 172
> 	at org.jboss.marshalling.river.RiverUnmarshaller.start(RiverUnmarshaller.java:1184)
> 	at org.infinispan.marshall.jboss.AbstractJBossMarshaller.startObjectInput(AbstractJBossMarshaller.java:113)
> 	at org.infinispan.marshall.VersionAwareMarshaller.startObjectInput(VersionAwareMarshaller.java:156)
> 	at org.infinispan.marshall.VersionAwareMarshaller.objectFromByteBuffer(VersionAwareMarshaller.java:112)
> 	at org.infinispan.marshall.AbstractDelegatingMarshaller.objectFromByteBuffer(AbstractDelegatingMarshaller.java:80)
> 	at org.infinispan.remoting.transport.jgroups.MarshallerAdapter.objectFromBuffer(MarshallerAdapter.java:50)
> 	at org.infinispan.remoting.transport.jgroups.CommandAwareRpcDispatcher.handle(CommandAwareRpcDispatcher.java:139)
> 	at org.jgroups.blocks.RequestCorrelator.handleRequest(RequestCorrelator.java:446)
> 	at org.jgroups.blocks.RequestCorrelator.receiveMessage(RequestCorrelator.java:353)
> 	at org.jgroups.blocks.RequestCorrelator.receive(RequestCorrelator.java:229)
> 	at org.jgroups.blocks.MessageDispatcher$ProtocolAdapter.up(MessageDispatcher.java:556)
> 	at org.jgroups.JChannel.up(JChannel.java:718)
> 	at org.jgroups.stack.ProtocolStack.up(ProtocolStack.java:1026)
> 	at org.jgroups.protocols.pbcast.FLUSH.up(FLUSH.java:481)
> 	at org.jgroups.protocols.pbcast.STATE_TRANSFER.up(STATE_TRANSFER.java:178)
> 	at org.jgroups.protocols.FRAG2.up(FRAG2.java:181)
> 	at org.jgroups.protocols.FlowControl.up(FlowControl.java:400)
> 	at org.jgroups.protocols.FlowControl.up(FlowControl.java:418)
> 	at org.jgroups.protocols.pbcast.GMS.up(GMS.java:865)
> 	at org.jgroups.protocols.pbcast.STABLE.up(STABLE.java:244)
> 	at org.jgroups.protocols.UNICAST.up(UNICAST.java:297)
> 	at org.jgroups.protocols.pbcast.NAKACK.handleMessage(NAKACK.java:719)
> 	at org.jgroups.protocols.pbcast.NAKACK.up(NAKACK.java:547)
> 	at org.jgroups.protocols.BARRIER.up(BARRIER.java:126)
> 	at org.jgroups.protocols.FD_ALL.up(FD_ALL.java:171)
> 	at org.jgroups.protocols.FD_SOCK.up(FD_SOCK.java:273)
> 	at org.jgroups.protocols.MERGE2.up(MERGE2.java:208)
> 	at org.jgroups.protocols.Discovery.up(Discovery.java:335)
> 	at org.jgroups.protocols.TP.passMessageUp(TP.java:1091)
> 	at org.jgroups.protocols.TP$IncomingPacket.handleMyMessage(TP.java:1646)
> 	at org.jgroups.protocols.TP$IncomingPacket.run(TP.java:1623)
> 	at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1110)
> 	at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:603)
> 	at java.lang.Thread.run(Thread.java:679)
> Looking at the CommandAwareRpcDispatcher.handle(Message) (line 139):
>   cmd = (ReplicableCommand) req_marshaller.objectFromBuffer(req.getBuffer(), req.getOffset(), req.getLength());
> However, Message.getBuffer() already returns a copy of the message buffer that takes into account the offset and length.  So, it would seem the above code will return a subset of the desired buffer if the offset > 0.
> Either this code should operate on the raw buffer (i.e. req.getRawBuffer()), or pass 0 as the offset to objectFromBuffer(...).

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: https://issues.jboss.org/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

       



More information about the infinispan-issues mailing list