diff options
author | jannaerin <golden.janna@gmail.com> | 2018-10-08 13:15:30 -0400 |
---|---|---|
committer | jannaerin <golden.janna@gmail.com> | 2018-10-09 16:51:46 -0400 |
commit | f862975d40d5cb8d848892dfa6990994ae586e4b (patch) | |
tree | 6c555da0f16a05c40ece3a50e19211bd89167b98 /jstests | |
parent | 627d6027b15b2355cb9621dd28cce4b7024fbf9c (diff) | |
download | mongo-f862975d40d5cb8d848892dfa6990994ae586e4b.tar.gz |
SERVER-37374 cleanupOnLastIteration should tolerate an interruption
Diffstat (limited to 'jstests')
3 files changed, 14 insertions, 9 deletions
diff --git a/jstests/concurrency/fsm_workload_helpers/cleanup_txns.js b/jstests/concurrency/fsm_workload_helpers/cleanup_txns.js index 098907f2cb3..733724dfbfe 100644 --- a/jstests/concurrency/fsm_workload_helpers/cleanup_txns.js +++ b/jstests/concurrency/fsm_workload_helpers/cleanup_txns.js @@ -15,13 +15,7 @@ function abortTransaction(db, txnNumber, errorCodes) { * This function operates on the last iteration of each thread to abort any active transactions. */ var {cleanupOnLastIteration} = (function() { - function cleanupOnLastIteration(data, func) { - const abortErrorCodes = [ - ErrorCodes.NoSuchTransaction, - ErrorCodes.TransactionCommitted, - ErrorCodes.TransactionTooOld - ]; - + function cleanupOnLastIteration(data, func, abortErrorCodes) { let lastIteration = ++data.iteration >= data.iterations; try { func(); diff --git a/jstests/concurrency/fsm_workloads/multi_statement_transaction_all_commands.js b/jstests/concurrency/fsm_workloads/multi_statement_transaction_all_commands.js index 44aa8d81dbd..911403c6be2 100644 --- a/jstests/concurrency/fsm_workloads/multi_statement_transaction_all_commands.js +++ b/jstests/concurrency/fsm_workloads/multi_statement_transaction_all_commands.js @@ -155,8 +155,13 @@ var $config = (function() { // Wrap each state in a cleanupOnLastIteration() invocation. for (let stateName of Object.keys(states)) { const stateFn = states[stateName]; + const abortErrorCodes = [ + ErrorCodes.NoSuchTransaction, + ErrorCodes.TransactionCommitted, + ErrorCodes.TransactionTooOld + ]; states[stateName] = function(db, collName) { - cleanupOnLastIteration(this, () => stateFn.apply(this, arguments)); + cleanupOnLastIteration(this, () => stateFn.apply(this, arguments), abortErrorCodes); }; } diff --git a/jstests/concurrency/fsm_workloads/snapshot_read_kill_operations.js b/jstests/concurrency/fsm_workloads/snapshot_read_kill_operations.js index 34b28f15d63..de2ca10cd31 100644 --- a/jstests/concurrency/fsm_workloads/snapshot_read_kill_operations.js +++ b/jstests/concurrency/fsm_workloads/snapshot_read_kill_operations.js @@ -95,8 +95,14 @@ var $config = (function() { // Wrap each state in a cleanupOnLastIteration() invocation. for (let stateName of Object.keys(states)) { const stateFn = states[stateName]; + const abortErrorCodes = [ + ErrorCodes.NoSuchTransaction, + ErrorCodes.TransactionCommitted, + ErrorCodes.TransactionTooOld, + ErrorCodes.Interrupted + ]; states[stateName] = function(db, collName) { - cleanupOnLastIteration(this, () => stateFn.apply(this, arguments)); + cleanupOnLastIteration(this, () => stateFn.apply(this, arguments), abortErrorCodes); }; } |