Konstantin created CASSANDRA-15745:
--------------------------------------

             Summary: Conflicting LWT transactions may be committed during 
topology change
                 Key: CASSANDRA-15745
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-15745
             Project: Cassandra
          Issue Type: Bug
          Components: Feature/Lightweight Transactions
            Reporter: Konstantin


Let's consider a cluster which consists of replicas A, B and C.
We're adding replica D which replaces A.

A scenario is possible when two conflicting transactions, CAS1 and CAS2, may be 
committed during replace:

CAS2 ballot > CAS1 ballot
CAS2 and CAS1 conflict  on LWT condition, yet both of them may be committed in  
case of the following sequence of events:

Topology change starts, advertises on C
CAS1 starts on node C, uses {A, B, C, D}
CAS2 starts on node A, still uses {A, B, C}
Topology change is advertised on A
CAS1 prepares on {B, C, D}
CAS2 prepares and accepts on {A, B}, commits on A
CAS1 accepts on D, then stops
Streaming starts, topology change finishes, A is removed
CAS3 prepares using C and D. It sees the accept of CAS1 and replays it
Both CAS1 and CAS2 are committed.



--
This message was sent by Atlassian Jira
(v8.3.4#803005)

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

Reply via email to