Skip to content

Commit

Permalink
Remove unnecessary dependency on statement_timeout in prepared_xacts …
Browse files Browse the repository at this point in the history
…test.

Rather than waiting around for statement_timeout to expire, we can just
try to take the table's lock in nowait mode.  This saves some fraction
under 4 seconds when running this test with prepared xacts available,
and it guards against timeout-expired-anyway failures on very slow
machines when prepared xacts are not available, as seen in a recent
failure on axolotl for instance.

This approach could fail if autovacuum were to take an exclusive lock
on the test table concurrently, but there's no reason for it to do so.

Since the main point here is to improve stability in the buildfarm,
back-patch to all supported branches.
  • Loading branch information
tglsfdc committed Mar 13, 2017
1 parent d8c2074 commit f6396dc
Show file tree
Hide file tree
Showing 3 changed files with 8 additions and 22 deletions.
10 changes: 4 additions & 6 deletions src/test/regress/expected/prepared_xacts.out
Expand Up @@ -195,9 +195,8 @@ SELECT gid FROM pg_prepared_xacts;

-- pxtest3 should be locked because of the pending DROP
begin;
set statement_timeout to 2000;
SELECT * FROM pxtest3;
ERROR: canceling statement due to statement timeout
lock table pxtest3 in access share mode nowait;
ERROR: could not obtain lock on relation "pxtest3"
rollback;
-- Disconnect, we will continue testing in a different backend
\c -
Expand All @@ -211,9 +210,8 @@ SELECT gid FROM pg_prepared_xacts;

-- pxtest3 should still be locked because of the pending DROP
begin;
set statement_timeout to 2000;
SELECT * FROM pxtest3;
ERROR: canceling statement due to statement timeout
lock table pxtest3 in access share mode nowait;
ERROR: could not obtain lock on relation "pxtest3"
rollback;
-- Commit table creation
COMMIT PREPARED 'regress-one';
Expand Down
14 changes: 2 additions & 12 deletions src/test/regress/expected/prepared_xacts_1.out
Expand Up @@ -199,12 +199,7 @@ SELECT gid FROM pg_prepared_xacts;

-- pxtest3 should be locked because of the pending DROP
begin;
set statement_timeout to 2000;
SELECT * FROM pxtest3;
fff
-----
(0 rows)

lock table pxtest3 in access share mode nowait;
rollback;
-- Disconnect, we will continue testing in a different backend
\c -
Expand All @@ -216,12 +211,7 @@ SELECT gid FROM pg_prepared_xacts;

-- pxtest3 should still be locked because of the pending DROP
begin;
set statement_timeout to 2000;
SELECT * FROM pxtest3;
fff
-----
(0 rows)

lock table pxtest3 in access share mode nowait;
rollback;
-- Commit table creation
COMMIT PREPARED 'regress-one';
Expand Down
6 changes: 2 additions & 4 deletions src/test/regress/sql/prepared_xacts.sql
Expand Up @@ -123,8 +123,7 @@ SELECT gid FROM pg_prepared_xacts;

-- pxtest3 should be locked because of the pending DROP
begin;
set statement_timeout to 2000;
SELECT * FROM pxtest3;
lock table pxtest3 in access share mode nowait;
rollback;

-- Disconnect, we will continue testing in a different backend
Expand All @@ -135,8 +134,7 @@ SELECT gid FROM pg_prepared_xacts;

-- pxtest3 should still be locked because of the pending DROP
begin;
set statement_timeout to 2000;
SELECT * FROM pxtest3;
lock table pxtest3 in access share mode nowait;
rollback;

-- Commit table creation
Expand Down

0 comments on commit f6396dc

Please sign in to comment.