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-22T15:58:24Z
Lists: pgsql-bugs, pgsql-hackers

Attachments

On Wed, 22 Apr 2020 16:32:23 +0900
Michael Paquier <michael@paquier.xyz> wrote:

> On Wed, Apr 22, 2020 at 10:19:35AM +0900, Michael Paquier wrote:
> > 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.  
> 
> Attached are versions for each branch down to 9.5.  While working on
> the backpatch, I have not found major conflicts except one thing:
> up to 10, Postgres does WAL segment recycling after two completed
> checkpoints, and the 8th test of the script relies on the behavior of
> 11~ of one completed checkpoint (first .ready file present in the cold
> backup but removed removed from $standby1).  I have taken the simplest
> approach to fix the test by checking that the .ready file actually
> exists, while the rest of the test remains the same.

This test seems useless to me. It should either be removed or patched to test
the signal has been removed after a second restartpoint.

Please, find in attachment a patch for 9.6 implementing this. If it seems
reasonable to you, I can create the backpatch to 9.5.

> It is worth noting that for 9.5 and 9.6 the test had compatibility
> issues with the renaming of pg_xlog to pg_wal, including paths and
> functions.  The calls to poll_query_until() also needed tweaks, but
> I got the tests to work.

Thanks for the backpatching work!

Regards,

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