[jira] [Updated] (CASSANDRA-8062) IllegalArgumentException passing blob as tuple value element in list

2014-10-15 Thread Tyler Hobbs (JIRA)

 [ 
https://issues.apache.org/jira/browse/CASSANDRA-8062?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tyler Hobbs updated CASSANDRA-8062:
---
Since Version: 2.1.0

> IllegalArgumentException passing blob as tuple value element in list
> 
>
> Key: CASSANDRA-8062
> URL: https://issues.apache.org/jira/browse/CASSANDRA-8062
> Project: Cassandra
>  Issue Type: Bug
>  Components: Core
> Environment: Windows 7, DataStax 2.1.0 Cassandra server, Java 
> cassandra-driver-2.1.1 
>Reporter: Bill Mitchell
>Assignee: Tyler Hobbs
> Fix For: 2.1.1
>
> Attachments: 8062.txt
>
>
> I am using the same table schema as described in earlier reports, e.g., 
> CASSANDRA-7105:
> {code}
> CREATE TABLE sr (siteid uuid, listid bigint, partition int, createdate 
> timestamp, emailcrypt blob, emailaddr text, properties text, removedate 
> timestamp. removeimportid bigint,
> PRIMARY KEY ((siteid, listid, partition), createdate, emailcrypt)
> ) WITH CLUSTERING ORDER BY (createdate DESC, emailcrypt DESC);
> {code}
> I am trying to take advantage of the new Tuple support to issue a query to 
> request multiple rows in a single wide row by (createdate,emailcrypt) pair.  
> I declare a new TupleType that covers the clustering columns and then issue 
> an IN predicate against a list of these values:
> {code}
> private static final TupleType dateEmailTupleType = 
> TupleType.of(DataType.timestamp(), DataType.blob());
> ...
> List partitionKeys = new ArrayList<>(recipKeys.size());
> ...
> BoundStatement boundStatement = new BoundStatement(preparedStatement);
> boundStatement = boundStatement.bind(siteID, partition, listID);
> boundStatement.setList(3, partitionKeys);
> {code}
> When I issue a SELECT against this table, the server fails apparently trying 
> to break apart the list values:
> {code}
> DEBUG [SharedPool-Worker-1] 2014-10-05 14:20:15,312 Message.java:420 - 
> Received: PREPARE SELECT emailCrypt, emailAddr, removeDate, removeImportID, 
> properties FROM sr WHERE siteID = ? AND partition = ? AND listID = ? AND ( 
> createDate, emailCrypt ) IN ? ;, v=2
> DEBUG [SharedPool-Worker-1] 2014-10-05 14:20:15,323 Tracing.java:157 - 
> request complete
> DEBUG [SharedPool-Worker-1] 2014-10-05 14:20:15,323 Message.java:433 - 
> Responding: RESULT PREPARED a18ff9151e8bd3b13b48a0ba56ecb784 
> [siteid(testdb_1412536748414, sr), 
> org.apache.cassandra.db.marshal.UUIDType][partition(testdb_1412536748414, 
> sr), org.apache.cassandra.db.marshal.Int32Type][listid(testdb_1412536748414, 
> sr), 
> org.apache.cassandra.db.marshal.LongType][in(createdate,emailcrypt)(testdb_1412536748414,
>  sr), 
> org.apache.cassandra.db.marshal.ListType(org.apache.cassandra.db.marshal.TupleType(org.apache.cassandra.db.marshal.ReversedType(org.apache.cassandra.db.marshal.TimestampType),org.apache.cassandra.db.marshal.ReversedType(org.apache.cassandra.db.marshal.BytesType)))]
>  (resultMetadata=[emailcrypt(testdb_1412536748414, sr), 
> org.apache.cassandra.db.marshal.ReversedType(org.apache.cassandra.db.marshal.BytesType)][emailaddr(testdb_1412536748414,
>  sr), 
> org.apache.cassandra.db.marshal.UTF8Type][removedate(testdb_1412536748414, 
> sr), 
> org.apache.cassandra.db.marshal.TimestampType][removeimportid(testdb_1412536748414,
>  sr), 
> org.apache.cassandra.db.marshal.LongType][properties(testdb_1412536748414, 
> sr), org.apache.cassandra.db.marshal.UTF8Type]), v=2
> DEBUG [SharedPool-Worker-1] 2014-10-05 14:20:15,363 Message.java:420 - 
> Received: EXECUTE a18ff9151e8bd3b13b48a0ba56ecb784 with 4 values at 
> consistency QUORUM, v=2
> DEBUG [SharedPool-Worker-2] 2014-10-05 14:20:15,380 Message.java:420 - 
> Received: EXECUTE a18ff9151e8bd3b13b48a0ba56ecb784 with 4 values at 
> consistency QUORUM, v=2
> DEBUG [SharedPool-Worker-5] 2014-10-05 14:20:15,402 Message.java:420 - 
> Received: EXECUTE a18ff9151e8bd3b13b48a0ba56ecb784 with 4 values at 
> consistency QUORUM, v=2
> ERROR [SharedPool-Worker-5] 2014-10-05 14:20:16,125 ErrorMessage.java:218 - 
> Unexpected exception during request
> java.lang.IllegalArgumentException: null
>   at java.nio.Buffer.limit(Unknown Source) ~[na:1.7.0_25]
>   at 
> org.apache.cassandra.utils.ByteBufferUtil.readBytes(ByteBufferUtil.java:539) 
> ~[apache-cassandra-2.1.0.jar:2.1.0]
>   at 
> org.apache.cassandra.serializers.CollectionSerializer.readValue(CollectionSerializer.java:122)
>  ~[apache-cassandra-2.1.0.jar:2.1.0]
>   at 
> org.apache.cassandra.serializers.ListSerializer.deserializeForNativeProtocol(ListSerializer.java:87)
>  ~[apache-cassandra-2.1.0.jar:2.1.0]
>   at 
> org.apache.cassandra.serializers.ListSerializer.deserializeForNativeProtocol(ListSerializer.java:27)
>  ~[apache-cassandra-2.1.0.jar:2.1.0]
>   at 
> org.a

[jira] [Updated] (CASSANDRA-8062) IllegalArgumentException passing blob as tuple value element in list

2014-10-15 Thread Tyler Hobbs (JIRA)

 [ 
https://issues.apache.org/jira/browse/CASSANDRA-8062?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tyler Hobbs updated CASSANDRA-8062:
---
Attachment: 8062.txt

8062.txt uses the proper protocol version when deserializing IN value lists of 
tuples.  I have a [new 
dtest|https://github.com/thobbs/cassandra-dtest/tree/CASSANDRA-8062] that 
reproduces the issue as well.

> IllegalArgumentException passing blob as tuple value element in list
> 
>
> Key: CASSANDRA-8062
> URL: https://issues.apache.org/jira/browse/CASSANDRA-8062
> Project: Cassandra
>  Issue Type: Bug
>  Components: Core
> Environment: Windows 7, DataStax 2.1.0 Cassandra server, Java 
> cassandra-driver-2.1.1 
>Reporter: Bill Mitchell
>Assignee: Tyler Hobbs
> Fix For: 2.1.1
>
> Attachments: 8062.txt
>
>
> I am using the same table schema as described in earlier reports, e.g., 
> CASSANDRA-7105:
> {code}
> CREATE TABLE sr (siteid uuid, listid bigint, partition int, createdate 
> timestamp, emailcrypt blob, emailaddr text, properties text, removedate 
> timestamp. removeimportid bigint,
> PRIMARY KEY ((siteid, listid, partition), createdate, emailcrypt)
> ) WITH CLUSTERING ORDER BY (createdate DESC, emailcrypt DESC);
> {code}
> I am trying to take advantage of the new Tuple support to issue a query to 
> request multiple rows in a single wide row by (createdate,emailcrypt) pair.  
> I declare a new TupleType that covers the clustering columns and then issue 
> an IN predicate against a list of these values:
> {code}
> private static final TupleType dateEmailTupleType = 
> TupleType.of(DataType.timestamp(), DataType.blob());
> ...
> List partitionKeys = new ArrayList<>(recipKeys.size());
> ...
> BoundStatement boundStatement = new BoundStatement(preparedStatement);
> boundStatement = boundStatement.bind(siteID, partition, listID);
> boundStatement.setList(3, partitionKeys);
> {code}
> When I issue a SELECT against this table, the server fails apparently trying 
> to break apart the list values:
> {code}
> DEBUG [SharedPool-Worker-1] 2014-10-05 14:20:15,312 Message.java:420 - 
> Received: PREPARE SELECT emailCrypt, emailAddr, removeDate, removeImportID, 
> properties FROM sr WHERE siteID = ? AND partition = ? AND listID = ? AND ( 
> createDate, emailCrypt ) IN ? ;, v=2
> DEBUG [SharedPool-Worker-1] 2014-10-05 14:20:15,323 Tracing.java:157 - 
> request complete
> DEBUG [SharedPool-Worker-1] 2014-10-05 14:20:15,323 Message.java:433 - 
> Responding: RESULT PREPARED a18ff9151e8bd3b13b48a0ba56ecb784 
> [siteid(testdb_1412536748414, sr), 
> org.apache.cassandra.db.marshal.UUIDType][partition(testdb_1412536748414, 
> sr), org.apache.cassandra.db.marshal.Int32Type][listid(testdb_1412536748414, 
> sr), 
> org.apache.cassandra.db.marshal.LongType][in(createdate,emailcrypt)(testdb_1412536748414,
>  sr), 
> org.apache.cassandra.db.marshal.ListType(org.apache.cassandra.db.marshal.TupleType(org.apache.cassandra.db.marshal.ReversedType(org.apache.cassandra.db.marshal.TimestampType),org.apache.cassandra.db.marshal.ReversedType(org.apache.cassandra.db.marshal.BytesType)))]
>  (resultMetadata=[emailcrypt(testdb_1412536748414, sr), 
> org.apache.cassandra.db.marshal.ReversedType(org.apache.cassandra.db.marshal.BytesType)][emailaddr(testdb_1412536748414,
>  sr), 
> org.apache.cassandra.db.marshal.UTF8Type][removedate(testdb_1412536748414, 
> sr), 
> org.apache.cassandra.db.marshal.TimestampType][removeimportid(testdb_1412536748414,
>  sr), 
> org.apache.cassandra.db.marshal.LongType][properties(testdb_1412536748414, 
> sr), org.apache.cassandra.db.marshal.UTF8Type]), v=2
> DEBUG [SharedPool-Worker-1] 2014-10-05 14:20:15,363 Message.java:420 - 
> Received: EXECUTE a18ff9151e8bd3b13b48a0ba56ecb784 with 4 values at 
> consistency QUORUM, v=2
> DEBUG [SharedPool-Worker-2] 2014-10-05 14:20:15,380 Message.java:420 - 
> Received: EXECUTE a18ff9151e8bd3b13b48a0ba56ecb784 with 4 values at 
> consistency QUORUM, v=2
> DEBUG [SharedPool-Worker-5] 2014-10-05 14:20:15,402 Message.java:420 - 
> Received: EXECUTE a18ff9151e8bd3b13b48a0ba56ecb784 with 4 values at 
> consistency QUORUM, v=2
> ERROR [SharedPool-Worker-5] 2014-10-05 14:20:16,125 ErrorMessage.java:218 - 
> Unexpected exception during request
> java.lang.IllegalArgumentException: null
>   at java.nio.Buffer.limit(Unknown Source) ~[na:1.7.0_25]
>   at 
> org.apache.cassandra.utils.ByteBufferUtil.readBytes(ByteBufferUtil.java:539) 
> ~[apache-cassandra-2.1.0.jar:2.1.0]
>   at 
> org.apache.cassandra.serializers.CollectionSerializer.readValue(CollectionSerializer.java:122)
>  ~[apache-cassandra-2.1.0.jar:2.1.0]
>   at 
> org.apache.cassandra.serializers.ListSerializer.deserializeForNativeProtocol(ListSerializer.java:87)
> 

[jira] [Updated] (CASSANDRA-8062) IllegalArgumentException passing blob as tuple value element in list

2014-10-15 Thread Tyler Hobbs (JIRA)

 [ 
https://issues.apache.org/jira/browse/CASSANDRA-8062?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Tyler Hobbs updated CASSANDRA-8062:
---
Fix Version/s: 2.1.1

The problem is that Tuples.InValue assumes the v3 protocol when deserializing 
the list of tuples, so the read of the collection size is incorrect, as you 
suspected.

> IllegalArgumentException passing blob as tuple value element in list
> 
>
> Key: CASSANDRA-8062
> URL: https://issues.apache.org/jira/browse/CASSANDRA-8062
> Project: Cassandra
>  Issue Type: Bug
>  Components: Core
> Environment: Windows 7, DataStax 2.1.0 Cassandra server, Java 
> cassandra-driver-2.1.1 
>Reporter: Bill Mitchell
>Assignee: Tyler Hobbs
> Fix For: 2.1.1
>
>
> I am using the same table schema as described in earlier reports, e.g., 
> CASSANDRA-7105:
> {code}
> CREATE TABLE sr (siteid uuid, listid bigint, partition int, createdate 
> timestamp, emailcrypt blob, emailaddr text, properties text, removedate 
> timestamp. removeimportid bigint,
> PRIMARY KEY ((siteid, listid, partition), createdate, emailcrypt)
> ) WITH CLUSTERING ORDER BY (createdate DESC, emailcrypt DESC);
> {code}
> I am trying to take advantage of the new Tuple support to issue a query to 
> request multiple rows in a single wide row by (createdate,emailcrypt) pair.  
> I declare a new TupleType that covers the clustering columns and then issue 
> an IN predicate against a list of these values:
> {code}
> private static final TupleType dateEmailTupleType = 
> TupleType.of(DataType.timestamp(), DataType.blob());
> ...
> List partitionKeys = new ArrayList<>(recipKeys.size());
> ...
> BoundStatement boundStatement = new BoundStatement(preparedStatement);
> boundStatement = boundStatement.bind(siteID, partition, listID);
> boundStatement.setList(3, partitionKeys);
> {code}
> When I issue a SELECT against this table, the server fails apparently trying 
> to break apart the list values:
> {code}
> DEBUG [SharedPool-Worker-1] 2014-10-05 14:20:15,312 Message.java:420 - 
> Received: PREPARE SELECT emailCrypt, emailAddr, removeDate, removeImportID, 
> properties FROM sr WHERE siteID = ? AND partition = ? AND listID = ? AND ( 
> createDate, emailCrypt ) IN ? ;, v=2
> DEBUG [SharedPool-Worker-1] 2014-10-05 14:20:15,323 Tracing.java:157 - 
> request complete
> DEBUG [SharedPool-Worker-1] 2014-10-05 14:20:15,323 Message.java:433 - 
> Responding: RESULT PREPARED a18ff9151e8bd3b13b48a0ba56ecb784 
> [siteid(testdb_1412536748414, sr), 
> org.apache.cassandra.db.marshal.UUIDType][partition(testdb_1412536748414, 
> sr), org.apache.cassandra.db.marshal.Int32Type][listid(testdb_1412536748414, 
> sr), 
> org.apache.cassandra.db.marshal.LongType][in(createdate,emailcrypt)(testdb_1412536748414,
>  sr), 
> org.apache.cassandra.db.marshal.ListType(org.apache.cassandra.db.marshal.TupleType(org.apache.cassandra.db.marshal.ReversedType(org.apache.cassandra.db.marshal.TimestampType),org.apache.cassandra.db.marshal.ReversedType(org.apache.cassandra.db.marshal.BytesType)))]
>  (resultMetadata=[emailcrypt(testdb_1412536748414, sr), 
> org.apache.cassandra.db.marshal.ReversedType(org.apache.cassandra.db.marshal.BytesType)][emailaddr(testdb_1412536748414,
>  sr), 
> org.apache.cassandra.db.marshal.UTF8Type][removedate(testdb_1412536748414, 
> sr), 
> org.apache.cassandra.db.marshal.TimestampType][removeimportid(testdb_1412536748414,
>  sr), 
> org.apache.cassandra.db.marshal.LongType][properties(testdb_1412536748414, 
> sr), org.apache.cassandra.db.marshal.UTF8Type]), v=2
> DEBUG [SharedPool-Worker-1] 2014-10-05 14:20:15,363 Message.java:420 - 
> Received: EXECUTE a18ff9151e8bd3b13b48a0ba56ecb784 with 4 values at 
> consistency QUORUM, v=2
> DEBUG [SharedPool-Worker-2] 2014-10-05 14:20:15,380 Message.java:420 - 
> Received: EXECUTE a18ff9151e8bd3b13b48a0ba56ecb784 with 4 values at 
> consistency QUORUM, v=2
> DEBUG [SharedPool-Worker-5] 2014-10-05 14:20:15,402 Message.java:420 - 
> Received: EXECUTE a18ff9151e8bd3b13b48a0ba56ecb784 with 4 values at 
> consistency QUORUM, v=2
> ERROR [SharedPool-Worker-5] 2014-10-05 14:20:16,125 ErrorMessage.java:218 - 
> Unexpected exception during request
> java.lang.IllegalArgumentException: null
>   at java.nio.Buffer.limit(Unknown Source) ~[na:1.7.0_25]
>   at 
> org.apache.cassandra.utils.ByteBufferUtil.readBytes(ByteBufferUtil.java:539) 
> ~[apache-cassandra-2.1.0.jar:2.1.0]
>   at 
> org.apache.cassandra.serializers.CollectionSerializer.readValue(CollectionSerializer.java:122)
>  ~[apache-cassandra-2.1.0.jar:2.1.0]
>   at 
> org.apache.cassandra.serializers.ListSerializer.deserializeForNativeProtocol(ListSerializer.java:87)
>  ~[apache-cassandra-2.1.0.jar:2.1.0]
>   at 
> org.apache.cassandra.seri

[jira] [Updated] (CASSANDRA-8062) IllegalArgumentException passing blob as tuple value element in list

2014-10-06 Thread Mikhail Stepura (JIRA)

 [ 
https://issues.apache.org/jira/browse/CASSANDRA-8062?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Mikhail Stepura updated CASSANDRA-8062:
---
Description: 
I am using the same table schema as described in earlier reports, e.g., 
CASSANDRA-7105:
{code}
CREATE TABLE sr (siteid uuid, listid bigint, partition int, createdate 
timestamp, emailcrypt blob, emailaddr text, properties text, removedate 
timestamp. removeimportid bigint,
PRIMARY KEY ((siteid, listid, partition), createdate, emailcrypt)
) WITH CLUSTERING ORDER BY (createdate DESC, emailcrypt DESC);
{code}
I am trying to take advantage of the new Tuple support to issue a query to 
request multiple rows in a single wide row by (createdate,emailcrypt) pair.  I 
declare a new TupleType that covers the clustering columns and then issue an IN 
predicate against a list of these values:
{code}
private static final TupleType dateEmailTupleType = 
TupleType.of(DataType.timestamp(), DataType.blob());
...
List partitionKeys = new ArrayList<>(recipKeys.size());
...
BoundStatement boundStatement = new BoundStatement(preparedStatement);
boundStatement = boundStatement.bind(siteID, partition, listID);
boundStatement.setList(3, partitionKeys);
{code}
When I issue a SELECT against this table, the server fails apparently trying to 
break apart the list values:
{code}
DEBUG [SharedPool-Worker-1] 2014-10-05 14:20:15,312 Message.java:420 - 
Received: PREPARE SELECT emailCrypt, emailAddr, removeDate, removeImportID, 
properties FROM sr WHERE siteID = ? AND partition = ? AND listID = ? AND ( 
createDate, emailCrypt ) IN ? ;, v=2
DEBUG [SharedPool-Worker-1] 2014-10-05 14:20:15,323 Tracing.java:157 - request 
complete
DEBUG [SharedPool-Worker-1] 2014-10-05 14:20:15,323 Message.java:433 - 
Responding: RESULT PREPARED a18ff9151e8bd3b13b48a0ba56ecb784 
[siteid(testdb_1412536748414, sr), 
org.apache.cassandra.db.marshal.UUIDType][partition(testdb_1412536748414, sr), 
org.apache.cassandra.db.marshal.Int32Type][listid(testdb_1412536748414, sr), 
org.apache.cassandra.db.marshal.LongType][in(createdate,emailcrypt)(testdb_1412536748414,
 sr), 
org.apache.cassandra.db.marshal.ListType(org.apache.cassandra.db.marshal.TupleType(org.apache.cassandra.db.marshal.ReversedType(org.apache.cassandra.db.marshal.TimestampType),org.apache.cassandra.db.marshal.ReversedType(org.apache.cassandra.db.marshal.BytesType)))]
 (resultMetadata=[emailcrypt(testdb_1412536748414, sr), 
org.apache.cassandra.db.marshal.ReversedType(org.apache.cassandra.db.marshal.BytesType)][emailaddr(testdb_1412536748414,
 sr), 
org.apache.cassandra.db.marshal.UTF8Type][removedate(testdb_1412536748414, sr), 
org.apache.cassandra.db.marshal.TimestampType][removeimportid(testdb_1412536748414,
 sr), 
org.apache.cassandra.db.marshal.LongType][properties(testdb_1412536748414, sr), 
org.apache.cassandra.db.marshal.UTF8Type]), v=2
DEBUG [SharedPool-Worker-1] 2014-10-05 14:20:15,363 Message.java:420 - 
Received: EXECUTE a18ff9151e8bd3b13b48a0ba56ecb784 with 4 values at consistency 
QUORUM, v=2
DEBUG [SharedPool-Worker-2] 2014-10-05 14:20:15,380 Message.java:420 - 
Received: EXECUTE a18ff9151e8bd3b13b48a0ba56ecb784 with 4 values at consistency 
QUORUM, v=2
DEBUG [SharedPool-Worker-5] 2014-10-05 14:20:15,402 Message.java:420 - 
Received: EXECUTE a18ff9151e8bd3b13b48a0ba56ecb784 with 4 values at consistency 
QUORUM, v=2
ERROR [SharedPool-Worker-5] 2014-10-05 14:20:16,125 ErrorMessage.java:218 - 
Unexpected exception during request
java.lang.IllegalArgumentException: null
at java.nio.Buffer.limit(Unknown Source) ~[na:1.7.0_25]
at 
org.apache.cassandra.utils.ByteBufferUtil.readBytes(ByteBufferUtil.java:539) 
~[apache-cassandra-2.1.0.jar:2.1.0]
at 
org.apache.cassandra.serializers.CollectionSerializer.readValue(CollectionSerializer.java:122)
 ~[apache-cassandra-2.1.0.jar:2.1.0]
at 
org.apache.cassandra.serializers.ListSerializer.deserializeForNativeProtocol(ListSerializer.java:87)
 ~[apache-cassandra-2.1.0.jar:2.1.0]
at 
org.apache.cassandra.serializers.ListSerializer.deserializeForNativeProtocol(ListSerializer.java:27)
 ~[apache-cassandra-2.1.0.jar:2.1.0]
at 
org.apache.cassandra.serializers.CollectionSerializer.deserialize(CollectionSerializer.java:48)
 ~[apache-cassandra-2.1.0.jar:2.1.0]
at 
org.apache.cassandra.db.marshal.AbstractType.compose(AbstractType.java:66) 
~[apache-cassandra-2.1.0.jar:2.1.0]
at 
org.apache.cassandra.cql3.Tuples$InValue.fromSerialized(Tuples.java:249) 
~[apache-cassandra-2.1.0.jar:2.1.0]
at org.apache.cassandra.cql3.Tuples$InMarker.bind(Tuples.java:394) 
~[apache-cassandra-2.1.0.jar:2.1.0]
at 
org.apache.cassandra.cql3.statements.MultiColumnRestriction$InWithMarker.splitValues(MultiColumnRestriction.java:103)
 ~[apache-cassandra-2.1.0.jar:2.1.0]
at 
org.apache.cassandra.cql3.statements.SelectStatement.buildMulti