[
https://issues.apache.org/jira/browse/CASSANDRA-8813?page=com.atlassian.jira.plugin.system.issuetabpanels:comment-tabpanel&focusedCommentId=14323958#comment-14323958
]
Sylvain Lebresne commented on CASSANDRA-8813:
---------------------------------------------
I'm not really sure what "cqlclient" is, but you're not really supposed to use
{{MapType.compose}} in client codes. But yes, that method does assume the
protocol v3 encoding if that's what you mean. It's not a bug, it's what make
sense for the code server side since {{compose()}} is only used with frozen
maps which does always use the v3 encoding. If you want to deserialize a map
value for a specific protocol version, you should look at
{{MapSerializer.deserializeForNativeProtocol}}. Or really, don't use server
side classes. The [DataStax Java
Driver|https://github.com/datastax/java-driver] has everything you need to
[deserialize
values|http://www.datastax.com/drivers/java/2.1/com/datastax/driver/core/DataType.html#deserialize(java.nio.ByteBuffer,%20com.datastax.driver.core.ProtocolVersion)]
(but in most cases, you shouldn't even have to bother with that).
So closing as invalid, but if you think I'm misunderstood something and there
does is a bug in {{MapType.compose}}, please provide more context on what
you're doing exactly.
> MapType.compose throws java.lang.IllegalArgumentException: null when either
> of the key or value pair in map type object is of type int (Int32Type)
> --------------------------------------------------------------------------------------------------------------------------------------------------
>
> Key: CASSANDRA-8813
> URL: https://issues.apache.org/jira/browse/CASSANDRA-8813
> Project: Cassandra
> Issue Type: Bug
> Components: API, Drivers (now out of tree)
> Reporter: Chhavi Gangwal
> Fix For: 2.1.4
>
>
> {code}java.lang.IllegalArgumentException: null at
> java.nio.Buffer.limit(Buffer.java:267) ~[na:1.7.0] at
> org.apache.cassandra.utils.ByteBufferUtil.readBytes(ByteBufferUtil.java:543)
> ~[cassandra-all-2.1.2.jar:2.1.2] at
> org.apache.cassandra.serializers.CollectionSerializer.readValue(CollectionSerializer.java:122)
> ~[cassandra-all-2.1.2.jar:2.1.2] at
> org.apache.cassandra.serializers.MapSerializer.deserializeForNativeProtocol(MapSerializer.java:99)
> ~[cassandra-all-2.1.2.jar:2.1.2] at
> org.apache.cassandra.serializers.MapSerializer.deserializeForNativeProtocol(MapSerializer.java:28)
> ~[cassandra-all-2.1.2.jar:2.1.2] at
> org.apache.cassandra.serializers.CollectionSerializer.deserialize(CollectionSerializer.java:48)
> ~[cassandra-all-2.1.2.jar:2.1.2] at
> org.apache.cassandra.db.marshal.AbstractType.compose(AbstractType.java:66)
> ~[cassandra-all-2.1.2.jar:2.1.2]
> {code}
> The issue mainly occurs due to forced readBytes function in
> CollectionSerializer with version 3 for all collection types as well as UDT
--
This message was sent by Atlassian JIRA
(v6.3.4#6332)