summaryrefslogtreecommitdiff
path: root/src/test
diff options
context:
space:
mode:
authorAlvaro Herrera2021-07-29 21:09:06 +0000
committerAlvaro Herrera2021-07-29 21:09:06 +0000
commitce197e91d02ca38ac1b956a3e0c11596099e7893 (patch)
tree994d87ddf47e7f421c74c63e3dbaf0555ad5c6be /src/test
parentfcf4c0ae1db8594cf3d3e84d2564616497eecd5a (diff)
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 While at it, update one comment that was forgotten in commit d18e75664a2f. Author: Kyotaro Horiguchi <horikyota.ntt@gmail.com> Discussion: https://postgr.es/m/20210729.162038.534808353849568395.horikyota.ntt@gmail.com
Diffstat (limited to 'src/test')
-rw-r--r--src/test/recovery/t/019_replslot_limit.pl14
1 files changed, 12 insertions, 2 deletions
diff --git a/src/test/recovery/t/019_replslot_limit.pl b/src/test/recovery/t/019_replslot_limit.pl
index 99e1a83e4b5..e065c5c008c 100644
--- a/src/test/recovery/t/019_replslot_limit.pl
+++ b/src/test/recovery/t/019_replslot_limit.pl
@@ -173,11 +173,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_primary->safe_psql('postgres', "CHECKPOINT;");
+
+# Prevent other checkpoints from occurring while advancing WAL segments
+$node_primary->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_primary);
advance_wal($node_primary, 7);
-# wait until the WARNING is issued
+# Now create another checkpoint and wait until the WARNING is issued
+$node_primary->safe_psql('postgres',
+ 'ALTER SYSTEM RESET max_wal_size; SELECT pg_reload_conf()');
+$node_primary->safe_psql('postgres', "CHECKPOINT;");
my $invalidated = 0;
for (my $i = 0; $i < 10000; $i++)
{