1
0
mirror of https://github.com/postgres/postgres.git synced 2025-06-16 06:01:02 +03:00

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) SELECT pg_cancel_backend(pid)
FROM pg_stat_activity FROM pg_stat_activity
WHERE application_name = 'isolation/slot_creation_error/s2'; 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 pg_cancel_backend
----------------- -----------------
t t
(1 row) (1 row)
step s2_init: <... completed>
ERROR: canceling statement due to user request
step s1_view_slot: step s1_view_slot:
SELECT slot_name, slot_type, active FROM pg_replication_slots WHERE slot_name = 'slot_creation_error' 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) SELECT pg_terminate_backend(pid)
FROM pg_stat_activity FROM pg_stat_activity
WHERE application_name = 'isolation/slot_creation_error/s2'; WHERE application_name = 'isolation/slot_creation_error/s2';
<waiting ...>
pg_terminate_backend
--------------------
t
(1 row)
step s2_init: <... completed> step s2_init: <... completed>
FATAL: terminating connection due to administrator command FATAL: terminating connection due to administrator command
server closed the connection unexpectedly server closed the connection unexpectedly
This probably means the server terminated abnormally This probably means the server terminated abnormally
before or while processing the request. before or while processing the request.
step s1_terminate_s2: <... completed>
pg_terminate_backend
--------------------
t
(1 row)
step s1_c: COMMIT; step s1_c: COMMIT;
step s1_view_slot: step s1_view_slot:
SELECT slot_name, slot_type, active FROM pg_replication_slots WHERE slot_name = 'slot_creation_error' 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 # 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 # a slot in s2. The slot creation waits for s1's transaction to end. Instead
# we cancel / terminate s2. # 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_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 # can't run tests after this, due to s2's connection failure