Fix race condition in t/028_pitr_timelines.pl.
authorNoah Misch <noah@leadboat.com>
Sat, 2 Jul 2022 01:27:18 +0000 (18:27 -0700)
committerNoah Misch <noah@leadboat.com>
Sat, 2 Jul 2022 01:27:18 +0000 (18:27 -0700)
Per buildfarm members sungazer and mylodon.  Back-patch to v15, which
introduced this test.

Discussion: https://postgr.es/m/20220627070457.GA2176699@rfd.leadboat.com

src/test/recovery/t/028_pitr_timelines.pl

index a8b12d9af6e3ea14045b78915c7a575bb9eff2e5..bad02edf90abfc3def7665616820df9f3e3e94bc 100644 (file)
@@ -140,6 +140,13 @@ is($result, qq{1}, "check table contents after point-in-time recovery");
 # back to this timeline.
 $node_pitr->safe_psql('postgres', "INSERT INTO foo VALUES(3);");
 
+# Wait for the archiver to be running.  The startup process might have yet to
+# exit, in which case the postmaster has not started the archiver.  If we
+# stop() without an archiver, the archive will be incomplete.
+$node_pitr->poll_query_until('postgres',
+   "SELECT true FROM pg_stat_activity WHERE backend_type = 'archiver';")
+  or die "Timed out while waiting for archiver to start";
+
 # Stop the node.  This archives the last segment.
 $node_pitr->stop();