summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTommaso Tocci <tommaso.tocci@mongodb.com>2021-06-11 13:26:59 +0200
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2021-06-11 14:10:33 +0000
commita93e160436297f2a853b59e40eeb8c186b1879cf (patch)
tree50d878f474ddb082feaae4553a82671822a051b1
parentba9ccb3c9ef2e5322daee08274f713df74524761 (diff)
downloadmongo-a93e160436297f2a853b59e40eeb8c186b1879cf.tar.gz
SERVER-57635 Handle stale config exception during txn in multi_delete_in_transactions.js
-rw-r--r--jstests/core/txns/multi_delete_in_transaction.js56
1 files changed, 28 insertions, 28 deletions
diff --git a/jstests/core/txns/multi_delete_in_transaction.js b/jstests/core/txns/multi_delete_in_transaction.js
index 7567a1b95df..36d94be6e2d 100644
--- a/jstests/core/txns/multi_delete_in_transaction.js
+++ b/jstests/core/txns/multi_delete_in_transaction.js
@@ -3,6 +3,8 @@
(function() {
"use strict";
+load('jstests/libs/auto_retry_transaction_in_sharding.js');
+
const dbName = "test";
const collName = "multi_delete_in_transaction";
const testDB = db.getSiblingDB(dbName);
@@ -23,39 +25,37 @@ jsTest.log("Prepopulate the collection.");
assert.commandWorked(testColl.insert([{_id: 0, a: 0}, {_id: 1, a: 0}, {_id: 2, a: 1}],
{writeConcern: {w: "majority"}}));
-jsTest.log("Do an empty multi-delete.");
-session.startTransaction({writeConcern: {w: "majority"}});
-
-// Remove no docs.
-let res = sessionColl.remove({a: 99}, {justOne: false});
-assert.eq(0, res.nRemoved);
-res = sessionColl.find({});
-assert.sameMembers(res.toArray(), [{_id: 0, a: 0}, {_id: 1, a: 0}, {_id: 2, a: 1}]);
+const txnOpts = {
+ writeConcern: {w: "majority"}
+};
-assert.commandWorked(session.commitTransaction_forTesting());
+jsTest.log("Do an empty multi-delete.");
+withTxnAndAutoRetryOnMongos(session, () => {
+ // Remove no docs.
+ let res = assert.commandWorked(sessionColl.remove({a: 99}, {justOne: false}));
+ assert.eq(0, res.nRemoved);
+ res = sessionColl.find({});
+ assert.sameMembers(res.toArray(), [{_id: 0, a: 0}, {_id: 1, a: 0}, {_id: 2, a: 1}]);
+}, txnOpts);
jsTest.log("Do a single-result multi-delete.");
-session.startTransaction({writeConcern: {w: "majority"}});
-
-// Remove one doc.
-res = sessionColl.remove({a: 1}, {justOne: false});
-assert.eq(1, res.nRemoved);
-res = sessionColl.find({});
-assert.sameMembers(res.toArray(), [{_id: 0, a: 0}, {_id: 1, a: 0}]);
-
-assert.commandWorked(session.commitTransaction_forTesting());
+withTxnAndAutoRetryOnMongos(session, () => {
+ // Remove one doc.
+ let res = assert.commandWorked(sessionColl.remove({a: 1}, {justOne: false}));
+ assert.eq(1, res.nRemoved);
+ res = sessionColl.find({});
+ assert.sameMembers(res.toArray(), [{_id: 0, a: 0}, {_id: 1, a: 0}]);
+}, txnOpts);
jsTest.log("Do a multiple-result multi-delete.");
-session.startTransaction({writeConcern: {w: "majority"}});
-
-// Remove 2 docs.
-res = sessionColl.remove({a: 0}, {justOne: false});
-assert.eq(2, res.nRemoved);
-res = sessionColl.find({});
-assert.sameMembers(res.toArray(), []);
-
-assert.commandWorked(session.commitTransaction_forTesting());
+withTxnAndAutoRetryOnMongos(session, () => {
+ // Remove 2 docs.
+ let res = assert.commandWorked(sessionColl.remove({a: 0}, {justOne: false}));
+ assert.eq(2, res.nRemoved);
+ res = sessionColl.find({});
+ assert.sameMembers(res.toArray(), []);
+}, txnOpts);
// Collection should be empty.
-assert.eq(0, testColl.find().itcount());
+assert.eq(0, testColl.countDocuments({}));
}());