Re: Changes to recovery_min_apply_delay are ignored while waiting for delay

From: Kyotaro Horiguchi <horikyota(dot)ntt(at)gmail(dot)com>
To: soumyadeep2007(at)gmail(dot)com
Cc: pgsql-hackers(at)postgresql(dot)org, ashwinstar(at)gmail(dot)com
Subject: Re: Changes to recovery_min_apply_delay are ignored while waiting for delay
Date: 2021-08-03 06:42:48
Message-ID: 20210803.154248.333611867023084409.horikyota.ntt@gmail.com
Views: Raw Message | Whole Thread | Download mbox | Resend email
Thread:
Lists: pgsql-hackers

At Mon, 2 Aug 2021 22:21:56 -0700, Soumyadeep Chakraborty <soumyadeep2007(at)gmail(dot)com> wrote in
> Hello,
>
> I came across this issue while I was tweaking a TAP test with Ashwin for
> this thread [1].
>
> We noticed that while the startup process waits for a recovery delay, it does
> not respect changes to the recovery_min_apply_delay GUC. So:
>
> // Standby is waiting on recoveryWakeupLatch with a large
> recovery_min_apply_delay value
> node_standby->safe_psql('postgres', 'ALTER SYSTEM SET
> recovery_min_apply_delay TO 0;');
> node_standby->reload;
> // Standby is still waiting, it does not proceed until the old timeout
> is elapsed.
>
> I attached a small patch to fix this. It makes it so that
> recovery_min_apply_delay is reconsulted in the loop to redetermine the wait
> interval. This makes it similar to the loop in CheckpointerMain, where
> CheckPointTimeout is consulted after interrupts are handled:
>
> if (elapsed_secs >= CheckPointTimeout)
> continue; /* no sleep for us ... */
>
> I have also added a test to 005_replay_delay.pl.
>
> Regards,
> Soumyadeep(VMware)
>
> [1] https://www.postgresql.org/message-id/flat/CANXE4Tc3FNvZ_xAimempJWv_RH9pCvsZH7Yq93o1VuNLjUT-mQ%40mail.gmail.com

Sounds reasonable and the patch looks fine as a whole. Applied cleanly
and works as expected. The added test properly catches the issue.

One comment from me.

+$node_standby->safe_psql('postgres', "ALTER SYSTEM SET recovery_min_apply_delay TO 0;");

It might be better do "SET reco.. TO DEFAULT" instead.

And how about adding the new test at the end of existing tests. We can
get rid of the extra lines in the diff.

regards.

--
Kyotaro Horiguchi
NTT Open Source Software Center

In response to

Responses

Browse pgsql-hackers by date

  From Date Subject
Next Message Nitin Jadhav 2021-08-03 06:48:10 Re: when the startup process doesn't (logging startup delays)
Previous Message tanghy.fnst@fujitsu.com 2021-08-03 06:30:03 RE: Added schema level support for publication.