summaryrefslogtreecommitdiff
path: root/jstests/core
diff options
context:
space:
mode:
authorLouis Williams <louis.williams@mongodb.com>2022-02-01 11:22:23 +0000
committerEvergreen Agent <no-reply@evergreen.mongodb.com>2022-02-01 11:47:40 +0000
commit6d509615d2d6ef7af38e1b982b6272a54e9b591c (patch)
tree0705cc394a0632dd9ac1837160b8ef747815682a /jstests/core
parent0374b5211c22c67471bea8dffb0a28b68d1eec1a (diff)
downloadmongo-6d509615d2d6ef7af38e1b982b6272a54e9b591c.tar.gz
SERVER-62650 Limit cache wait time when initializing RecordIds
Diffstat (limited to 'jstests/core')
-rw-r--r--jstests/core/txns/commit_and_abort_large_unprepared_transactions.js27
1 files changed, 19 insertions, 8 deletions
diff --git a/jstests/core/txns/commit_and_abort_large_unprepared_transactions.js b/jstests/core/txns/commit_and_abort_large_unprepared_transactions.js
index feb09ef4656..aff44fe900d 100644
--- a/jstests/core/txns/commit_and_abort_large_unprepared_transactions.js
+++ b/jstests/core/txns/commit_and_abort_large_unprepared_transactions.js
@@ -27,14 +27,25 @@ const sessionDB = session.getDatabase(dbName);
const sessionColl = sessionDB.getCollection(collName);
// Test committing an unprepared large transaction with two 10MB inserts.
-let doc1 = createLargeDocument(1);
-let doc2 = createLargeDocument(2);
-session.startTransaction();
-assert.commandWorked(sessionColl.insert(doc1));
-assert.commandWorked(sessionColl.insert(doc2));
-
-assert.commandWorked(session.commitTransaction_forTesting());
-assert.sameMembers(sessionColl.find().toArray(), [doc1, doc2]);
+try {
+ let doc1 = createLargeDocument(1);
+ let doc2 = createLargeDocument(2);
+
+ session.startTransaction();
+ assert.commandWorked(sessionColl.insert(doc1));
+ assert.commandWorked(sessionColl.insert(doc2));
+ assert.commandWorked(session.commitTransaction_forTesting());
+ assert.sameMembers(sessionColl.find().toArray(), [doc1, doc2]);
+} catch (e) {
+ // It may be possible for this test to run in a passthrough where such a large transaction fills
+ // up the cache and cannot commit. The transaction will be rolled-back with a WriteConflict as a
+ // result.
+ if (e.code === ErrorCodes.WriteConflict && e.errmsg.startsWith("Cache full")) {
+ jsTestLog("Ignoring WriteConflict due to large transaction's size");
+ } else {
+ throw e;
+ }
+}
// Test aborting an unprepared large transaction with two 10MB inserts.
let doc3 = createLargeDocument(3);