Re: [BUG] non archived WAL removed during production crash recovery

Michael Paquier <michael@paquier.xyz>

From: Michael Paquier <michael@paquier.xyz>
To: Jehan-Guillaume de Rorthais <jgdr@dalibo.com>
Cc: Kyotaro Horiguchi <horikyota.ntt@gmail.com>, masao.fujii@oss.nttdata.com, pgsql-bugs@lists.postgresql.org
Date: 2020-04-22T01:19:35Z
Lists: pgsql-bugs, pgsql-hackers
On Wed, Apr 22, 2020 at 12:41:21AM +0200, Jehan-Guillaume de Rorthais wrote:
> Do we need to acquire info_lck to look at the state here, as we do in
> GetRecoveryState()? Why is it missing from previous code where
> SharedRecoveryInProgress was protected by info_lck as well?

Please see 1a3d104.

> Plus, the new line length overflow the 80-column, but I'm not sure where to
> break this line.

pgindent has been run on v8, and it did not complain.

> In fact, this was inherited from 011_crash_recovery.pl where I originally
> added some tests. As 020_archive_status.pl doesn't use IPC::Run, the comment is
> wrong. But I wonder if this whole block is really needed. Unfortunately I can't
> test on MSWin32 :/

You are right here.  The restriction can be removed, and I have
checked that the test from v8 is able to pass on my Windows dev VM.
--
Michael

Commits

  1. Fix interpolation in test name.

  2. Add more TAP coverage for archive status with crash recovery of standbys

  3. Fix handling of WAL segments ready to be archived during crash recovery

  4. Fix WAL recycling on standbys depending on archive_mode