mirror of
https://github.com/postgres/postgres.git
synced 2025-04-22 23:02:54 +03:00
Fix rare deadlock failure in create_am regression test.
The "DROP ACCESS METHOD gist2" test will require locking the index to be dropped and then its table; while most ordinary operations lock a table first then its index. While no concurrent test scripts should be touching fast_emp4000, autovacuum might chance to be processing that table when the DROP runs, resulting in a deadlock failure. This is pretty rare but we see it in the buildfarm from time to time. To fix, acquire a lock on fast_emp4000 before issuing the DROP. Since the point of the exercise is mostly to prevent buildfarm failures, back-patch to 9.6 where this test was introduced. Discussion: https://postgr.es/m/839004.1599185607@sss.pgh.pa.us
This commit is contained in:
parent
49d7165117
commit
d54f99e415
@ -102,8 +102,13 @@ ERROR: cannot drop access method gist2 because other objects depend on it
|
||||
DETAIL: index grect2ind2 depends on operator class box_ops for access method gist2
|
||||
HINT: Use DROP ... CASCADE to drop the dependent objects too.
|
||||
-- Drop access method cascade
|
||||
-- To prevent a (rare) deadlock against autovacuum,
|
||||
-- we must lock the table that owns the index that will be dropped
|
||||
BEGIN;
|
||||
LOCK TABLE fast_emp4000;
|
||||
DROP ACCESS METHOD gist2 CASCADE;
|
||||
NOTICE: drop cascades to index grect2ind2
|
||||
COMMIT;
|
||||
--
|
||||
-- Test table access methods
|
||||
--
|
||||
|
@ -70,7 +70,12 @@ ROLLBACK;
|
||||
DROP ACCESS METHOD gist2;
|
||||
|
||||
-- Drop access method cascade
|
||||
-- To prevent a (rare) deadlock against autovacuum,
|
||||
-- we must lock the table that owns the index that will be dropped
|
||||
BEGIN;
|
||||
LOCK TABLE fast_emp4000;
|
||||
DROP ACCESS METHOD gist2 CASCADE;
|
||||
COMMIT;
|
||||
|
||||
|
||||
--
|
||||
|
Loading…
x
Reference in New Issue
Block a user