Remove isolation test reindex-partitions

The isolation test added by a6642b3 is proving to be unstable, as once
the first transaction holding a lock on the top-most partitioned table
or on a partition commits, the commit order of the follow-up DROP TABLE
and REINDEX could become reversed depending on the timing.

The only part of the test that could be entirely reliable is the one
using a SHARE lock, allowing REINDEX to commit first, but it is the
least interesting of the set.

Per buildfarm members rorqual and mylodon.

Discussion: https://postgr.es/m/E1kFSBj-00062c-Mu@gemulon.postgresql.org
This commit is contained in:
Michael Paquier 2020-09-08 11:15:21 +09:00
parent a6642b3ae0
commit 6785974287
3 changed files with 0 additions and 167 deletions

View File

@ -1,107 +0,0 @@
Parsed test spec with 3 sessions
starting permutation: begin1 lockexcl1 reindex2 drop3 end1
step begin1: BEGIN;
step lockexcl1: LOCK reind_conc_parent IN ACCESS EXCLUSIVE MODE;
step reindex2: REINDEX TABLE reind_conc_parent; <waiting ...>
step drop3: DROP TABLE reind_conc_10_20; <waiting ...>
step end1: COMMIT;
step reindex2: <... completed>
step drop3: <... completed>
starting permutation: begin1 lockexcl1 reindex_conc2 drop3 end1
step begin1: BEGIN;
step lockexcl1: LOCK reind_conc_parent IN ACCESS EXCLUSIVE MODE;
step reindex_conc2: REINDEX TABLE CONCURRENTLY reind_conc_parent; <waiting ...>
step drop3: DROP TABLE reind_conc_10_20; <waiting ...>
step end1: COMMIT;
step reindex_conc2: <... completed>
step drop3: <... completed>
starting permutation: begin1 lockshare1 reindex2 drop3 end1
step begin1: BEGIN;
step lockshare1: LOCK reind_conc_parent IN SHARE MODE;
step reindex2: REINDEX TABLE reind_conc_parent;
step drop3: DROP TABLE reind_conc_10_20; <waiting ...>
step end1: COMMIT;
step drop3: <... completed>
starting permutation: begin1 lockshare1 reindex_conc2 drop3 end1
step begin1: BEGIN;
step lockshare1: LOCK reind_conc_parent IN SHARE MODE;
step reindex_conc2: REINDEX TABLE CONCURRENTLY reind_conc_parent; <waiting ...>
step drop3: DROP TABLE reind_conc_10_20; <waiting ...>
step end1: COMMIT;
step reindex_conc2: <... completed>
step drop3: <... completed>
starting permutation: begin1 lockupdate1 reindex2 drop3 end1
step begin1: BEGIN;
step lockupdate1: LOCK reind_conc_parent IN SHARE UPDATE EXCLUSIVE MODE;
step reindex2: REINDEX TABLE reind_conc_parent; <waiting ...>
step drop3: DROP TABLE reind_conc_10_20; <waiting ...>
step end1: COMMIT;
step reindex2: <... completed>
step drop3: <... completed>
starting permutation: begin1 lockupdate1 reindex_conc2 drop3 end1
step begin1: BEGIN;
step lockupdate1: LOCK reind_conc_parent IN SHARE UPDATE EXCLUSIVE MODE;
step reindex_conc2: REINDEX TABLE CONCURRENTLY reind_conc_parent; <waiting ...>
step drop3: DROP TABLE reind_conc_10_20; <waiting ...>
step end1: COMMIT;
step reindex_conc2: <... completed>
step drop3: <... completed>
starting permutation: begin1 lockpartexcl1 reindex2 drop3 end1
step begin1: BEGIN;
step lockpartexcl1: LOCK reind_conc_10_20 IN ACCESS EXCLUSIVE MODE;
step reindex2: REINDEX TABLE reind_conc_parent; <waiting ...>
step drop3: DROP TABLE reind_conc_10_20; <waiting ...>
step end1: COMMIT;
step reindex2: <... completed>
step drop3: <... completed>
starting permutation: begin1 lockpartexcl1 reindex_conc2 drop3 end1
step begin1: BEGIN;
step lockpartexcl1: LOCK reind_conc_10_20 IN ACCESS EXCLUSIVE MODE;
step reindex_conc2: REINDEX TABLE CONCURRENTLY reind_conc_parent; <waiting ...>
step drop3: DROP TABLE reind_conc_10_20; <waiting ...>
step end1: COMMIT;
step reindex_conc2: <... completed>
step drop3: <... completed>
starting permutation: begin1 lockpartshare1 reindex2 drop3 end1
step begin1: BEGIN;
step lockpartshare1: LOCK reind_conc_10_20 IN SHARE MODE;
step reindex2: REINDEX TABLE reind_conc_parent;
step drop3: DROP TABLE reind_conc_10_20; <waiting ...>
step end1: COMMIT;
step drop3: <... completed>
starting permutation: begin1 lockpartshare1 reindex_conc2 drop3 end1
step begin1: BEGIN;
step lockpartshare1: LOCK reind_conc_10_20 IN SHARE MODE;
step reindex_conc2: REINDEX TABLE CONCURRENTLY reind_conc_parent; <waiting ...>
step drop3: DROP TABLE reind_conc_10_20; <waiting ...>
step end1: COMMIT;
step reindex_conc2: <... completed>
step drop3: <... completed>
starting permutation: begin1 lockpartupdate1 reindex2 drop3 end1
step begin1: BEGIN;
step lockpartupdate1: LOCK reind_conc_10_20 IN SHARE UPDATE EXCLUSIVE MODE;
step reindex2: REINDEX TABLE reind_conc_parent; <waiting ...>
step drop3: DROP TABLE reind_conc_10_20; <waiting ...>
step end1: COMMIT;
step reindex2: <... completed>
step drop3: <... completed>
starting permutation: begin1 lockpartupdate1 reindex_conc2 drop3 end1
step begin1: BEGIN;
step lockpartupdate1: LOCK reind_conc_10_20 IN SHARE UPDATE EXCLUSIVE MODE;
step reindex_conc2: REINDEX TABLE CONCURRENTLY reind_conc_parent; <waiting ...>
step drop3: DROP TABLE reind_conc_10_20; <waiting ...>
step end1: COMMIT;
step reindex_conc2: <... completed>
step drop3: <... completed>

