Received: from malur.postgresql.org ([217.196.149.56]) by arkaria.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wVxhY-002InE-2t for pgsql-hackers@arkaria.postgresql.org; Sat, 06 Jun 2026 20:33:05 +0000 Received: from localhost ([127.0.0.1] helo=malur.postgresql.org) by malur.postgresql.org with esmtp (Exim 4.96) (envelope-from ) id 1wVxhX-00GUnP-1A for pgsql-hackers@arkaria.postgresql.org; Sat, 06 Jun 2026 20:33:03 +0000 Received: from makus.postgresql.org ([2001:4800:3e1:1::229]) by malur.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_256_GCM_SHA384 (Exim 4.96) (envelope-from ) id 1wVxhX-00GUnH-00 for pgsql-hackers@lists.postgresql.org; Sat, 06 Jun 2026 20:33:03 +0000 Received: from mail-wm1-x330.google.com ([2a00:1450:4864:20::330]) by makus.postgresql.org with esmtps (TLS1.3) tls TLS_ECDHE_RSA_WITH_AES_128_GCM_SHA256 (Exim 4.98.2) (envelope-from ) id 1wVxhV-00000001RU2-16ug for pgsql-hackers@lists.postgresql.org; Sat, 06 Jun 2026 20:33:02 +0000 Received: by mail-wm1-x330.google.com with SMTP id 5b1f17b1804b1-490af320e2aso34287505e9.2 for ; Sat, 06 Jun 2026 13:33:01 -0700 (PDT) DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=gmail.com; s=20251104; t=1780777979; x=1781382779; darn=lists.postgresql.org; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:from:to:cc:subject:date:message-id:reply-to; bh=k+wWYfr1debDUcIRYdyNdYDXQgfkXoaxBCv6Cbba2iU=; b=PxgrOcWpdzvTu0KUtmk8DjLbag6CC+H/SPCNxJcAgfdObIxHQxduQwbT/KuAolJKuL AvdDXpiydn3zWsKRSRTzTksekQjkYe70H68IMWDEbnpxJDE8jWK89+ziVdp9KFosSgKF O8vO1J9uaHJDyPhEb9EQ1RquFNxAd2extjBfy2ZSl2VAZ+zkATYrIO7P/uicykOVdeU5 rfII/fIm1+wT71R+IqZhiCMMNGn6B5OhAVQhywErNoulgjwH4zp15cqUqh9ywMBJCmU5 s/+1Zglke/AKv/FN1bdBYOudX+4iLeqsnWnDtf5itt/gwWoip9d2xvye6uznmwfcbxbl CC2A== X-Google-DKIM-Signature: v=1; a=rsa-sha256; c=relaxed/relaxed; d=1e100.net; s=20251104; t=1780777979; x=1781382779; h=content-transfer-encoding:mime-version:message-id:date:subject:cc :to:from:x-gm-gg:x-gm-message-state:from:to:cc:subject:date :message-id:reply-to; bh=k+wWYfr1debDUcIRYdyNdYDXQgfkXoaxBCv6Cbba2iU=; b=pCCg6z01OiCTP3q8heKRFvFVTv0ErOoQ+Ui+hWhhbZHL0SzIXU2dFzOaIqoOY57wEn mygpOARk35+ZX5HGMkk84Qr6Vxp9JkyIUnrTlToNhxSpossBmxo3W4OlG8llmPSgGCu/ 7JtWOX4KvqZkYR1T2JtLZuv38R85YztCK4tIEZYS7lbSLBKwKAExn6VYkdi4QGez5LqB lpqxeVJ3ywXcF7esKcaTSZE3K6JLBSjPwXLSA0gNw6mtfXtOR7Iko1y16rQSCBRk2MQ/ inQ+nUDYXJk0kqGf2deuAbOVSDedAReaiW+OsDjwAM6XXJgszOqCySJwq7VZmDQEhRhT uoqQ== X-Gm-Message-State: AOJu0Yy1iuz5llH7m9IM+cGX4yc6fb0E3GutBA1Acm7E3i6LnKYq6Y2h bNkPGBQ7ETHRwpuHCZ6yB45CeI0IDI5GK+7b+oQ+QfeSo9Z338z4PFNf0RQnjxMd X-Gm-Gg: Acq92OGw/TSjgmrAErx0vxOcodPW9Cn1Q+2cI1qsaBSmi07/SK66AlvG/7SlIsPabX4 HllMpS9ERbpneJrJ3J/v+hBCnJuQwTnQYEznfBYnSnwpxunvMrg9pvY2pLkoukbbVyLxrGDGJCj IBV8/CH8T1WaI83YMnwWg8IrdCwkPDIKj4JMX8PCEAhLV1XJ0kmBd2Lgj3Z18IBcfdBhVcVXfcP /m7GBfNkZs+mK/UafT6X7LLybgnFH4Pyb78wMs/kFU1xf4AYpDG/jdV6m4ePz7CgBmHZM4ELGJU WxAfxgF2SCcRXXRzY9F0PcnAB+bpFpJPoU6SAW47Aj+jichAeQSyBFSh7m+w5uN3wKoBqnB4KtZ g5tXLVYm9AbiBekN7MuDyGRpEdWUkomw3jxYJYIgYraVhVtXHPQlRPHZ/jQR2aFjs5BEMy3R9Mt rKaGgOqcclvHhnfmFOn30nXNzESLEMCh+WwRH5zZtTi8GWTE7O13WZY8QVUlO6/pgQBzZhPNtHT Av48uT8A9V8UvIQklC9H16h X-Received: by 2002:a05:600c:83c3:b0:48f:d612:3c59 with SMTP id 5b1f17b1804b1-490c25a21a9mr175118505e9.9.1780777978646; Sat, 06 Jun 2026 13:32:58 -0700 (PDT) Received: from alibaba.. ([98.97.77.37]) by smtp.gmail.com with ESMTPSA id ffacd0b85a97d-4601f2dcad5sm41422759f8f.5.2026.06.06.13.32.56 (version=TLS1_3 cipher=TLS_AES_256_GCM_SHA384 bits=256/256); Sat, 06 Jun 2026 13:32:58 -0700 (PDT) From: Zakariyah Ali To: pgsql-hackers@lists.postgresql.org Cc: Zakariyah Ali Subject: [PATCH] Fix loose polling in 019_replslot_limit.pl test Date: Sat, 6 Jun 2026 21:32:22 +0100 Message-ID: <20260606203222.108048-1-zakariyahali100@gmail.com> X-Mailer: git-send-email 2.43.0 MIME-Version: 1.0 Content-Transfer-Encoding: 8bit List-Id: List-Help: List-Subscribe: List-Post: List-Owner: List-Archive: Archived-At: Precedence: bulk Signed-off-by: Zakariyah Ali --- src/test/recovery/t/019_replslot_limit.pl | 78 +++++------------------ 1 file changed, 16 insertions(+), 62 deletions(-) diff --git a/src/test/recovery/t/019_replslot_limit.pl b/src/test/recovery/t/019_replslot_limit.pl index a412faf51c6..3fdce739965 100644 --- a/src/test/recovery/t/019_replslot_limit.pl +++ b/src/test/recovery/t/019_replslot_limit.pl @@ -186,18 +186,9 @@ $node_primary->advance_wal(7); $node_primary->safe_psql('postgres', 'ALTER SYSTEM RESET max_wal_size; SELECT pg_reload_conf()'); $node_primary->safe_psql('postgres', "CHECKPOINT;"); -my $invalidated = 0; -for (my $i = 0; $i < 10 * $PostgreSQL::Test::Utils::timeout_default; $i++) -{ - if ($node_primary->log_contains( - 'invalidating obsolete replication slot "rep1"', $logstart)) - { - $invalidated = 1; - last; - } - usleep(100_000); -} -ok($invalidated, 'check that slot invalidation has been logged'); +ok( $node_primary->wait_for_log( + 'invalidating obsolete replication slot "rep1"', $logstart), + 'check that slot invalidation has been logged'); $result = $node_primary->safe_psql( 'postgres', @@ -208,17 +199,8 @@ is($result, "rep1|f|t|lost|", 'check that the slot became inactive and the state "lost" persists'); # Wait until current checkpoint ends -my $checkpoint_ended = 0; -for (my $i = 0; $i < 10 * $PostgreSQL::Test::Utils::timeout_default; $i++) -{ - if ($node_primary->log_contains("checkpoint complete: ", $logstart)) - { - $checkpoint_ended = 1; - last; - } - usleep(100_000); -} -ok($checkpoint_ended, 'waited for checkpoint to end'); +ok( $node_primary->wait_for_log("checkpoint complete: ", $logstart), + 'waited for checkpoint to end'); # The invalidated slot shouldn't keep the old-segment horizon back; # see bug #17103: https://postgr.es/m/17103-004130e8f27782c9@postgresql.org @@ -238,18 +220,10 @@ is($oldestseg, $redoseg, "check that segments have been removed"); $logstart = -s $node_standby->logfile; $node_standby->start; -my $failed = 0; -for (my $i = 0; $i < 10 * $PostgreSQL::Test::Utils::timeout_default; $i++) -{ - if ($node_standby->log_contains( - "This replication slot has been invalidated due to \"wal_removed\".", - $logstart)) - { - $failed = 1; - last; - } - usleep(100_000); -} +my $failed = + $node_standby->wait_for_log( + "This replication slot has been invalidated due to \"wal_removed\".", + $logstart); ok($failed, 'check that replication has been broken'); $node_primary->stop; @@ -374,20 +348,10 @@ $logstart = -s $node_primary3->logfile; kill 'STOP', $senderpid, $receiverpid; $node_primary3->advance_wal(2); -my $msg_logged = 0; -my $max_attempts = $PostgreSQL::Test::Utils::timeout_default; -while ($max_attempts-- >= 0) -{ - if ($node_primary3->log_contains( - "terminating process $senderpid to release replication slot \"rep3\"", - $logstart)) - { - $msg_logged = 1; - last; - } - sleep 1; -} -ok($msg_logged, "walsender termination logged"); +ok( $node_primary3->wait_for_log( + "terminating process $senderpid to release replication slot \"rep3\"", + $logstart), + "walsender termination logged"); # Now let the walsender continue; slot should be killed now. # (Must not let walreceiver run yet; otherwise the standby could start another @@ -398,19 +362,9 @@ $node_primary3->poll_query_until('postgres', "lost") or die "timed out waiting for slot to be lost"; -$msg_logged = 0; -$max_attempts = $PostgreSQL::Test::Utils::timeout_default; -while ($max_attempts-- >= 0) -{ - if ($node_primary3->log_contains( - 'invalidating obsolete replication slot "rep3"', $logstart)) - { - $msg_logged = 1; - last; - } - sleep 1; -} -ok($msg_logged, "slot invalidation logged"); +ok( $node_primary3->wait_for_log( + 'invalidating obsolete replication slot "rep3"', $logstart), + "slot invalidation logged"); # Now let the walreceiver continue, so that the node can be stopped cleanly kill 'CONT', $receiverpid; -- 2.43.0