Return-Path: X-Original-To: apmail-cassandra-user-archive@www.apache.org Delivered-To: apmail-cassandra-user-archive@www.apache.org Received: from mail.apache.org (hermes.apache.org [140.211.11.3]) by minotaur.apache.org (Postfix) with SMTP id 6CCC41047D for ; Fri, 12 Jul 2013 08:38:36 +0000 (UTC) Received: (qmail 21393 invoked by uid 500); 12 Jul 2013 08:38:33 -0000 Delivered-To: apmail-cassandra-user-archive@cassandra.apache.org Received: (qmail 21287 invoked by uid 500); 12 Jul 2013 08:38:33 -0000 Mailing-List: contact user-help@cassandra.apache.org; run by ezmlm Precedence: bulk List-Help: List-Unsubscribe: List-Post: List-Id: Reply-To: user@cassandra.apache.org Delivered-To: mailing list user@cassandra.apache.org Received: (qmail 21279 invoked by uid 99); 12 Jul 2013 08:38:32 -0000 Received: from athena.apache.org (HELO athena.apache.org) (140.211.11.136) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 12 Jul 2013 08:38:32 +0000 X-ASF-Spam-Status: No, hits=2.2 required=5.0 tests=HTML_MESSAGE,RCVD_IN_DNSWL_NONE,SPF_PASS X-Spam-Check-By: apache.org Received-SPF: pass (athena.apache.org: local policy) Received: from [208.113.200.5] (HELO homiemail-a69.g.dreamhost.com) (208.113.200.5) by apache.org (qpsmtpd/0.29) with ESMTP; Fri, 12 Jul 2013 08:38:27 +0000 Received: from homiemail-a69.g.dreamhost.com (localhost [127.0.0.1]) by homiemail-a69.g.dreamhost.com (Postfix) with ESMTP id 4262C40110116 for ; Fri, 12 Jul 2013 01:38:07 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha1; c=relaxed; d=thelastpickle.com; h=from :content-type:message-id:mime-version:subject:date:references:to :in-reply-to; s=thelastpickle.com; bh=nbyLb/+7FZma/yCscWrX5/ObFs Y=; b=vD1gsFTApbahgphnKBIDDQs4o94gqsfswJaBnKt1zXnFswMsSQIC2MAr2R 0FexcsecRGlyznEpZT6WessctC6l2SvAPR95qbnqxYe44RjPWnfWuXiKW0zScahg h44l9avjYcrmLvQrrOzulQ3p88XIO/oo38O97QwBDiVagvqQk= Received: from [172.16.1.7] (unknown [203.86.207.101]) (using TLSv1 with cipher ECDHE-RSA-AES256-SHA (256/256 bits)) (No client certificate requested) (Authenticated sender: aaron@thelastpickle.com) by homiemail-a69.g.dreamhost.com (Postfix) with ESMTPSA id 7131440110110 for ; Fri, 12 Jul 2013 01:38:06 -0700 (PDT) From: aaron morton Content-Type: multipart/alternative; boundary="Apple-Mail=_DAD6DF39-F298-44C5-8349-F1DFF1C8C813" Message-Id: <0BE149E4-0365-4FFE-AF8B-058DE70B9321@thelastpickle.com> Mime-Version: 1.0 (Mac OS X Mail 6.5 \(1508\)) Subject: Re: IllegalArgumentException on query with AbstractCompositeType Date: Fri, 12 Jul 2013 20:38:05 +1200 References: <6AA4F6FA5BFDE5459413820369BE16370C195A@AZ-US1EXMB02.global.avaya.com> To: user@cassandra.apache.org In-Reply-To: <6AA4F6FA5BFDE5459413820369BE16370C195A@AZ-US1EXMB02.global.avaya.com> X-Mailer: Apple Mail (2.1508) X-Virus-Checked: Checked by ClamAV on apache.org --Apple-Mail=_DAD6DF39-F298-44C5-8349-F1DFF1C8C813 Content-Transfer-Encoding: quoted-printable Content-Type: text/plain; charset=windows-1252 > The =93ALLOW FILTERING=94 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.=20 > 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.=20 > Caused by: java.lang.IllegalArgumentException > at java.nio.Buffer.limit(Buffer.java:247) > at = org.apache.cassandra.db.marshal.AbstractCompositeType.getBytes(AbstractCom= positeType.java:51) > at = org.apache.cassandra.db.marshal.AbstractCompositeType.getWithShortLength(A= bstractCompositeType.java:60) > at = org.apache.cassandra.db.marshal.AbstractCompositeType.compare(AbstractComp= ositeType.java:78) > at = org.apache.cassandra.db.marshal.AbstractCompositeType.compare(AbstractComp= ositeType.java:31) > at = org.apache.cassandra.db.columniterator.IndexedSliceReader$BlockFetcher.isC= olumnBeforeSliceFinish(IndexedSliceReader.java:216) > at = org.apache.cassandra.db.columniterator.IndexedSliceReader$SimpleBlockFetch= er.(IndexedSliceReader.java:450) > at = org.apache.cassandra.db.columniterator.IndexedSliceReader.(IndexedSl= iceReader.java:85) > at = org.apache.cassandra.db.columniterator.SSTableSliceIterator.createReader(S= STableSliceIterator.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.=20 What version are you using ?=20 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)" = wrote: > Hi, > I=92ve 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=92m = running junits to an embedded Cassandra server, which works well in = pretty much all other cases, but this one is flaky. I=92ve tried to = rule out timing issues by placing a 10 second delay just before this = query, just in case somehow the data isn=92t getting into the db in a = timely manner, but that doesn=92t have any effect. I=92ve also tried = removing the =93ORDER BY=94 clause, which seems to be the place in the = code it=92s getting hung up on, but that also doesn=92t have any effect. = The =93ALLOW FILTERING=94 clause also has no effect. > =20 > 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=3D'bulkTestFromUser0@test.ca&contact_811b5efc-b6= 21-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(StoragePro= xy.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(AbstractCom= positeType.java:51) > at = org.apache.cassandra.db.marshal.AbstractCompositeType.getWithShortLength(A= bstractCompositeType.java:60) > at = org.apache.cassandra.db.marshal.AbstractCompositeType.compare(AbstractComp= ositeType.java:78) > at = org.apache.cassandra.db.marshal.AbstractCompositeType.compare(AbstractComp= ositeType.java:31) > at = org.apache.cassandra.db.columniterator.IndexedSliceReader$BlockFetcher.isC= olumnBeforeSliceFinish(IndexedSliceReader.java:216) > at = org.apache.cassandra.db.columniterator.IndexedSliceReader$SimpleBlockFetch= er.(IndexedSliceReader.java:450) > at = org.apache.cassandra.db.columniterator.IndexedSliceReader.(IndexedSl= iceReader.java:85) > at = org.apache.cassandra.db.columniterator.SSTableSliceIterator.createReader(S= STableSliceIterator.java:68) > at = org.apache.cassandra.db.columniterator.SSTableSliceIterator.(SSTable= SliceIterator.java:44) > at = org.apache.cassandra.db.filter.SliceQueryFilter.getSSTableColumnIterator(S= liceQueryFilter.java:101) > at = org.apache.cassandra.db.filter.QueryFilter.getSSTableColumnIterator(QueryF= ilter.java:68) > at = org.apache.cassandra.db.CollationController.collectAllData(CollationContro= ller.java:275) > at = org.apache.cassandra.db.CollationController.getTopLevelColumns(CollationCo= ntroller.java:65) > at = org.apache.cassandra.db.ColumnFamilyStore.getTopLevelColumns(ColumnFamilyS= tore.java:1363) > at = org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStor= e.java:1220) > at = org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStor= e.java:1132) > at org.apache.cassandra.db.Table.getRow(Table.java:355) > at = org.apache.cassandra.db.SliceFromReadCommand.getRow(SliceFromReadCommand.j= ava:70) > at = org.apache.cassandra.service.StorageProxy$LocalReadRunnable.runMayThrow(St= orageProxy.java:1052) > at = org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StoragePro= xy.java:1578) > =20 > Here=92s the table it=92s querying from: > =20 > CREATE TABLE conv_msgdata_by_participant_cql ( > entityConversationId text, > messageId text, > jsonMessage text, > msgReadFlag boolean, > msgReadDate text, > PRIMARY KEY (entityConversationId, messageId) > ) ; > =20 > CREATE INDEX ON conv_msgdata_by_participant_cql(msgReadFlag); > =20 > =20 > Any ideas? > =20 > Thanks, > Anne --Apple-Mail=_DAD6DF39-F298-44C5-8349-F1DFF1C8C813 Content-Transfer-Encoding: quoted-printable Content-Type: text/html; charset=windows-1252
The =93ALLOW = FILTERING=94 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 = org.apache.cassandra.db.marshal.AbstractCompositeType.getBytes(AbstractCom= positeType.java:51)
        at = org.apache.cassandra.db.columniterator.IndexedSliceReader$SimpleBlockFetch= er.<init>(IndexedSliceReader.java:450)
        at = org.apache.cassandra.db.columniterator.IndexedSliceReader.<init>(Ind= exedSliceReader.java:85)
What version are you using = ? 
Can you reproduce this outside of = your unit tests ?

Cheers
http://www.thelastpickle.com

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

Hi,
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 = WHEREERROR = [ReadStage:34] 2013-07-10 16:28:21,995 CassandraDaemon.java (line 132) = Exception in thread Thread[ReadStage:34,5,main]