Details
-
Bug
-
Status: Resolved
-
Low
-
Resolution: Fixed
-
None
-
ubuntu 11.04
java version "1.6.0_26"
Java(TM) SE Runtime Environment (build 1.6.0_26-b03)
Java HotSpot(TM) 64-Bit Server VM (build 20.1-b02, mixed mode)php interface build with thrift 0.7.0
-
Low
Description
get_slice with more than one column selected by predicate fails, when comparator is set to (Lexical|Time)UUIDType and more than one column is being selected.
// Sample data: create column family A with column_type = Super and comparator = LexicalUUIDType and subcomparator = UTF8Type and default_validation_class = UTF8Type; set A[ascii('key')][lexicaluuid('b139337e-fb6d-41e1-a868-1db7f2a52a42')]['a'] = 'A'; set A[ascii('key')][lexicaluuid('b139337e-fb6d-41e1-a868-1db7f2a52a42')]['b'] = 'B'; set A[ascii('key')][lexicaluuid('b139337e-fb6d-41e1-a868-1db7f2a52a42')]['c'] = 'C'; set A[ascii('key')][lexicaluuid('b139337e-fb6d-41e1-a868-1db7f2a52a42')]['d'] = 'D'; set A[ascii('key')][lexicaluuid('b139337e-fb6d-41e1-a868-1db7f2a52a42')]['e'] = 'E'; // Failed call $client->get_slice( 'key', new ColumnParent(array( 'column_family'=>'A', 'super_column'=>base64_decode('sTkzfvttQeGoaB238qUqQg==') )), new SlicePredicate(array( 'column_names'=>array('a', 'b') )), 1 ); // Exception thrown ERROR [ReadStage:302] 2011-11-07 21:29:30,339 AbstractCassandraDaemon.java (line 133) Fatal exception in thread Thread[ReadStage:302,5,main] java.lang.RuntimeException: java.lang.IndexOutOfBoundsException at org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:1269) 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.IndexOutOfBoundsException at java.nio.Buffer.checkIndex(Buffer.java:520) at java.nio.HeapByteBuffer.getLong(HeapByteBuffer.java:391) at org.apache.cassandra.utils.UUIDGen.getUUID(UUIDGen.java:67) at org.apache.cassandra.db.marshal.LexicalUUIDType.compare(LexicalUUIDType.java:58) at org.apache.cassandra.db.marshal.LexicalUUIDType.compare(LexicalUUIDType.java:31) at java.util.TreeMap.put(TreeMap.java:530) at java.util.TreeSet.add(TreeSet.java:238) at java.util.AbstractCollection.addAll(AbstractCollection.java:305) at java.util.TreeSet.addAll(TreeSet.java:295) at org.apache.cassandra.db.CollationController.collectTimeOrderedData(CollationController.java:98) at org.apache.cassandra.db.CollationController.getTopLevelColumns(CollationController.java:61) at org.apache.cassandra.db.ColumnFamilyStore.getTopLevelColumns(ColumnFamilyStore.java:1278) at org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1164) at org.apache.cassandra.db.ColumnFamilyStore.getColumnFamily(ColumnFamilyStore.java:1131) at org.apache.cassandra.db.Table.getRow(Table.java:378) at org.apache.cassandra.db.SliceByNamesReadCommand.getRow(SliceByNamesReadCommand.java:58) at org.apache.cassandra.service.StorageProxy$LocalReadRunnable.runMayThrow(StorageProxy.java:797) at org.apache.cassandra.service.StorageProxy$DroppableRunnable.run(StorageProxy.java:1265) ... 3 more // This works though $client->get_slice( 'key', new ColumnParent(array( 'column_family'=>'A', 'super_column'=>base64_decode('sTkzfvttQeGoaB238qUqQg==') )), new SlicePredicate(array( 'column_names'=>array('a') )), 1 ); // This works too $client->get_slice('key', new ColumnParent(array( 'column_family'=>'A', 'super_column'=>base64_decode('sTkzfvttQeGoaB238qUqQg==') )), new SlicePredicate(array( 'slice_range'=>new SliceRange(array( 'start'=>'', 'finish'=>'', 'reversed'=>false, 'count'=>100 )) )), 1);
Regards
ales