Re: Disallow cancellation of waiting for synchronous replication - Mailing list pgsql-hackers

From Andrey Borodin
Subject Re: Disallow cancellation of waiting for synchronous replication
Date
Msg-id D2C315E4-5DBA-4989-9E17-D8C7C95D9BC3@yandex-team.ru
Whole thread Raw
In response to Re: Disallow cancellation of waiting for synchronous replication  (Marco Slot <marco@citusdata.com>)
Responses Re: Disallow cancellation of waiting for synchronous replication  (Michael Paquier <michael@paquier.xyz>)
Re: Disallow cancellation of waiting for synchronous replication  (Marco Slot <marco@citusdata.com>)
List pgsql-hackers

> 20 дек. 2019 г., в 12:23, Marco Slot <marco@citusdata.com> написал(а):
>
> On Fri, Dec 20, 2019 at 6:04 AM Andrey Borodin <x4mmm@yandex-team.ru> wrote:
>> I think proper solution here would be to add GUC to disallow cancellation of synchronous replication. Retry step 3
willwait on locks after hanging 1 and data will be consistent. 
>> Three is still a problem when backend is not canceled, but terminated [2]. Ideal solution would be to keep locks on
changeddata. Some well known databases threat termination of synchronous replication as system failure and refuse to
operateuntil standbys appear (see Maximum Protection mode). From my point of view it's enough to PANIC once so that HA
toolbe informed that something is going wrong. 
>
> Sending a cancellation is currently the only way to resume after
> disabling synchronous replication. Some HA solutions (e.g.
> pg_auto_failover) rely on this behaviour. Would it be worth checking
> whether synchronous replication is still required?

I think changing synchronous_standby_names to some available standbys will resume all backends waiting for synchronous
replication.
Do we need to check necessity of synchronous replication in any other case?

Best regards, Andrey Borodin.


pgsql-hackers by date:

Previous
From: Jehan-Guillaume de Rorthais
Date:
Subject: Re: How is this possible "publication does not exist"
Next
From: Jehan-Guillaume de Rorthais
Date:
Subject: Re: Fetching timeline during recovery