Make GIN tests using injection points concurrent-safe
f587338dec
has introduced in the test module injection_points a SQL function called injection_points_set_local(), that can be used to make all the injection points linked to the process where they are attached, discarded automatically if any remain once the process exits.e2e3b8ae9e
has added a NO_INSTALLCHECK to the test module to prevent the use of installcheck. Now that there is a way to make the test concurrent-safe, let's use it and remove the installcheck restriction. Concurrency issues could be easily reproduced by running in a tight loop a command like this one, in src/test/modules/gin/ (hardcoding pg_sleep() after attaching injection points enlarges the race window) and a second test suite like contrib/btree_gin/: make installcheck USE_MODULE_DB=1 Reviewed-by: Andrey Borodin Discussion: https://postgr.es/m/ZhNG4Io9uYOgwv3F@paquier.xyz
This commit is contained in:
parent
7e85d1c75f
commit
5105c90796
|
@ -4,9 +4,6 @@ EXTRA_INSTALL = src/test/modules/injection_points
|
|||
|
||||
REGRESS = gin_incomplete_splits
|
||||
|
||||
# The injection points are cluster-wide, so disable installcheck
|
||||
NO_INSTALLCHECK = 1
|
||||
|
||||
ifdef USE_PGXS
|
||||
PG_CONFIG = pg_config
|
||||
PGXS := $(shell $(PG_CONFIG) --pgxs)
|
||||
|
|
|
@ -12,6 +12,13 @@
|
|||
-- This uses injection points to cause errors that leave some page
|
||||
-- splits in "incomplete" state
|
||||
create extension injection_points;
|
||||
-- Make all injection points local to this process, for concurrency.
|
||||
SELECT injection_points_set_local();
|
||||
injection_points_set_local
|
||||
----------------------------
|
||||
|
||||
(1 row)
|
||||
|
||||
-- Use the index for all the queries
|
||||
set enable_seqscan=off;
|
||||
-- Print a NOTICE whenever an incomplete split gets fixed
|
||||
|
|
|
@ -12,7 +12,5 @@ tests += {
|
|||
'sql': [
|
||||
'gin_incomplete_splits',
|
||||
],
|
||||
# The injection points are cluster-wide, so disable installcheck
|
||||
'runningcheck': false,
|
||||
},
|
||||
}
|
||||
|
|
|
@ -14,6 +14,9 @@
|
|||
-- splits in "incomplete" state
|
||||
create extension injection_points;
|
||||
|
||||
-- Make all injection points local to this process, for concurrency.
|
||||
SELECT injection_points_set_local();
|
||||
|
||||
-- Use the index for all the queries
|
||||
set enable_seqscan=off;
|
||||
|
||||
|
|
Loading…
Reference in New Issue