From fe0a2284d87930cd18d13ff4c473f96de5a965e8 Mon Sep 17 00:00:00 2001 From: Michael Paquier Date: Sun, 5 Apr 2026 20:45:16 +0900 Subject: [PATCH] Improve stability of worker_spi termination test This switches the test to wait for the spawned bgworkers to reach their main loops, napping. worker_spi.naptime is enlarged to 10 minutes to give enough room for slow machines to reach this state. --- .../worker_spi/t/002_worker_terminate.pl | 17 +++++++++-------- 1 file changed, 9 insertions(+), 8 deletions(-) diff --git a/src/test/modules/worker_spi/t/002_worker_terminate.pl b/src/test/modules/worker_spi/t/002_worker_terminate.pl index b0e6a5376d4c..a7d507cc0596 100644 --- a/src/test/modules/worker_spi/t/002_worker_terminate.pl +++ b/src/test/modules/worker_spi/t/002_worker_terminate.pl @@ -20,7 +20,6 @@ if ($ENV{enable_injection_points} ne 'yes') sub launch_bgworker { my ($node, $database, $testcase, $interruptible) = @_; - my $offset = -s $node->logfile; # Launch a background worker on the given database. my $pid = $node->safe_psql( @@ -28,13 +27,11 @@ sub launch_bgworker SELECT worker_spi_launch($testcase, '$database'::regdatabase, 0, '{}', $interruptible); )); - # Check that the bgworker is initialized. - $node->wait_for_log( - qr/LOG: .*worker_spi dynamic worker $testcase initialized with .*\..*/, - $offset); - my $result = $node->safe_psql('postgres', - "SELECT count(*) > 0 FROM pg_stat_activity WHERE pid = $pid;"); - is($result, 't', "dynamic bgworker $testcase launched"); + # Check that the bgworker is initialized and napping. + my $result = $node->poll_query_until('postgres', + qq[SELECT wait_event FROM pg_stat_activity WHERE pid = $pid;], + qq[WorkerSpiMain]); + is($result, 1, "dynamic bgworker $testcase launched"); return $pid; } @@ -64,11 +61,15 @@ sub run_bgworker_interruptible_test my $node = PostgreSQL::Test::Cluster->new('mynode'); $node->init; +# The naptime is large enough to give room on slow machines to reach +# the main loop of the spawned workers, after these initialize their +# schemas. $node->append_conf( "postgresql.conf", qq( autovacuum = off debug_parallel_query = off log_min_messages = debug1 +worker_spi.naptime = 600 )); $node->start; -- 2.53.0