diff options
author | Louis Williams <louis.williams@mongodb.com> | 2022-02-01 11:22:23 +0000 |
---|---|---|
committer | Evergreen Agent <no-reply@evergreen.mongodb.com> | 2022-02-01 11:47:40 +0000 |
commit | 6d509615d2d6ef7af38e1b982b6272a54e9b591c (patch) | |
tree | 0705cc394a0632dd9ac1837160b8ef747815682a /jstests/core | |
parent | 0374b5211c22c67471bea8dffb0a28b68d1eec1a (diff) | |
download | mongo-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.js | 27 |
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); |