From 766075105c21442418359221e0a0da43040b273c Mon Sep 17 00:00:00 2001 From: Noah Misch Date: Fri, 4 Mar 2022 18:53:13 -0800 Subject: [PATCH] Use PG_TEST_TIMEOUT_DEFAULT for pg_regress suite non-elapsing timeouts. Currently, only contrib/test_decoding has this property. Use \getenv to load the timeout value. Discussion: https://postgr.es/m/20220218052842.GA3627003@rfd.leadboat.com --- contrib/test_decoding/expected/twophase.out | 5 ++++- contrib/test_decoding/sql/twophase.sql | 5 ++++- src/test/regress/expected/stats.out | 5 ++++- src/test/regress/sql/stats.sql | 5 ++++- 4 files changed, 16 insertions(+), 4 deletions(-) diff --git a/contrib/test_decoding/expected/twophase.out b/contrib/test_decoding/expected/twophase.out index e5e0f96896..e89dc74a5e 100644 --- a/contrib/test_decoding/expected/twophase.out +++ b/contrib/test_decoding/expected/twophase.out @@ -137,7 +137,10 @@ WHERE locktype = 'relation' (3 rows) -- The above CLUSTER command shouldn't cause a timeout on 2pc decoding. -SET statement_timeout = '180s'; +\set env_timeout '' +\getenv env_timeout PG_TEST_TIMEOUT_DEFAULT +SELECT COALESCE(NULLIF(:'env_timeout', ''), '180') || 's' AS timeout \gset +SET statement_timeout = :'timeout'; SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); data --------------------------------------------------------------------------- diff --git a/contrib/test_decoding/sql/twophase.sql b/contrib/test_decoding/sql/twophase.sql index 05f18e8494..aff5114eb1 100644 --- a/contrib/test_decoding/sql/twophase.sql +++ b/contrib/test_decoding/sql/twophase.sql @@ -69,7 +69,10 @@ FROM pg_locks WHERE locktype = 'relation' AND relation = 'test_prepared1'::regclass; -- The above CLUSTER command shouldn't cause a timeout on 2pc decoding. -SET statement_timeout = '180s'; +\set env_timeout '' +\getenv env_timeout PG_TEST_TIMEOUT_DEFAULT +SELECT COALESCE(NULLIF(:'env_timeout', ''), '180') || 's' AS timeout \gset +SET statement_timeout = :'timeout'; SELECT data FROM pg_logical_slot_get_changes('regression_slot', NULL, NULL, 'include-xids', '0', 'skip-empty-xacts', '1'); RESET statement_timeout; COMMIT PREPARED 'test_prepared_lock'; diff --git a/src/test/regress/expected/stats.out b/src/test/regress/expected/stats.out index 3e9ab0915f..b7416c8f8f 100644 --- a/src/test/regress/expected/stats.out +++ b/src/test/regress/expected/stats.out @@ -34,7 +34,10 @@ declare updated3 bool; updated4 bool; begin - -- we don't want to wait forever; loop will exit after 30 seconds + -- We don't want to wait forever. No timeout suffices if the OS drops our + -- stats traffic because an earlier test file left a full UDP buffer. + -- Hence, don't use PG_TEST_TIMEOUT_DEFAULT, which may be large for + -- can't-happen timeouts. Exit after 30 seconds. for i in 1 .. 300 loop -- With parallel query, the seqscan and indexscan on tenk2 might be done diff --git a/src/test/regress/sql/stats.sql b/src/test/regress/sql/stats.sql index 82e6f24c39..dbc2dd28b6 100644 --- a/src/test/regress/sql/stats.sql +++ b/src/test/regress/sql/stats.sql @@ -33,7 +33,10 @@ declare updated3 bool; updated4 bool; begin - -- we don't want to wait forever; loop will exit after 30 seconds + -- We don't want to wait forever. No timeout suffices if the OS drops our + -- stats traffic because an earlier test file left a full UDP buffer. + -- Hence, don't use PG_TEST_TIMEOUT_DEFAULT, which may be large for + -- can't-happen timeouts. Exit after 30 seconds. for i in 1 .. 300 loop -- With parallel query, the seqscan and indexscan on tenk2 might be done