Close yet another race condition in replication slot test code

Buildfarm shows that this test has a further failure mode when a
checkpoint starts earlier than expected, so we detect a "checkpoint
completed" line that's not the one we want.  Change the config to try
and prevent this.

Per buildfarm

Author: Kyotaro Horiguchi <horikyota.ntt@gmail.com>
Discussion: https://postgr.es/m/20210729.162038.534808353849568395.horikyota.ntt@gmail.com
This commit is contained in:
Alvaro Herrera 2021-07-29 17:26:25 -04:00
parent efe169c900
commit 41d27ee7b8
No known key found for this signature in database
GPG Key ID: 1C20ACB9D5C564AE

View File

@ -170,11 +170,21 @@ ok( !find_in_log(
"requested WAL segment [0-9A-F]+ has already been removed"),
'check that required WAL segments are still available');
# Advance WAL again, the slot loses the oldest segment.
# Create one checkpoint, to improve stability of the next steps
$node_master->safe_psql('postgres', "CHECKPOINT;");
# Prevent other checkpoints from occurring while advancing WAL segments
$node_master->safe_psql('postgres',
"ALTER SYSTEM SET max_wal_size='40MB'; SELECT pg_reload_conf()");
# Advance WAL again. The slot loses the oldest segment by the next checkpoint
my $logstart = get_log_size($node_master);
advance_wal($node_master, 7);
# wait until the WARNING is issued
# Now create another checkpoint and wait until the WARNING is issued
$node_master->safe_psql('postgres',
'ALTER SYSTEM RESET max_wal_size; SELECT pg_reload_conf()');
$node_master->safe_psql('postgres', "CHECKPOINT;");
my $invalidated = 0;
for (my $i = 0; $i < 10000; $i++)
{