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 WHERE 
entityConversationId='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