Uploaded image for project: 'Cassandra'
  1. Cassandra
  2. CASSANDRA-14462

CAS temporarily broken on reversed tables after upgrading on 2.1.X or 2.2.X

    XMLWordPrintableJSON

    Details

    • Type: Bug
    • Status: Open
    • Priority: Normal
    • Resolution: Unresolved
    • Fix Version/s: None
    • Component/s: Legacy/Core
    • Labels:
      None
    • Severity:
      Normal

      Description

      Issue 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
        CREATE KEYSPACE IF NOT EXISTS test_ks WITH replication = {'class': 'SimpleStrategy', 'replication_factor': 1};
        USE test_ks;
        CREATE TABLE IF NOT EXISTS test_cf (
         pid text,
         total int static,
         sid uuid,
         amount int,
         PRIMARY KEY ((pid), sid)
        ) WITH CLUSTERING ORDER BY (sid DESC);
        

         

      • insert data
        INSERT INTO test_cf (pid, sid, amount) VALUES ('1', b2495ad2-9b64-4aab-b000-2ed20dda60ab, 2);
        INSERT INTO test_cf (pid, total) VALUES ('1', 2);

         

      • 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:
        UPDATE test_cf SET total = 3 WHERE pid = '1' IF total = 2;
        UPDATE test_cf SET amount = 3 WHERE pid = '1' AND sid = b2495ad2-9b64-4aab-b000-2ed20dda60ab IF amount = 2;

         

      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

        Attachments

        1. 14662-2.1-2.2.patch
          2 kB
          Fabien Rousseau

          Issue Links

            Activity

              People

              • Assignee:
                frousseau Fabien Rousseau
                Reporter:
                frousseau Fabien Rousseau
                Authors:
                Fabien Rousseau
              • Votes:
                0 Vote for this issue
                Watchers:
                3 Start watching this issue

                Dates

                • Created:
                  Updated: