summaryrefslogtreecommitdiff
path: root/jstests/concurrency
diff options
context:
space:
mode:
authorMatthew Russotto <matthew.russotto@10gen.com>2019-05-06 14:50:06 -0400
committerMatthew Russotto <matthew.russotto@10gen.com>2019-05-07 15:35:36 -0400
commitba844b4e81c3914b8a7017bd2a8c5ac4231c72ff (patch)
tree7e7ec663478cf7f0dda79a12ec8dd940e95e9e15 /jstests/concurrency
parentc1a481a79d5667b19053d0ad4ea177c8d56bd254 (diff)
downloadmongo-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.js15
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)}`);
+ }
}
/**