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

Sylvain Lebresne updated CASSANDRA-13366:
-----------------------------------------
    Reviewer: Stefania
      Status: Patch Available  (was: Open)

Attaching patch below:
| [13366-3.11|https://github.com/pcmanus/cassandra/commits/13366-3.11] | 
[utests|http://cassci.datastax.com/job/pcmanus-13366-3.11-testall] | 
[dtests|http://cassci.datastax.com/job/pcmanus-13366-3.11-dtest] |

Mostly, this just make sure we don't use pre-3.0 sstables for building the 
lower bound since it's unsafe. There was also a corner case with {{null}} in 
clusterings (which we only allow for compact tables for backward compatiblity 
and should be pretty rare) that wasn't handled so the patch adds that. And I 
added a bunch of comments as I felt this could be useful to future readers.

I'd like to try to write an upgrade dtest for this, but haven't taken the time 
yet. I'll update when that's the case, but the problem is simple enough that 
this probably shouldn't block review in the meantime ([~Stefania] assigning you 
since you wrote CASSANDRA-8180, but feel free to unassign if you don't have 
time).


> Possible AssertionError in UnfilteredRowIteratorWithLowerBound
> --------------------------------------------------------------
>
>                 Key: CASSANDRA-13366
>                 URL: https://issues.apache.org/jira/browse/CASSANDRA-13366
>             Project: Cassandra
>          Issue Type: Bug
>            Reporter: Sylvain Lebresne
>            Assignee: Sylvain Lebresne
>             Fix For: 3.11.x
>
>
> In the code introduced by CASSANDRA-8180, we build a lower bound for a 
> partition (sometimes) based on the min clustering values of the stats file. 
> We can't do that if the sstable has and range tombston marker and the code 
> does check that this is the case, but unfortunately the check is done using 
> the stats {{minLocalDeletionTime}} but that value isn't populated properly in 
> pre-3.0. This means that if you upgrade from 2.1/2.2 to 3.4+, you may end up 
> getting an exception like
> {noformat}
> WARN  [ReadStage-2] 2017-03-20 13:29:39,165  
> AbstractLocalAwareExecutorService.java:167 - Uncaught exception on thread 
> Thread[ReadStage-2,5,main]: {}
> java.lang.AssertionError: Lower bound [INCL_START_BOUND(Foo, 
> -9223372036854775808, -9223372036854775808) ]is bigger than first returned 
> value [Marker INCL_START_BOUND(Foo)@1490013810540999] for sstable 
> /var/lib/cassandra/data/system/size_estimates-618f817b005f3678b8a453f3930b8e86/system-size_estimates-ka-1-Data.db
>     at 
> org.apache.cassandra.db.rows.UnfilteredRowIteratorWithLowerBound.computeNext(UnfilteredRowIteratorWithLowerBound.java:122)
> {noformat}
> and this until the sstable is upgraded.



--
This message was sent by Atlassian JIRA
(v6.3.15#6346)

Reply via email to