You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@cassandra.apache.org by "alesl (Created) (JIRA)" <ji...@apache.org> on 2011/11/07 21:34:51 UTC
[jira] [Created] (CASSANDRA-3467) get_slice, super column family
with UUIDType as column comparator
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
[jira] [Updated] (CASSANDRA-3467) get_slice, super column family
with UUIDType as column comparator
Posted by "Rick Branson (Updated) (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/CASSANDRA-3467?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Rick Branson updated CASSANDRA-3467:
------------------------------------
Attachment: 3467-get-slice-on-scf-with-uuidtype-comparator.patch
Attached is a test case and a patch for the issue.
> 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
> 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
[jira] [Resolved] (CASSANDRA-3467) get_slice, super column family
with UUIDType as column comparator
Posted by "Jonathan Ellis (Resolved) (JIRA)" <ji...@apache.org>.
[ https://issues.apache.org/jira/browse/CASSANDRA-3467?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel ]
Jonathan Ellis resolved CASSANDRA-3467.
---------------------------------------
Resolution: Fixed
Reviewer: jbellis
Assignee: Rick Branson
CASSANDRA-3446 fixed this in passing, but I committed the test to prevent future regressions. Thanks!
> 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
> Assignee: Rick Branson
> 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
[jira] [Updated] (CASSANDRA-3467) get_slice, super column family
with UUIDType as column comparator
Posted by "Jonathan Ellis (Updated) (JIRA)" <ji...@apache.org>.
[ 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