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>, tgl@sss.pgh.pa.us, masao.fujii@oss.nttdata.com, pgsql-bugs@lists.postgresql.org
Date: 2020-04-27T23:58:47Z
Lists: pgsql-bugs, pgsql-hackers
On Tue, 28 Apr 2020 08:01:38 +0900
Michael Paquier <michael@paquier.xyz> wrote:

> On Mon, Apr 27, 2020 at 06:21:07PM +0900, Kyotaro Horiguchi wrote:
> > Agreed to the diagnosis and the fix. The fix reliably cause a restart
> > point then the restart point manipulats the status files the right way
> > before the CHECKPOINT command resturns, in the both cases.  
> 
> Thanks for checking!
> 
> > If I would add something to the fix, the following line may need a
> > comment.
> > 
> > +# Wait for the checkpoint record is replayed so that the following
> > +# CHECKPOINT causes a restart point reliably.
> > |+$standby1->poll_query_until('postgres',
> > |+	qq{ SELECT pg_wal_lsn_diff(pg_last_wal_replay_lsn(),
> > '$primary_lsn') >= 0 }  
> 
> Makes sense, added a comment and applied to HEAD.  I have also
> improved the comment around the split with pg_switch_wal(), and
> actually simplified the test to use as wait point the return value
> from the function.

Thank you guys for your help, reviews and commits!



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