[
https://issues.apache.org/jira/browse/CASSANDRA-14593?page=com.atlassian.jira.plugin.system.issuetabpanels:all-tabpanel
]
C. Scott Andreas updated CASSANDRA-14593:
-----------------------------------------
Component/s: Coordination
> Read-Repair breaks partition-level update atomicity
> ---------------------------------------------------
>
> Key: CASSANDRA-14593
> URL: https://issues.apache.org/jira/browse/CASSANDRA-14593
> Project: Cassandra
> Issue Type: Bug
> Components: Coordination
> Reporter: Benedict
> Priority: Major
>
> 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]