2 Replies Latest reply on Jan 29, 2015 12:49 PM by frank_s

    HotRod client 7.0.3 sending invalid 2.0 code when using "1.3" protocol version

    frank_s

      I am attempting to switch to Infinispan 7.0.3.  I have 3 Infinispan servers in a cluster supporting HotRod.

       

      My Java clients are using the latest 7.0.3 HotRod client library.  I was getting endless "ArrayIndexOutOfBounds" exceptions on the client side which appears to be a defect with the HotRod 2.0 protocol handling view changes, so I was trying to work around it by setting the protocol version to 1.3.

       

      I'm doing this with the ConfigurationBuilder to specify the version:

       

      cb.protocolVersion("1.3").


      I can see in the logs that it using Codec13.

       

      The problem is that one of my clients is calling "isEmpty" on the cache, and the HotRod library is using code 0x29 (41) which is a new code specific to HotRod 2.0.

       

      Here is some TRACE output from the HotRod client:

       

      [2015-01-26 18:53:04,456 TRACE he_Timer-1 undRobinBalancingStrategy] Returning server: /10.22.6.227:11222

      [2015-01-26 18:53:04,456 TRACE he_Timer-1 TcpTransportFactory      ] Using the balancer for determining the server: /10.22.6.227:11222

      [2015-01-26 18:53:04,456 TRACE he_Timer-1 TransportObjectFactory   ] Fetching from pool: TcpTransport{socket=Socket[addr=/10.22.6.227,port=11222,localport=59868], serverAddress=/10.22.6.227:11222, id =93}

      [2015-01-26 18:53:04,456 TRACE he_Timer-1 TcpTransportFactory      ] For server /10.22.6.227:11222: active = 1; idle = 0

      [2015-01-26 18:53:04,456 TRACE he_Timer-1 Codec13                  ] Wrote header for message 3035. Operation code: 0x29. Flags: 0x0

      [2015-01-26 18:53:04,458 TRACE he_Timer-1 Codec13                  ] Received response for message id: 3035

      [2015-01-26 18:53:04,458 TRACE he_Timer-1 Codec13                  ] Received operation status: 0x82

      [2015-01-26 18:53:04,458 TRACE he_Timer-1 AbstractTransport        ] Read string is: org.infinispan.server.hotrod.HotRodUnknownOperationException: Unknown operation: 41

      [2015-01-26 18:53:04,458 WARN  he_Timer-1 Codec13                  ] ISPN004005: Error received from the server: org.infinispan.server.hotrod.HotRodUnknownOperationException: Unknown operation: 41

      [2015-01-26 18:53:04,459 TRACE he_Timer-1 TcpTransportFactory      ] Dropping connection as it is no longer valid: TcpTransport{socket=Socket[addr=/10.22.6.227,port=11222,localport=59868], serverAddress=/10.22.6.227:11222, id =93}

      [2015-01-26 18:53:04,459 TRACE he_Timer-1 TransportObjectFactory   ] About to destroy tcp transport: TcpTransport{socket=Socket[addr=/10.22.6.227,port=11222,localport=59868], serverAddress=/10.22.6.227:11222, id =93}

       

      So far, other operations seem to work fine using the "1.3" codec.

       

      As a sanity test, I switched the client lib back to 6.0.2, but left the server at 7.0.3, and that seems to be stable (so far...).

       

      Ideas?  Is this a defect?