CASSANDRA-12127 changed the way the reversed comparator behaves. Before scrubbing tables with reversed clustering keys, requests with CAS won't apply (even if the condition is true).
Below is a simple scenario to reproduce it:
- use C* 2.1.14/2.2.6
- create the schema
- insert data
- nodetool flush (this is necessary for the scenario to show the problem)
- upgrade to C* 2.1.20/2.2.12
- execute the following queries:
Both statements won't be applied while they should be applied.
It seems related to the min/maxColumn sstable checks (before the scrubbing, the min is an empty array, after it is no more) which filter too many sstables.
The SliceQueryFilter.shouldInclude method filter too many SSTables.
Note: When doing a simple "SELECT total FROM test_cf WHERE pid ='1';" works well because the selected slices are different (and thus do not filter the sstables).
Note: This does not seem to affect the 3.0.X versions