From 36bf002beaf5359981ab5099d339d730e1ea4f3c Mon Sep 17 00:00:00 2001
From: Fujii Masao <fujii@postgresql.org>
Date: Thu, 3 Sep 2026 08:20:51 +0900
Subject: [PATCH v1] Stabilize 026_overwrite_contrecord test

On slow machines, this test can take long enough to generate WAL that a
time-based checkpoint occurs before the primary is stopped. If the
checkpoint record is written to the tail WAL segment that the test later
removes, a standby initialized from the resulting backup tries to read
the missing checkpoint record and fails with a PANIC during startup.
This caused the test to fail on buildfarm member skink.

Fix this by setting checkpoint_timeout high enough to prevent unrelated
checkpoints during the test. This follows the approach used by other
recovery tests, such as 043_no_contrecord_switch.pl, that depend on a
specific WAL layout.

Backpatch to all supported versions.
---
 src/test/recovery/t/026_overwrite_contrecord.pl | 5 ++++-
 1 file changed, 4 insertions(+), 1 deletion(-)

diff --git a/src/test/recovery/t/026_overwrite_contrecord.pl b/src/test/recovery/t/026_overwrite_contrecord.pl
index 82567ca6bfc..8db06739902 100644
--- a/src/test/recovery/t/026_overwrite_contrecord.pl
+++ b/src/test/recovery/t/026_overwrite_contrecord.pl
@@ -17,10 +17,13 @@ use Test::More;
 
 my $node = PostgreSQL::Test::Cluster->new('primary');
 $node->init(allows_streaming => 1);
-# We need these settings for stability of WAL behavior.
+# We need these settings for stability of WAL behavior.  checkpoint_timeout
+# avoids noise from checkpoint activity, and autovacuum is disabled to avoid
+# any WAL activity generated by it.
 $node->append_conf(
 	'postgresql.conf', qq(
 autovacuum = off
+checkpoint_timeout = '30min'
 wal_keep_size = 1GB
 ));
 $node->start;
-- 
2.55.0

