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: pgsql-hackers@postgresql.org
Date: 2021-05-18T00:58:05Z
Lists: pgsql-hackers
At Mon, 17 May 2021 23:29:18 +0900, Fujii Masao <masao.fujii@oss.nttdata.com> wrote in > If a promotion is triggered while recovery is paused, the paused state > ends > and promotion continues. But currently pg_get_wal_replay_pause_state() > returns 'paused' in that case. Isn't this a bug? > > Attached patch fixes this issue by resetting the recovery pause state > to > 'not paused' when standby promotion is triggered. > > Thought? Nice catch! Once the state enteres "paused" state no more WAL record is expected to be replayed until exiting the state. I'm not sure but maybe we are also expecting that the server promotes whthout a record replayed when triggered while pausing. However, actually there's a chance for a record to replayed before promotion. Of course it is existing behavior but I'd like to make sure whether we deliberately allow that. regards. -- Kyotaro Horiguchi NTT Open Source Software Center
Commits
-
Remove unnecessary use of Time::HiRes from 013_crash_restart.pl.
- df466d30c6ca 14.0 landed
-
Add regression test for recovery pause.
- 6bbc5c5e96b0 14.0 landed
-
Make standby promotion reset the recovery pause state to 'not paused'.
- 167bd4804995 14.0 landed
-
Prefer standby promotion over recovery pause.
- 496ee647ecd2 13.0 cited