From fe798cf0f99d98962c6cfd28332bfa06febb2f74 Mon Sep 17 00:00:00 2001 From: Marco Slot Date: Mon, 20 Nov 2017 11:51:50 +0100 Subject: [PATCH] Add recovery vs. recovery isolation test --- .../isolation_distributed_transaction_id.out | 4 ++-- .../isolation_dump_global_wait_edges.out | 18 +++++++------- .../isolation_replace_wait_function.out | 2 +- .../isolation_transaction_recovery.out | 24 +++++++++++++++++++ .../specs/isolation_transaction_recovery.spec | 8 +++++++ 5 files changed, 44 insertions(+), 12 deletions(-) diff --git a/src/test/regress/expected/isolation_distributed_transaction_id.out b/src/test/regress/expected/isolation_distributed_transaction_id.out index e9dc48dc5..7188d948f 100644 --- a/src/test/regress/expected/isolation_distributed_transaction_id.out +++ b/src/test/regress/expected/isolation_distributed_transaction_id.out @@ -98,7 +98,7 @@ step s1-get-current-transaction-id: row -(0,287) +(0,289) step s2-get-first-worker-active-transactions: SELECT * FROM run_command_on_workers('SELECT row(initiator_node_identifier, transaction_number) FROM @@ -109,4 +109,4 @@ step s2-get-first-worker-active-transactions: nodename nodeport success result -localhost 57637 t (0,287) +localhost 57637 t (0,289) diff --git a/src/test/regress/expected/isolation_dump_global_wait_edges.out b/src/test/regress/expected/isolation_dump_global_wait_edges.out index 16de25852..cd4a3193c 100644 --- a/src/test/regress/expected/isolation_dump_global_wait_edges.out +++ b/src/test/regress/expected/isolation_dump_global_wait_edges.out @@ -29,11 +29,11 @@ step detector-dump-wait-edges: waiting_transaction_numblocking_transaction_numblocking_transaction_waiting -290 289 f +292 291 f transactionnumberwaitingtransactionnumbers -289 -290 289 +291 +292 291 step s1-abort: ABORT; @@ -77,14 +77,14 @@ step detector-dump-wait-edges: waiting_transaction_numblocking_transaction_numblocking_transaction_waiting -294 293 f -295 293 f -295 294 t +296 295 f +297 295 f +297 296 t transactionnumberwaitingtransactionnumbers -293 -294 293 -295 293,294 +295 +296 295 +297 295,296 step s1-abort: ABORT; diff --git a/src/test/regress/expected/isolation_replace_wait_function.out b/src/test/regress/expected/isolation_replace_wait_function.out index b51e6ac4d..784b25224 100644 --- a/src/test/regress/expected/isolation_replace_wait_function.out +++ b/src/test/regress/expected/isolation_replace_wait_function.out @@ -16,7 +16,7 @@ step s1-finish: COMMIT; step s2-insert: <... completed> -error in steps s1-finish s2-insert: ERROR: duplicate key value violates unique constraint "test_locking_a_key_102320" +error in steps s1-finish s2-insert: ERROR: duplicate key value violates unique constraint "test_locking_a_key_102321" step s2-finish: COMMIT; diff --git a/src/test/regress/expected/isolation_transaction_recovery.out b/src/test/regress/expected/isolation_transaction_recovery.out index 5d3a12121..411a75feb 100644 --- a/src/test/regress/expected/isolation_transaction_recovery.out +++ b/src/test/regress/expected/isolation_transaction_recovery.out @@ -19,3 +19,27 @@ step s2-insert: step s1-commit: COMMIT; + +starting permutation: s1-begin s1-recover s2-recover s1-commit +create_reference_table + + +step s1-begin: + BEGIN; + +step s1-recover: + SELECT recover_prepared_transactions(); + +recover_prepared_transactions + +0 +step s2-recover: + SELECT recover_prepared_transactions(); + +step s1-commit: + COMMIT; + +step s2-recover: <... completed> +recover_prepared_transactions + +0 diff --git a/src/test/regress/specs/isolation_transaction_recovery.spec b/src/test/regress/specs/isolation_transaction_recovery.spec index 019f1931d..5c1ee7557 100644 --- a/src/test/regress/specs/isolation_transaction_recovery.spec +++ b/src/test/regress/specs/isolation_transaction_recovery.spec @@ -33,5 +33,13 @@ step "s2-insert" INSERT INTO test_transaction_recovery VALUES (1,2); } +step "s2-recover" +{ + SELECT recover_prepared_transactions(); +} + # Recovery and 2PCs should not block each other permutation "s1-begin" "s1-recover" "s2-insert" "s1-commit" + +# Recovery should not run concurrently +permutation "s1-begin" "s1-recover" "s2-recover" "s1-commit"