> 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