Benedict created CASSANDRA-14593:
------------------------------------

             Summary: Read-Repair breaks partition-level update atomicity
                 Key: CASSANDRA-14593
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-14593
             Project: Cassandra
          Issue Type: Bug
            Reporter: Benedict


We advertise generally that updates apply atomically within a partition, and 
users depend on the fact that visibility is guaranteed to coincide, i.e. that 
two rows updated at once will only be seen together.
 
However, a read that only touches one of these rows can lead to a quorum of 
nodes having only part of the update.
 
For instance, let’s take either a write at CL.ONE, or a failed write at QUORUM, 
that updates two rows.  The write makes it to only one node.  A read is 
performed that only touches one of these rows, and happens to include the node 
that received the write so read-repair is engaged.  Now, all nodes are updated 
to contain this row touched by the read-repair.
 
A new QUORUM read is performed covering both rows, and the node that received 
the whole update is not queried.  Now only the first row is returned.
 
Any application depending on both rows being visible together, for any query 
that requests them, will now be in an indeterminate state.
 
This seems like a fairly dangerous contractual failure, and one we should 
explicitly document, and we should permit disabling read-repair entirely for 
users who need it.
 
Or, perhaps preferably, we could modify read-repair to perform a 
whole-partition repair, that is only triggered by the detection of 
inconsistency (rather than being directly driven by the requested data).



--
This message was sent by Atlassian JIRA
(v7.6.3#76005)

---------------------------------------------------------------------
To unsubscribe, e-mail: [email protected]
For additional commands, e-mail: [email protected]

Reply via email to