Sylvain Lebresne created CASSANDRA-8272: -------------------------------------------
Summary: 2ndary indexes can return stale data Key: CASSANDRA-8272 URL: https://issues.apache.org/jira/browse/CASSANDRA-8272 Project: Cassandra Issue Type: Bug Reporter: Sylvain Lebresne When replica return 2ndary index results, it's possible for a single replica to return a stale result and that result will be sent back to the user, potentially failing the CL contract. For instance, consider 3 replicas A, B and C, and the following situation: {noformat} CREATE TABLE test (k int PRIMARY KEY, v text); CREATE INDEX ON test(v); INSERT INTO test(k, v) VALUES (0, 'foo'); {noformat} with every replica up to date. Now, suppose that the following queries are done at {{QUORUM}}: {noformat} UPDATE test SET v = 'bar' WHERE k = 0; SELECT * FROM test WHERE v = 'foo'; {noformat} then, if A and B acknowledge the insert but C respond to the read before having applied the insert, then the now stale result will be returned (since C will return it and A or B will return nothing). A potential solution would be that when we read a tombstone in the index (and provided we make the index inherit the gcGrace of it's parent CF), instead of skipping that tombstone, we'd insert in the result a corresponding range tombstone. -- This message was sent by Atlassian JIRA (v6.3.4#6332)