diff options
author | Matthew Russotto <matthew.russotto@10gen.com> | 2019-05-06 14:50:06 -0400 |
---|---|---|
committer | Matthew Russotto <matthew.russotto@10gen.com> | 2019-05-07 15:35:36 -0400 |
commit | ba844b4e81c3914b8a7017bd2a8c5ac4231c72ff (patch) | |
tree | 7e7ec663478cf7f0dda79a12ec8dd940e95e9e15 /jstests/concurrency | |
parent | c1a481a79d5667b19053d0ad4ea177c8d56bd254 (diff) | |
download | mongo-ba844b4e81c3914b8a7017bd2a8c5ac4231c72ff.tar.gz |
SERVER-40996 abortTransaction in cleanup_txns.js does not handle different errors from different shards
Diffstat (limited to 'jstests/concurrency')
-rw-r--r-- | jstests/concurrency/fsm_workload_helpers/cleanup_txns.js | 15 |
1 files changed, 13 insertions, 2 deletions
diff --git a/jstests/concurrency/fsm_workload_helpers/cleanup_txns.js b/jstests/concurrency/fsm_workload_helpers/cleanup_txns.js index 9fb5a3f9a8d..34a9bc0dab7 100644 --- a/jstests/concurrency/fsm_workload_helpers/cleanup_txns.js +++ b/jstests/concurrency/fsm_workload_helpers/cleanup_txns.js @@ -26,8 +26,19 @@ function abortTransaction(sessionAwareDB, txnNumber) { autocommit: false }; const res = rawDB.adminCommand(abortCmd); - return assert.commandWorkedOrFailedWithCode( - res, abortErrorCodes, () => `cmd: ${tojson(abortCmd)}`); + if (res.hasOwnProperty("raw")) { + // For sharded commands, we may get mismatched errors in which case there will be + // no top-level code. Instead, check each code from the shards. + for (let shardname in res.raw) { + let shardres = res.raw[shardname]; + assert.commandWorkedOrFailedWithCode( + shardres, abortErrorCodes, () => `cmd: ${tojson(abortCmd)}`); + } + return res; + } else { + return assert.commandWorkedOrFailedWithCode( + res, abortErrorCodes, () => `cmd: ${tojson(abortCmd)}`); + } } /** |