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 03:00:21 +0000 (15:00 +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 d2bf062bb23aef4c8e2ed0d8218772510bbf3fcd..02f0091a6c5525e8a0b46020d7f8a7092674ebf2 100644 (file)
@@ -251,6 +251,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;