From a93e160436297f2a853b59e40eeb8c186b1879cf Mon Sep 17 00:00:00 2001 From: Tommaso Tocci Date: Fri, 11 Jun 2021 13:26:59 +0200 Subject: SERVER-57635 Handle stale config exception during txn in multi_delete_in_transactions.js --- jstests/core/txns/multi_delete_in_transaction.js | 56 ++++++++++++------------ 1 file 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({})); }()); -- cgit v1.2.1