What I understand is that read_repair_chance is a probabilistic chance to trigger a ReadRepair over all the replicas. If an inconsistency is found the most recent update would serve to repair the data.
ReadRepairs are too expensive for me because most of my read CL is ONE. So I choose read_repair_chance = 0 and dclocal_read_repair_chance = 0 too.
But sometimes I use QUORUM instead of ONE. Read QUORUM is reached when two replicas respond, but the two records can be different. Cassandra return the one with the most recent timestamp. Does it try to repair the other one ?
But sometimes I use QUORUM instead of ONE. Read QUORUM is reached when two replicas respond, but the two records can be different. Cassandra return the one with the most recent timestamp. Does it try to repair the other one?
Assuming that my RF is 3 and write and read CL are QUORUM. What I mean saying that 'wanted CL is reached' is that two replicas at least respond, this is QUORUM. But nothing proves that the two records are identical. Cassandra returns the one with the most recent timestamp. But my question is does it try to repair the other record?
The answer is YES.
Cassandra will try to repair the other one, even though read_repair_chance = 0 and dclocal_read_repair_chance = 0.
It is called 'digest mismatch'. The only way to avoid read repair is reading at LOCAL_ONE or ONE where no digest mismatch can occur.