Close race condition in slot_creation_error.spec.

Use the pattern from detach-partition-concurrently-3.spec.  Per
buildfarm member wrasse.

Reviewed by Kyotaro Horiguchi and Andres Freund.

Discussion: https://postgr.es/m/20220318072837.GC2739027@rfd.leadboat.com
This commit is contained in:
Noah Misch 2022-03-18 18:18:00 -07:00
parent 4a288a37f9
commit e186f56f9c
2 changed files with 13 additions and 11 deletions

View File

@ -23,14 +23,15 @@ step s1_cancel_s2:
SELECT pg_cancel_backend(pid)
FROM pg_stat_activity
WHERE application_name = 'isolation/slot_creation_error/s2';
<waiting ...>
step s2_init: <... completed>
ERROR: canceling statement due to user request
step s1_cancel_s2: <... completed>
pg_cancel_backend
-----------------
t
(1 row)
step s2_init: <... completed>
ERROR: canceling statement due to user request
step s1_view_slot:
SELECT slot_name, slot_type, active FROM pg_replication_slots WHERE slot_name = 'slot_creation_error'
@ -90,18 +91,19 @@ step s1_terminate_s2:
SELECT pg_terminate_backend(pid)
FROM pg_stat_activity
WHERE application_name = 'isolation/slot_creation_error/s2';
pg_terminate_backend
--------------------
t
(1 row)
<waiting ...>
step s2_init: <... completed>
FATAL: terminating connection due to administrator command
server closed the connection unexpectedly
This probably means the server terminated abnormally
before or while processing the request.
step s1_terminate_s2: <... completed>
pg_terminate_backend
--------------------
t
(1 row)
step s1_c: COMMIT;
step s1_view_slot:
SELECT slot_name, slot_type, active FROM pg_replication_slots WHERE slot_name = 'slot_creation_error'

View File

@ -35,7 +35,7 @@ step s2_init {
# The tests first start a transaction with an xid assigned in s1, then create
# a slot in s2. The slot creation waits for s1's transaction to end. Instead
# we cancel / terminate s2.
permutation s1_b s1_xid s2_init s1_view_slot s1_cancel_s2 s1_view_slot s1_c
permutation s1_b s1_xid s2_init s1_view_slot s1_cancel_s2(s2_init) s1_view_slot s1_c
permutation s1_b s1_xid s2_init s1_c s1_view_slot s1_drop_slot # check slot creation still works
permutation s1_b s1_xid s2_init s1_terminate_s2 s1_c s1_view_slot
permutation s1_b s1_xid s2_init s1_terminate_s2(s2_init) s1_c s1_view_slot
# can't run tests after this, due to s2's connection failure