[
https://issues.jboss.org/browse/ISPN-3398?page=com.atlassian.jira.plugin....
]
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/jo...
https://jenkins.mw.lab.eng.bos.redhat.com/hudson/view/JDG/view/PERF-CS/jo...
--
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