Description
If an unrecognized opcode or flag is used in a native protocol message, it results in an unhandled ArrayIndexOutOfBoundsException server-side. This can happen when features from a new protocol version are used with an older version of Cassandra.
Here's one example stacktrace:
ERROR [Native-Transport-Requests:5] 2014-06-24 11:09:50,167 ErrorMessage.java (line 210) Unexpected exception during request java.lang.ArrayIndexOutOfBoundsException: 15 at org.apache.cassandra.transport.Message$Type.fromOpcode(Message.java:102) at org.apache.cassandra.transport.Frame$Decoder.decode(Frame.java:179) at org.jboss.netty.handler.codec.frame.FrameDecoder.callDecode(FrameDecoder.java:425) at org.jboss.netty.handler.codec.frame.FrameDecoder.messageReceived(FrameDecoder.java:303) at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:268) at org.jboss.netty.channel.Channels.fireMessageReceived(Channels.java:255) at org.jboss.netty.channel.socket.nio.NioWorker.read(NioWorker.java:88) at org.jboss.netty.channel.socket.nio.AbstractNioWorker.process(AbstractNioWorker.java:109) at org.jboss.netty.channel.socket.nio.AbstractNioSelector.run(AbstractNioSelector.java:312) at org.jboss.netty.channel.socket.nio.AbstractNioWorker.run(AbstractNioWorker.java:90) at org.jboss.netty.channel.socket.nio.NioWorker.run(NioWorker.java:178) at java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145) at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615) at java.lang.Thread.run(Thread.java:745)