Stabilize 039_end_of_wal test.
authorThomas Munro <[email protected]>
Sat, 31 Aug 2024 02:32:08 +0000 (14:32 +1200)
committerThomas Munro <[email protected]>
Sat, 31 Aug 2024 02:51:07 +0000 (14:51 +1200)
The first test was sensitive to the insert LSN after setting up the
catalogs, which depended on environmental things like the locales on the
OS and usernames.  Switch to a new WAL file before the first test, as a
simple way to put every computer into the same state.

Back-patch to all supported releases.

Reported-by: Anton Voloshin <[email protected]>
Reported-by: Nathan Bossart <[email protected]>
Reviewed-by: Tom Lane <[email protected]>
Reviewed-by: Nathan Bossart <[email protected]>
Discussion: https://postgr.es/m/b26aeac2-cb6d-4633-a7ea-945baae83dcf%40postgrespro.ru

src/test/recovery/t/039_end_of_wal.pl

index 2013e663a31ed031d72c1c1e0b4580a3814b73ce..58327359bb4de4fb5f8b33bb958b2cd28621d65f 100644 (file)
@@ -257,6 +257,12 @@ $WAL_BLOCK_SIZE = get_int_setting($node, 'wal_block_size');
 $TLI = $node->safe_psql('postgres',
    "SELECT timeline_id FROM pg_control_checkpoint();");
 
+# Initial LSN may vary across systems due to different catalog contents set up
+# by initdb.  Switch to a new WAL file so all systems start out in the same
+# place.  The first test depends on trailing zeroes on a page with a valid
+# header.
+$node->safe_psql('postgres', "SELECT pg_switch_wal();");
+
 my $end_lsn;
 my $prev_lsn;