incubator-cassandra-user mailing list archives

Site index · List index
Message view « Date » · « Thread »
Top « Date » · « Thread »
From aaron morton <aa...@thelastpickle.com>
Subject Re: IllegalArgumentException on query with AbstractCompositeType
Date Fri, 12 Jul 2013 08:38:05 GMT
> The “ALLOW FILTERING” clause also has no effect.
You only need that when the WHERE clause contains predicates for columns that are not part
of the primary key. 

> CREATE INDEX ON conv_msgdata_by_participant_cql(msgReadFlag);
On general this is a bad idea in Cassandra (also in a relational DB IMHO). You will get poor
performance from it. 

> Caused by: java.lang.IllegalArgumentException
>         at java.nio.Buffer.limit(Buffer.java:247)
>         at org.apache.cassandra.db.marshal.AbstractCompositeType.getBytes(AbstractCompositeType.java:51)
>         at org.apache.cassandra.db.marshal.AbstractCompositeType.getWithShortLength(AbstractCompositeType.java:60)
>         at org.apache.cassandra.db.marshal.AbstractCompositeType.compare(AbstractCompositeType.java:78)
>         at org.apache.cassandra.db.marshal.AbstractCompositeType.compare(AbstractCompositeType.java:31)
>         at org.apache.cassandra.db.columniterator.IndexedSliceReader$BlockFetcher.isColumnBeforeSliceFinish(IndexedSliceReader.java:216)
>         at org.apache.cassandra.db.columniterator.IndexedSliceReader$SimpleBlockFetcher.<init>(IndexedSliceReader.java:450)
>         at org.apache.cassandra.db.columniterator.IndexedSliceReader.<init>(IndexedSliceReader.java:85)
>         at org.apache.cassandra.db.columniterator.SSTableSliceIterator.createReader(SSTableSliceIterator.java:68)
This looks like an error in the on disk data, or maybe in passing the value for the messageId
value but I doubt it. 

What version are you using ? 
Can you reproduce this outside of your unit tests ?

Cheers

-----------------
Aaron Morton
Cassandra Consultant
New Zealand

@aaronmorton
http://www.thelastpickle.com

On 12/07/2013, at 12:40 AM, "Pruner, Anne (Anne)" <pruner@avaya.com> wrote:

> Hi,
>                 I’ve been tearing my hair out trying to figure out why this query fails.
 In fact, it only fails on machines with slower CPUs and after having previously run some
other junit tests.  I’m running junits to an embedded Cassandra server, which works well
in pretty much all other cases, but this one is flaky.  I’ve tried to rule out timing issues
by placing a 10 second delay just before this query, just in case somehow the data isn’t
getting into the db in a timely manner, but that doesn’t have any effect.  I’ve also tried
removing the “ORDER BY” clause, which seems to be the place in the code it’s getting
hung up on, but that also doesn’t have any effect.  The “ALLOW FILTERING” clause also
has no effect.
>  
> DEBUG [Native-Transport-Requests:16] 2013-07-10 16:28:21,993 Message.java (line 277)
Received: QUERY SELECT * FROM conv_msgdata_by_participant_cql WHEREentityConversationId='bulkTestFromUser0@test.ca&contact_811b5efc-b621-4361-9dc9-2e4755be7d89'
AND messageId<'2013-07-10T20:29:09.773Zzzzzzz' ORDER BY messageId DESC LIMIT 15 ALLOW FILTERING;
> ERROR [ReadStage:34] 2013-07-10 16:28:21,995 CassandraDaemon.java (line 132) Exception
in thread Thread[ReadStage:34,5,main]
> java.lang.RuntimeException: java.lang.IllegalArgumentException
>         at org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:1582)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.runTask(ThreadPoolExecutor.java:886)
>         at java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:908)
>         at java.lang.Thread.run(Thread.java:662)
> Caused by: java.lang.IllegalArgumentException
>         at java.nio.Buffer.limit(Buffer.java:247)
>         at org.apache.cassandra.db.marshal.AbstractCompositeType.getBytes(AbstractCompositeType.java:51)
>         at org.apache.cassandra.db.marshal.AbstractCompositeType.getWithShortLength(AbstractCompositeType.java:60)
>         at org.apache.cassandra.db.marshal.AbstractCompositeType.compare(AbstractCompositeType.java:78)
>         at org.apache.cassandra.db.marshal.AbstractCompositeType.compare(AbstractCompositeType.java:31)
>         at org.apache.cassandra.db.columniterator.IndexedSliceReader$BlockFetcher.isColumnBeforeSliceFinish(IndexedSliceReader.java:216)
>         at org.apache.cassandra.db.columniterator.IndexedSliceReader$SimpleBlockFetcher.<init>(IndexedSliceReader.java:450)
>         at org.apache.cassandra.db.columniterator.IndexedSliceReader.<init>(IndexedSliceReader.java:85)
>         at org.apache.cassandra.db.columniterator.SSTableSliceIterator.createReader(SSTableSliceIterator.java:68)
>         at org.apache.cassandra.db.columniterator.SSTableSliceIterator.<init>(SSTableSliceIterator.java:44)
>         at org.apache.cassandra.db.filter.SliceQueryFilter.getSSTableColumnIterator(SliceQueryFilter.java:101)
>         at org.apache.cassandra.db.filter.QueryFilter.getSSTableColumnIterator(QueryFilter.java:68)
>         at org.apache.cassandra.db.CollationController.collectAllData(CollationController.java:275)
>         at org.apache.cassandra.db.CollationController.getTopLevelColumns(CollationController.java:65)
>         at org.apache.cassandra.db.ColumnFamilyStore.getTopLevelColumns(ColumnFamilyStore.java:1363)
>         at org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1220)
>         at org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1132)
>         at org.apache.cassandra.db.Table.getRow(Table.java:355)
>         at org.apache.cassandra.db.SliceFromReadCommand.getRow(SliceFromReadCommand.java:70)
>         at org.apache.cassandra.service.StorageProxy$LocalReadRunnable.runMayThrow(StorageProxy.java:1052)
>         at org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:1578)
>  
> Here’s the table it’s querying from:
>  
> CREATE TABLE conv_msgdata_by_participant_cql (
>     entityConversationId text,
>     messageId text,
>     jsonMessage text,
>     msgReadFlag boolean,
>     msgReadDate text,
>     PRIMARY KEY (entityConversationId, messageId)
> ) ;
>  
> CREATE INDEX ON conv_msgdata_by_participant_cql(msgReadFlag);
>  
>  
> Any ideas?
>  
> Thanks,
> Anne


Mime
View raw message