[ 
https://issues.apache.org/jira/browse/CASSANDRA-3467?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
 ]

Jonathan Ellis updated CASSANDRA-3467:
--------------------------------------

    Affects Version/s:     (was: 1.0.1)
                       1.0.0
        Fix Version/s: 1.0.3
    
> 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.0
>         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
>             Fix For: 1.0.3
>
>         Attachments: 3467-get-slice-on-scf-with-uuidtype-comparator.patch
>
>
> 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