get_slice, super column family with UUIDType as column comparator
-----------------------------------------------------------------

                 Key: CASSANDRA-3467
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-3467
             Project: Cassandra
          Issue Type: Bug
          Components: API
    Affects Versions: 1.0.1
         Environment: 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
            Reporter: alesl
            Priority: Minor


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.

{code}
// 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);
{code}

Regards
ales

--
This message is automatically generated by JIRA.
If you think it was sent incorrectly, please contact your JIRA administrators: 
https://issues.apache.org/jira/secure/ContactAdministrators!default.jspa
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to