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

Fujii Masao <masao.fujii@oss.nttdata.com>

From: Fujii Masao <masao.fujii@oss.nttdata.com>
To: Kyotaro Horiguchi <horikyota.ntt@gmail.com>
Cc: dilipbalaut@gmail.com, michael@paquier.xyz, pgsql-hackers@postgresql.org
Date: 2021-05-19T10:24:09Z
Lists: pgsql-hackers

Attachments


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.

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.

Regards,

-- 
Fujii Masao
Advanced Computing Technology Center
Research and Development Headquarters
NTT DATA CORPORATION

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.