Hi Tobias

READ2 will not be blocked by READ repair of READ1.

Regards
Manish

On Tue, Aug 11, 2020 at 6:02 PM Tobias Eriksson <tobias.eriks...@qvantel.com>
wrote:

> Thanx Erick,
>
> Perhaps this is super obvious but I need a confirmation as you say “…not
> subsequent reads for other data unrelated to the read being repaired…”
>
> But this is subsequent reads to the _*same*_ partition key
>
> So to be more explicit
>
> READ 1 with Local Quorum : SELECT * FROM products WHERE id = ABC123
>
> READ 2 with Local One : SELECT * FROM products WHERE id = ABC123
>
>
>
> Would read (2) be blocked by the READ REPAIR that was done by read (1)
>
> As I understand that the read repair is working not on the whole table but
> on the partition key it had problems with
>
>
>
> -Tobias
>
>
>
>
>
> *From: *Erick Ramirez <erick.rami...@datastax.com>
> *Reply to: *"user@cassandra.apache.org" <user@cassandra.apache.org>
> *Date: *Tuesday, 11 August 2020 at 11:26
> *To: *"user@cassandra.apache.org" <user@cassandra.apache.org>
> *Subject: *Re: Why a READ REPAIR ?
>
>
>
> If a READ triggers a READ REPAIR, and then if we do an additional READ
> would then that BLOCK until the “first” READ REPAIR would be done ?
>
> -Tobias
>
>
>
> Not all read repairs are blocking RRs (aka foreground RRs). There are also
> background RRs which by definition are non-blocking because they happen in
> the background.
>
>
>
> In response to your question, the "additional read" is not blocked. In a
> blocking RR, if there is a mismatch in the data returned to the coordinator
> from the replicas involved in the query (determined by the read consistency
> level) then the coordinator sends a repair to the out-of-sync replica in
> the foreground before sending the result back to the client so the read is
> blocked until the RR is completed. To reiterate, only the read involved in
> the RR is blocked -- not subsequent reads for other data unrelated to the
> read being repaired. Cheers!
>
>
>

Reply via email to