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

Sylvain Lebresne updated CASSANDRA-2653:
----------------------------------------

    Attachment: 0001-Handle-data-get-returning-null-in-secondary-indexes.patch

The "Tyler" problem is actually not limited to 0 column query. The problem is 
that when we query the rows for data, we use whatever filter the user provided 
(there's a number of optimiziation in the case we have more than 1 clause but 
that doesn't really matter for our problem). The thing is, there is no 
guarantee that whatever that filter is, it will include the column of the 
primary clause (having a column count of 0 is just one case where we're sure it 
won't include it). Thus the assertion that something will be returned is bogus.

Attaching a patch (against 0.8) to fix. Note that this mean we have no way to 
assert the sanity of the index during a read, unless we force the querying of 
the primary index clause, but this will have a performance impact (and a non 
negligible one in cases this would force us to do a new query just for that).


> index scan errors out when zero columns are requested
> -----------------------------------------------------
>
>                 Key: CASSANDRA-2653
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-2653
>             Project: Cassandra
>          Issue Type: Bug
>          Components: Core
>    Affects Versions: 0.8.0 beta 2
>            Reporter: Jonathan Ellis
>            Assignee: Sylvain Lebresne
>            Priority: Minor
>             Fix For: 0.8.1
>
>         Attachments: 
> 0001-Handle-data-get-returning-null-in-secondary-indexes.patch, 
> 0001-Reset-SSTII-in-EchoedRow-constructor.patch, 
> v1-0001-CASSANDRA-2653-reproduce-regression.txt
>
>
> As reported by Tyler Hobbs as an addendum to CASSANDRA-2401,
> {noformat}
> ERROR 16:13:38,864 Fatal exception in thread Thread[ReadStage:16,5,main]
> java.lang.AssertionError: No data found for 
> SliceQueryFilter(start=java.nio.HeapByteBuffer[pos=10 lim=10 cap=30], 
> finish=java.nio.HeapByteBuffer[pos=17 lim=17 cap=30], reversed=false, 
> count=0] in DecoratedKey(81509516161424251288255223397843705139, 
> 6b657931):QueryPath(columnFamilyName='cf', superColumnName='null', 
> columnName='null') (original filter 
> SliceQueryFilter(start=java.nio.HeapByteBuffer[pos=10 lim=10 cap=30], 
> finish=java.nio.HeapByteBuffer[pos=17 lim=17 cap=30], reversed=false, 
> count=0]) from expression 'cf.626972746864617465 EQ 1'
>       at 
> org.apache.cassandra.db.ColumnFamilyStore.scan(ColumnFamilyStore.java:1517)
>       at 
> org.apache.cassandra.service.IndexScanVerbHandler.doVerb(IndexScanVerbHandler.java:42)
>       at 
> org.apache.cassandra.net.MessageDeliveryTask.run(MessageDeliveryTask.java:72)
>       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)
> {noformat}

--
This message is automatically generated by JIRA.
For more information on JIRA, see: http://www.atlassian.com/software/jira

        

Reply via email to