View File

@ -50,7 +50,6 @@ test: lock-committed-keyupdate
test: update-locked-tuple
test: reindex-concurrently
test: reindex-schema
test: reindex-partitions
test: propagate-lock-delete
test: tuplelock-conflict
test: tuplelock-update

View File

@ -1,59 +0,0 @@
# REINDEX with partitioned tables
#
# Ensure that concurrent and non-concurrent operations work correctly when
# a REINDEX is performed on a partitioned table or index.
# In the cases dealt with here, partition leaves are dropped in parallel of
# a REINDEX. DROP TABLE gets blocked by the first transaction of REINDEX
# building the list of partitions, so it will finish executing once REINDEX
# is done.
setup
{
CREATE TABLE reind_conc_parent (id int) PARTITION BY RANGE (id);
CREATE TABLE reind_conc_0_10 PARTITION OF reind_conc_parent
FOR VALUES FROM (0) TO (10);
CREATE TABLE reind_conc_10_20 PARTITION OF reind_conc_parent
FOR VALUES FROM (10) TO (20);
INSERT INTO reind_conc_parent VALUES (generate_series(0, 19));
}
teardown
{
DROP TABLE reind_conc_parent;
}
session "s1"
step "begin1" { BEGIN; }
step "lockexcl1" { LOCK reind_conc_parent IN ACCESS EXCLUSIVE MODE; }
step "lockshare1" { LOCK reind_conc_parent IN SHARE MODE; }
step "lockupdate1" { LOCK reind_conc_parent IN SHARE UPDATE EXCLUSIVE MODE; }
step "lockpartexcl1" { LOCK reind_conc_10_20 IN ACCESS EXCLUSIVE MODE; }
step "lockpartshare1" { LOCK reind_conc_10_20 IN SHARE MODE; }
step "lockpartupdate1" { LOCK reind_conc_10_20 IN SHARE UPDATE EXCLUSIVE MODE; }
step "end1" { COMMIT; }
session "s2"
step "reindex2" { REINDEX TABLE reind_conc_parent; }
step "reindex_conc2" { REINDEX TABLE CONCURRENTLY reind_conc_parent; }
session "s3"
step "drop3" { DROP TABLE reind_conc_10_20; }
# An existing partition leaf is dropped after reindex is done when the
# parent is locked.
permutation "begin1" "lockexcl1" "reindex2" "drop3" "end1"
permutation "begin1" "lockexcl1" "reindex_conc2" "drop3" "end1"
permutation "begin1" "lockshare1" "reindex2" "drop3" "end1"
permutation "begin1" "lockshare1" "reindex_conc2" "drop3" "end1"
permutation "begin1" "lockupdate1" "reindex2" "drop3" "end1"
permutation "begin1" "lockupdate1" "reindex_conc2" "drop3" "end1"
# An existing partition leaf is dropped after reindex is done when this
# leaf is locked.
permutation "begin1" "lockpartexcl1" "reindex2" "drop3" "end1"
permutation "begin1" "lockpartexcl1" "reindex_conc2" "drop3" "end1"
permutation "begin1" "lockpartshare1" "reindex2" "drop3" "end1"
permutation "begin1" "lockpartshare1" "reindex_conc2" "drop3" "end1"
permutation "begin1" "lockpartupdate1" "reindex2" "drop3" "end1"
permutation "begin1" "lockpartupdate1" "reindex_conc2" "drop3" "end1"