Re: pg_get_wal_replay_pause_state() should not return 'paused' while a promotion is ongoing.

Kyotaro Horiguchi <horikyota.ntt@gmail.com>

From: Kyotaro Horiguchi <horikyota.ntt@gmail.com>
To: masao.fujii@oss.nttdata.com
Cc: dilipbalaut@gmail.com, michael@paquier.xyz, pgsql-hackers@postgresql.org
Date: 2021-05-31T08:18:42Z
Lists: pgsql-hackers
Sorry for missing this.

At Mon, 31 May 2021 12:52:54 +0900, Fujii Masao <masao.fujii@oss.nttdata.com> wrote in 
> 
> On 2021/05/19 19:24, Fujii Masao wrote:
> > On 2021/05/19 16:43, Kyotaro Horiguchi wrote:
> >> +1 for adding some tests for pg_wal_replay_pause() but the test seems
> >> like checking only that pg_get_wal_replay_pause_state() returns the
> >> expected state value.  Don't we need to check that the recovery is
> >> actually paused and that the promotion happens at expected LSN?
> > Sounds good. Attached is the updated version of the patch.
> > I added such checks into the test.

Thanks! Looks fine. The paused-state test may get false-success but it
would be sufficient that it detects the problem in most cases.

> > BTW, while reading some recovery regression tests, I found that
> > 013_crash_restart.pl has "use Time::HiRes qw(usleep)" but it seems
> > not necessary. We can safely remove that? Patch attached.

Looks just fine for the removal of HiRes usage.  All other use of
HiRes are accompanied by a usleep usage.

> Barring any objections, I'm thinking to commit these two patches.

+1.

regards.

-- 
Kyotaro Horiguchi
NTT Open Source Software Center



Commits

  1. Remove unnecessary use of Time::HiRes from 013_crash_restart.pl.

  2. Add regression test for recovery pause.

  3. Make standby promotion reset the recovery pause state to 'not paused'.

  4. Prefer standby promotion over recovery pause.