diff options
author | Tommaso Tocci <tommaso.tocci@mongodb.com> | 2021-06-11 13:26:59 +0200 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2021-06-11 14:10:33 +0000 |
commit | a93e160436297f2a853b59e40eeb8c186b1879cf (patch) | |
tree | 50d878f474ddb082feaae4553a82671822a051b1 | |
parent | ba9ccb3c9ef2e5322daee08274f713df74524761 (diff) | |
download | mongo-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.js | 56 |
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({})); }()); |