Benedict created CASSANDRA-14768:
------------------------------------

             Summary: Transient Replication: Consistency Level Semantics
                 Key: CASSANDRA-14768
                 URL: https://issues.apache.org/jira/browse/CASSANDRA-14768
             Project: Cassandra
          Issue Type: Improvement
          Components: Coordination
            Reporter: Benedict
             Fix For: 4.0


For a keyspace without transient replication, we will always attempt (and write 
hints for) all logical endpoints, including those that seem to be alive but are 
not responding (or perhaps dropping some messages).  With transient 
replication, in this scenario we only write to the transient replicas if a 
certain period of time elapses _and we have not met our consistency level_.

This doesn’t lead to the same logical behaviour, although technically the 
guarantees are the same.  In the past, you could expect that all DCs would 
reach their own local quorum promptly, if say only a single node is failing.  
Now, you could reach QUORUM with only one DC + 1 remote node, and the remote DC 
will stay out of whack until repair runs.  This is even worse for e.g. 
LOCAL_\{QUORUM,ONE\}.

While the guarantees of the system are the same, the actual behaviour is 
suboptimal - while the coordinator and remote DCs are healthy, in my opinion we 
should do our best to ensure each DC reaches its own quorum, just as a normal 
write would.

This probably entails having our write callback handle failure to not only 
write a hint for the endpoint, but also decide if a mutation should immediately 
be sent to a corresponding transient replica.

At the very least, we should discuss this before 4.0, even if we opt to take no 
action before 4.x.



--
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