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

Jehan-Guillaume de Rorthais <jgdr@dalibo.com>

From: Jehan-Guillaume de Rorthais <jgdr@dalibo.com>
To: Michael Paquier <michael@paquier.xyz>
Cc: Kyotaro Horiguchi <horikyota.ntt@gmail.com>, masao.fujii@oss.nttdata.com, pgsql-bugs@lists.postgresql.org
Date: 2020-04-22T14:14:20Z
Lists: pgsql-bugs, pgsql-hackers
On Wed, 22 Apr 2020 10:19:35 +0900
Michael Paquier <michael@paquier.xyz> wrote:

> 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.

Understood. Interesting. Thank you.

> > 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.

OK.

> > 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.

Thanks!



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