> 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)" <pru...@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='bulktestfromus...@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

Reply via email to