diff options
Diffstat (limited to 'jstests/core/txns/large_transactions_require_fcv42.js')
-rw-r--r-- | jstests/core/txns/large_transactions_require_fcv42.js | 113 |
1 files changed, 57 insertions, 56 deletions
diff --git a/jstests/core/txns/large_transactions_require_fcv42.js b/jstests/core/txns/large_transactions_require_fcv42.js index ce24c8c0c39..cbfa89f6e73 100644 --- a/jstests/core/txns/large_transactions_require_fcv42.js +++ b/jstests/core/txns/large_transactions_require_fcv42.js @@ -4,72 +4,73 @@ * @tags: [uses_transactions] */ (function() { - "uses strict"; - load("jstests/libs/feature_compatibility_version.js"); - load("jstests/core/txns/libs/prepare_helpers.js"); +"uses strict"; +load("jstests/libs/feature_compatibility_version.js"); +load("jstests/core/txns/libs/prepare_helpers.js"); - const dbName = "test"; - const collName = "large_transactions_require_fcv42"; - const testDB = db.getSiblingDB(dbName); - const adminDB = db.getSiblingDB('admin'); +const dbName = "test"; +const collName = "large_transactions_require_fcv42"; +const testDB = db.getSiblingDB(dbName); +const adminDB = db.getSiblingDB('admin'); - testDB[collName].drop({writeConcern: {w: "majority"}}); - assert.commandWorked(testDB.runCommand({create: collName, writeConcern: {w: "majority"}})); +testDB[collName].drop({writeConcern: {w: "majority"}}); +assert.commandWorked(testDB.runCommand({create: collName, writeConcern: {w: "majority"}})); - const sessionOptions = {causalConsistency: false}; - const session = testDB.getMongo().startSession(sessionOptions); - const sessionDB = session.getDatabase(dbName); - const sessionColl = sessionDB.getCollection(collName); +const sessionOptions = { + causalConsistency: false +}; +const session = testDB.getMongo().startSession(sessionOptions); +const sessionDB = session.getDatabase(dbName); +const sessionColl = sessionDB.getCollection(collName); - // As we are not able to send a single request larger than 16MB, we insert two documents - // of 10MB each to create a "large" transaction. - const kSize10MB = 10 * 1024 * 1024; - function createLargeDocument(id) { - return {_id: id, longString: "a".repeat(kSize10MB)}; - } +// As we are not able to send a single request larger than 16MB, we insert two documents +// of 10MB each to create a "large" transaction. +const kSize10MB = 10 * 1024 * 1024; +function createLargeDocument(id) { + return {_id: id, longString: "a".repeat(kSize10MB)}; +} - try { - jsTestLog("Test that creating a transaction larger than 16MB succeeds in FCV 4.2."); - let doc1 = createLargeDocument(1); - let doc2 = createLargeDocument(2); +try { + jsTestLog("Test that creating a transaction larger than 16MB succeeds in FCV 4.2."); + let doc1 = createLargeDocument(1); + let doc2 = createLargeDocument(2); - checkFCV(adminDB, latestFCV); - session.startTransaction(); - assert.commandWorked(sessionColl.insert(doc1)); - assert.commandWorked(sessionColl.insert(doc2)); - assert.commandWorked(session.commitTransaction_forTesting()); + checkFCV(adminDB, latestFCV); + session.startTransaction(); + assert.commandWorked(sessionColl.insert(doc1)); + assert.commandWorked(sessionColl.insert(doc2)); + assert.commandWorked(session.commitTransaction_forTesting()); - jsTestLog("Downgrade the featureCompatibilityVersion."); - assert.commandWorked(testDB.adminCommand({setFeatureCompatibilityVersion: lastStableFCV})); - checkFCV(adminDB, lastStableFCV); + jsTestLog("Downgrade the featureCompatibilityVersion."); + assert.commandWorked(testDB.adminCommand({setFeatureCompatibilityVersion: lastStableFCV})); + checkFCV(adminDB, lastStableFCV); - jsTestLog("Test that trying to create a transaction larger than 16MB fails in FCV 4.0."); - let doc3 = createLargeDocument(3); - let doc4 = createLargeDocument(4); + jsTestLog("Test that trying to create a transaction larger than 16MB fails in FCV 4.0."); + let doc3 = createLargeDocument(3); + let doc4 = createLargeDocument(4); - session.startTransaction(); - assert.commandWorked(sessionColl.insert(doc3)); - assert.commandFailedWithCode(sessionColl.insert(doc4), ErrorCodes.TransactionTooLarge); - // We have to call 'abortTransaction' here to clear the transaction state in the shell. - // Otherwise, the later call to 'startTransaction' will fail with 'Transaction already in - // progress'. - assert.commandFailedWithCode(session.abortTransaction_forTesting(), - ErrorCodes.NoSuchTransaction); - } finally { - jsTestLog("Restore to FCV 4.2."); - assert.commandWorked(testDB.adminCommand({setFeatureCompatibilityVersion: latestFCV})); - checkFCV(adminDB, latestFCV); - } + session.startTransaction(); + assert.commandWorked(sessionColl.insert(doc3)); + assert.commandFailedWithCode(sessionColl.insert(doc4), ErrorCodes.TransactionTooLarge); + // We have to call 'abortTransaction' here to clear the transaction state in the shell. + // Otherwise, the later call to 'startTransaction' will fail with 'Transaction already in + // progress'. + assert.commandFailedWithCode(session.abortTransaction_forTesting(), + ErrorCodes.NoSuchTransaction); +} finally { + jsTestLog("Restore to FCV 4.2."); + assert.commandWorked(testDB.adminCommand({setFeatureCompatibilityVersion: latestFCV})); + checkFCV(adminDB, latestFCV); +} - jsTestLog( - "Test that creating a transaction larger than 16MB succeeds after upgrading to FCV 4.2."); - let doc5 = createLargeDocument(5); - let doc6 = createLargeDocument(6); +jsTestLog("Test that creating a transaction larger than 16MB succeeds after upgrading to FCV 4.2."); +let doc5 = createLargeDocument(5); +let doc6 = createLargeDocument(6); - session.startTransaction(); - assert.commandWorked(sessionColl.insert(doc5)); - assert.commandWorked(sessionColl.insert(doc6)); - assert.commandWorked(session.commitTransaction_forTesting()); +session.startTransaction(); +assert.commandWorked(sessionColl.insert(doc5)); +assert.commandWorked(sessionColl.insert(doc6)); +assert.commandWorked(session.commitTransaction_forTesting()); - session.endSession(); +session.endSession(); }()); |