Thread: recovery_min_apply-delay and remote_apply

recovery_min_apply-delay and remote_apply

From
Bernd Helmle
Date:
Current PostgreSQL Documentation on recovery.conf has this about
recovery_min_apply_delay[1]:

---<---

This parameter is intended for use with streaming replication deployments;
however, if the parameter is specified it will be honored in all cases.
Synchronous replication is not affected by this setting because there is
not yet any setting to request synchronous apply of transaction commits.

--->---

If i understand correctly, this is not true anymore with 9.6, where
remote_apply will have exactly the behavior the paragraph above wants to
contradict: any transaction executed with synchronous_commit=remote_apply
will wait at least recovery_min_apply_delay to finish. Given that
synchronous_commit can be controlled by any user, this might be dangerous
if someone doesn't take care enough.

I think we need a doc patch for that at least, see attached patch against
master, but 9.6 should have a corrected one, too.

[1] <https://www.postgresql.org/docs/devel/static/standby-settings.html>


--
Thanks

    Bernd
Attachment

Re: recovery_min_apply-delay and remote_apply

From
Thomas Munro
Date:
On Sat, Sep 17, 2016 at 8:45 AM, Bernd Helmle <mailings@oopsware.de> wrote:
> Current PostgreSQL Documentation on recovery.conf has this about
> recovery_min_apply_delay[1]:
>
> ---<---
>
> This parameter is intended for use with streaming replication deployments;
> however, if the parameter is specified it will be honored in all cases.
> Synchronous replication is not affected by this setting because there is
> not yet any setting to request synchronous apply of transaction commits.
>
> --->---
>
> If i understand correctly, this is not true anymore with 9.6, where
> remote_apply will have exactly the behavior the paragraph above wants to
> contradict: any transaction executed with synchronous_commit=remote_apply
> will wait at least recovery_min_apply_delay to finish. Given that
> synchronous_commit can be controlled by any user, this might be dangerous
> if someone doesn't take care enough.

Yes, I missed that sentence.  Thanks.

> I think we need a doc patch for that at least, see attached patch against
> master, but 9.6 should have a corrected one, too.

+1

-- 
Thomas Munro
http://www.enterprisedb.com



Re: recovery_min_apply-delay and remote_apply

From
Robert Haas
Date:
On Fri, Sep 16, 2016 at 5:55 PM, Thomas Munro
<thomas.munro@enterprisedb.com> wrote:
> On Sat, Sep 17, 2016 at 8:45 AM, Bernd Helmle <mailings@oopsware.de> wrote:
>> Current PostgreSQL Documentation on recovery.conf has this about
>> recovery_min_apply_delay[1]:
>>
>> ---<---
>>
>> This parameter is intended for use with streaming replication deployments;
>> however, if the parameter is specified it will be honored in all cases.
>> Synchronous replication is not affected by this setting because there is
>> not yet any setting to request synchronous apply of transaction commits.
>>
>> --->---
>>
>> If i understand correctly, this is not true anymore with 9.6, where
>> remote_apply will have exactly the behavior the paragraph above wants to
>> contradict: any transaction executed with synchronous_commit=remote_apply
>> will wait at least recovery_min_apply_delay to finish. Given that
>> synchronous_commit can be controlled by any user, this might be dangerous
>> if someone doesn't take care enough.
>
> Yes, I missed that sentence.  Thanks.
>
>> I think we need a doc patch for that at least, see attached patch against
>> master, but 9.6 should have a corrected one, too.
>
> +1

Committed with a bit of adjustment, and back-patched to 9.6.

-- 
Robert Haas
EnterpriseDB: http://www.enterprisedb.com
The Enterprise PostgreSQL Company