summaryrefslogtreecommitdiff
path: root/jstests/core/txns/large_transactions_require_fcv42.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/core/txns/large_transactions_require_fcv42.js')
-rw-r--r--jstests/core/txns/large_transactions_require_fcv42.js113
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();
}());