0
votes

I am new to cassandra and trying to figure out how cassandra provides consistency in case of failed writes. Consider following scenario where CL is QUORUM, in which case 2 out of 3 replicas must respond. Write request will go to all 3 replica as usual, if write to 2 replica fails, and succeeds on 1 replica, cassandra will return Failed. Since cassandra does not rollback, the record will continue to exist on successful replica. Now, when the read come with CL=QUORUM,the read request will be forwarded to 2 replica node and if one of the replica node is the previously successful one then cassandra will return the new records as it will have latest timestamp. But from client perspective this record was not written at all as cassandra had returned failure during write. If this is the case then cassandra will never be consistent in this scenario. How to handle such scenario Please let me know if this understanding is correct.

1
Cassandra is biased on taught of eventual consistency . so if if still want consistency either u have to rethink Cassandra is right for you. or use RF is the replication factor =3sandeep rawat

1 Answers

0
votes

Your understanding is correct. The client in this case should receive UnavailableException, but should understand that the write will eventually propagate to the other replicas (if the nodes are alive or come alive), and that this is not a failed write.

For more details see the following articles: