cassandra
cassandra copied to clipboard
JAVA-3164: Fix rendering UNSET collection types in query tracing
Fix JAVA-3164.
Without the change, request with unset collection type fails with:
java.lang.IndexOutOfBoundsException: null
at java.base/java.nio.Buffer.checkIndex(Buffer.java:693)
at java.base/java.nio.HeapByteBuffer.getInt(HeapByteBuffer.java:406)
at org.apache.cassandra.utils.ByteBufferUtil.toInt(ByteBufferUtil.java:476)
at org.apache.cassandra.db.marshal.ByteBufferAccessor.toInt(ByteBufferAccessor.java:208)
at org.apache.cassandra.db.marshal.ByteBufferAccessor.toInt(ByteBufferAccessor.java:42)
at org.apache.cassandra.serializers.CollectionSerializer.readCollectionSize(CollectionSerializer.java:147)
at org.apache.cassandra.cql3.CQL3Type$Collection.toCQLLiteral(CQL3Type.java:222)
at org.apache.cassandra.transport.messages.ExecuteMessage.traceQuery(ExecuteMessage.java:223)
at org.apache.cassandra.transport.messages.ExecuteMessage.execute(ExecuteMessage.java:155)
at org.apache.cassandra.transport.Message$Request.execute(Message.java:259)
at org.apache.cassandra.transport.Dispatcher.processRequest(Dispatcher.java:416)
at org.apache.cassandra.transport.Dispatcher.processRequest(Dispatcher.java:435)
at org.apache.cassandra.transport.Dispatcher.processRequest(Dispatcher.java:462)
at org.apache.cassandra.transport.Dispatcher$RequestProcessor.run(Dispatcher.java:307)
at org.apache.cassandra.concurrent.FutureTask$1.call(FutureTask.java:99)
at org.apache.cassandra.concurrent.FutureTask.call(FutureTask.java:61)
at org.apache.cassandra.concurrent.FutureTask.run(FutureTask.java:71)
at org.apache.cassandra.concurrent.SEPWorker.run(SEPWorker.java:143)
at io.netty.util.concurrent.FastThreadLocalRunnable.run(FastThreadLocalRunnable.java:30)
at java.base/java.lang.Thread.run(Thread.java:829)
Unset collection length (-2) is replaced by empty byte buffer.
Issue was wrongly submitted by the requestor to Java driver project.