Where is your LongToken coming from?  LongToken is used by
Murmur3Partitioner; it looks to me like you need to build a LocalToken
instead (for the LocalPartitioner used by indexes).

On Tue, Feb 18, 2014 at 5:33 AM, Berenguer Blasi <bbl...@jblasi.com> wrote:
> Hi all,
>
> I am new to cassandra and I am trying to solve something I am stuck with. It
> is quite easy conceptually but I am stuck with it so maybe somebody with
> knowledge of the internals knows what I am doing wrong.
>
> I want to slice the CFs of a secondary index. So you can try with
> cfs.getRangeSlice(...) or access the cfs.getSequentialIterator(..). The
> problem is no matter what ranges, combinations or methods I can think of I
> always hit this exception:
>
> ERROR 12:30:49,416 Exception in thread Thread[ReadStage:2,5,main]
> java.lang.RuntimeException: java.lang.ClassCastException:
> java.nio.HeapByteBuffer cannot be cast to java.lang.Long
>         at
> org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:1880)
>         at
> java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1145)
>         at
> java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:615)
>         at java.lang.Thread.run(Thread.java:744)
> Caused by: java.lang.ClassCastException: java.nio.HeapByteBuffer cannot be
> cast to java.lang.Long
>         at org.apache.cassandra.dht.LongToken.compareTo(LongToken.java:31)
>         at org.apache.cassandra.dht.Token$KeyBound.compareTo(Token.java:197)
>         at org.apache.cassandra.dht.Token$KeyBound.compareTo(Token.java:1)
>         at
> org.apache.cassandra.utils.IntervalTree.comparePoints(IntervalTree.java:191)
>         at
> org.apache.cassandra.utils.IntervalTree.access$2(IntervalTree.java:181)
>         at
> org.apache.cassandra.utils.IntervalTree$IntervalNode.searchInternal(IntervalTree.java:293)
>         at
> org.apache.cassandra.utils.IntervalTree.search(IntervalTree.java:140)
>         at
> org.apache.cassandra.db.ColumnFamilyStore$AbstractViewSSTableFinder.sstablesForRowBounds(ColumnFamilyStore.java:1457)
>         at
> org.apache.cassandra.db.ColumnFamilyStore$7.findSSTables(ColumnFamilyStore.java:1511)
>         at
> org.apache.cassandra.db.ColumnFamilyStore.markReferenced(ColumnFamilyStore.java:1476)
>         at
> org.apache.cassandra.db.ColumnFamilyStore.markReferenced(ColumnFamilyStore.java:1507)
>         at
> org.apache.cassandra.db.ColumnFamilyStore.getSequentialIterator(ColumnFamilyStore.java:1594)
>         at
> org.apache.cassandra.db.index.keys.KeysSearcher$1.computeNext(KeysSearcher.java:125)
>         at
> org.apache.cassandra.db.index.keys.KeysSearcher$1.computeNext(KeysSearcher.java:1)
>         at
> com.google.common.collect.AbstractIterator.tryToComputeNext(AbstractIterator.java:143)
>         at
> com.google.common.collect.AbstractIterator.hasNext(AbstractIterator.java:138)
>         at
> org.apache.cassandra.db.ColumnFamilyStore.filter(ColumnFamilyStore.java:1754)
>         at
> org.apache.cassandra.db.index.keys.KeysSearcher.search(KeysSearcher.java:56)
>         at
> org.apache.cassandra.db.index.SecondaryIndexManager.search(SecondaryIndexManager.java:537)
>         at
> org.apache.cassandra.db.ColumnFamilyStore.search(ColumnFamilyStore.java:1742)
>         at
> org.apache.cassandra.db.RangeSliceCommand.executeLocally(RangeSliceCommand.java:135)
>         at
> org.apache.cassandra.service.StorageProxy$LocalRangeSliceRunnable.runMayThrow(StorageProxy.java:1363)
>         at
> org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:1876)
>         ... 3 more
>
> Here he is trying to compare a Long (range is a long) to a
> LocalToken(comparator=LongType, token=HeapByteBuffer(=1968)) where my query
> was 'select * from users where birth_date>=1968' and birth_date is a Long.
>
> So it looks almost right as the LocalToken has the LongComparator etc. but
> it is failing obviously.
>
> My suspicion is that here we are trying to look for the 1968 parition of the
> index, and this 1968 happens to not be a Long which is what range is
> providing.
>
> Any clues on what might actually be happening??
>
> Thanks a lot in advance.



-- 
Jonathan Ellis
Project Chair, Apache Cassandra
co-founder, http://www.datastax.com
@spyced

Reply via email to