[infinispan-issues] [JBoss JIRA] (ISPN-3398) Unmarshall problem in compatibility mode
Martin Gencur (JIRA)
jira-events at lists.jboss.org
Fri Sep 13 03:18:03 EDT 2013
[ https://issues.jboss.org/browse/ISPN-3398?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=12804069#comment-12804069 ]
Martin Gencur commented on ISPN-3398:
-------------------------------------
I found the root cause. It is similar to ISPN-3406 where boxValue/boxKey/unboxValue is called twice. First on the node where the Put command originated and then on the other node where the data is replicated. Since the data was already unmarshalled on the originating node, another attempt to unmarshall the data from the byte array fails with the exception above.
This is only replicable in dist/repl mode and with byte array values. The HotRodTypeConverter handles byte arrays in a special way and hence this problem appears.
However, this problem is more general. Not only put command is affected but IMO also replace and remove commands. And not only with bytearray values but also with bytearray keys. Also, I think that if we specified a marshaller for EmbeddedTypeConverter, it would not be possible to store byte array values either, and that also in single-node deployment. That's because the converter is automatically trying to unmarshall the byte array (but of course it depends how the marshaller is implemented).
Here you can find tests to reproduce the issues for all the operations:
https://github.com/mgencur/infinispan/tree/ISPN-3398/unmarshall_compat
> Unmarshall problem in compatibility mode
> ----------------------------------------
>
> Key: ISPN-3398
> URL: https://issues.jboss.org/browse/ISPN-3398
> Project: Infinispan
> Issue Type: Bug
> Components: Marshalling, Remote protocols, Server
> Affects Versions: 6.0.0.Alpha2
> Reporter: Michal Linhard
> Assignee: Galder Zamarreño
> Fix For: 5.3.0.Beta1
>
>
> JDG 6.2.0.DR2 client/server tests using hotrod and cache in compatibility mode:
> throw this:
> {code}
> 04:48:28,445 ERROR [org.infinispan.interceptors.InvocationContextInterceptor] (remote-thread-0) ISPN000136: Execution error: java.io.IOException: Unsupported protocol version 9
> at org.jboss.marshalling.river.RiverUnmarshaller.start(RiverUnmarshaller.java:1243)
> at org.infinispan.commons.marshall.jboss.AbstractJBossMarshaller.startObjectInput(AbstractJBossMarshaller.java:138) [infinispan-commons-6.0.0.Alpha2-redhat-1.jar:6.0.0.Alpha2-redhat-1]
> at org.infinispan.commons.marshall.jboss.AbstractJBossMarshaller.objectFromByteBuffer(AbstractJBossMarshaller.java:119) [infinispan-commons-6.0.0.Alpha2-redhat-1.jar:6.0.0.Alpha2-redhat-1]
> at org.infinispan.commons.marshall.AbstractMarshaller.objectFromByteBuffer(AbstractMarshaller.java:83) [infinispan-commons-6.0.0.Alpha2-redhat-1.jar:6.0.0.Alpha2-redhat-1]
> at org.infinispan.server.hotrod.HotRodTypeConverter.unmarshall(HotRodTypeConverter.scala:36) [infinispan-server-hotrod-6.0.0.Alpha2-redhat-1.jar:6.0.0.Alpha2-redhat-1]
> at org.infinispan.server.hotrod.HotRodTypeConverter.boxValue(HotRodTypeConverter.scala:22) [infinispan-server-hotrod-6.0.0.Alpha2-redhat-1.jar:6.0.0.Alpha2-redhat-1]
> at org.infinispan.interceptors.compat.TypeConverterInterceptor.visitPutKeyValueCommand(TypeConverterInterceptor.java:72) [infinispan-core-6.0.0.Alpha2-redhat-1.jar:6.0.0.Alpha2-redhat-1]
> at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:62) [infinispan-core-6.0.0.Alpha2-redhat-1.jar:6.0.0.Alpha2-redhat-1]
> at org.infinispan.interceptors.base.CommandInterceptor.invokeNextInterceptor(CommandInterceptor.java:98) [infinispan-core-6.0.0.Alpha2-redhat-1.jar:6.0.0.Alpha2-redhat-1]
> at org.infinispan.interceptors.InvocationContextInterceptor.handleAll(InvocationContextInterceptor.java:106) [infinispan-core-6.0.0.Alpha2-redhat-1.jar:6.0.0.Alpha2-redhat-1]
> at org.infinispan.interceptors.InvocationContextInterceptor.handleDefault(InvocationContextInterceptor.java:70) [infinispan-core-6.0.0.Alpha2-redhat-1.jar:6.0.0.Alpha2-redhat-1]
> at org.infinispan.commands.AbstractVisitor.visitPutKeyValueCommand(AbstractVisitor.java:32) [infinispan-core-6.0.0.Alpha2-redhat-1.jar:6.0.0.Alpha2-redhat-1]
> at org.infinispan.commands.write.PutKeyValueCommand.acceptVisitor(PutKeyValueCommand.java:62) [infinispan-core-6.0.0.Alpha2-redhat-1.jar:6.0.0.Alpha2-redhat-1]
> at org.infinispan.interceptors.InterceptorChain.invoke(InterceptorChain.java:321) [infinispan-core-6.0.0.Alpha2-redhat-1.jar:6.0.0.Alpha2-redhat-1]
> at org.infinispan.commands.remote.BaseRpcInvokingCommand.processVisitableCommand(BaseRpcInvokingCommand.java:39) [infinispan-core-6.0.0.Alpha2-redhat-1.jar:6.0.0.Alpha2-redhat-1]
> at org.infinispan.commands.remote.SingleRpcCommand.perform(SingleRpcCommand.java:48) [infinispan-core-6.0.0.Alpha2-redhat-1.jar:6.0.0.Alpha2-redhat-1]
> at org.infinispan.remoting.InboundInvocationHandlerImpl.handleInternal(InboundInvocationHandlerImpl.java:97) [infinispan-core-6.0.0.Alpha2-redhat-1.jar:6.0.0.Alpha2-redhat-1]
> at org.infinispan.remoting.InboundInvocationHandlerImpl.access$000(InboundInvocationHandlerImpl.java:46) [infinispan-core-6.0.0.Alpha2-redhat-1.jar:6.0.0.Alpha2-redhat-1]
> at org.infinispan.remoting.InboundInvocationHandlerImpl$2.run(InboundInvocationHandlerImpl.java:169) [infinispan-core-6.0.0.Alpha2-redhat-1.jar:6.0.0.Alpha2-redhat-1]
> at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) [rt.jar:1.7.0_25]
> at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) [rt.jar:1.7.0_25]
> at java.lang.Thread.run(Thread.java:724) [rt.jar:1.7.0_25]
> {code}
> the exception appears for each request, the form is always
> "Unsupported protocol version X" where X differs
> see
> https://jenkins.mw.lab.eng.bos.redhat.com/hudson/view/JDG/view/PERF-CS/job/jdg-perf-cs-client-stress-test-hotrod/427/artifact/report/size4/loganalysis/server/index.html
> https://jenkins.mw.lab.eng.bos.redhat.com/hudson/view/JDG/view/PERF-CS/job/jdg-perf-cs-client-stress-test-hotrod/427/artifact/report/size4/loganalysis/client/index.html
--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators
For more information on JIRA, see: http://www.atlassian.com/software/jira
More information about the infinispan-issues
mailing list