summaryrefslogtreecommitdiff
path: root/jstests/core/txns/downgrade_fcv_while_large_partial_txn_in_progress.js
diff options
context:
space:
mode:
Diffstat (limited to 'jstests/core/txns/downgrade_fcv_while_large_partial_txn_in_progress.js')
-rw-r--r--jstests/core/txns/downgrade_fcv_while_large_partial_txn_in_progress.js103
1 files changed, 50 insertions, 53 deletions
diff --git a/jstests/core/txns/downgrade_fcv_while_large_partial_txn_in_progress.js b/jstests/core/txns/downgrade_fcv_while_large_partial_txn_in_progress.js
index a53457fc6e5..3bbd380770e 100644
--- a/jstests/core/txns/downgrade_fcv_while_large_partial_txn_in_progress.js
+++ b/jstests/core/txns/downgrade_fcv_while_large_partial_txn_in_progress.js
@@ -7,69 +7,66 @@
*/
(function() {
- "use strict";
+"use strict";
- const dbName = "test";
- const collName = "downgrade_fcv_while_large_partial_txn_in_progress";
- const testDB = db.getSiblingDB(dbName);
+const dbName = "test";
+const collName = "downgrade_fcv_while_large_partial_txn_in_progress";
+const testDB = db.getSiblingDB(dbName);
- assert.commandWorked(db.adminCommand({
- configureFailPoint: "hangBeforeAbortingRunningTransactionsOnFCVDowngrade",
- mode: "alwaysOn"
- }));
+assert.commandWorked(db.adminCommand(
+ {configureFailPoint: "hangBeforeAbortingRunningTransactionsOnFCVDowngrade", mode: "alwaysOn"}));
- // 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: new Array(kSize10MB).join("a")};
- }
+// 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: new Array(kSize10MB).join("a")};
+}
- testDB[collName].drop({writeConcern: {w: "majority"}});
- assert.commandWorked(testDB.createCollection(collName, {writeConcern: {w: "majority"}}));
+testDB[collName].drop({writeConcern: {w: "majority"}});
+assert.commandWorked(testDB.createCollection(collName, {writeConcern: {w: "majority"}}));
- const session = db.getMongo().startSession({causalConsistency: false});
- const sessionDB = session.getDatabase(dbName);
- const sessionColl = sessionDB.getCollection(collName);
+const session = db.getMongo().startSession({causalConsistency: false});
+const sessionDB = session.getDatabase(dbName);
+const sessionColl = sessionDB.getCollection(collName);
- let doc1 = createLargeDocument(1);
- let doc2 = createLargeDocument(2);
+let doc1 = createLargeDocument(1);
+let doc2 = createLargeDocument(2);
- jsTestLog("Start a transaction and insert documents with sizes that add up to more than 16MB.");
- session.startTransaction();
- assert.commandWorked(sessionColl.insert(doc1));
- assert.commandWorked(sessionColl.insert(doc2));
+jsTestLog("Start a transaction and insert documents with sizes that add up to more than 16MB.");
+session.startTransaction();
+assert.commandWorked(sessionColl.insert(doc1));
+assert.commandWorked(sessionColl.insert(doc2));
- let downgradeFCV = startParallelShell(function() {
- load("jstests/libs/feature_compatibility_version.js");
+let downgradeFCV = startParallelShell(function() {
+ load("jstests/libs/feature_compatibility_version.js");
- const testDB = db.getSiblingDB("test");
- const adminDB = db.getSiblingDB("admin");
- try {
- jsTestLog("Downgrade to FCV4.0.");
- assert.commandWorked(
- testDB.adminCommand({setFeatureCompatibilityVersion: lastStableFCV}));
- checkFCV(adminDB, lastStableFCV);
- } finally {
- jsTestLog("Restore back to FCV4.2.");
- assert.commandWorked(testDB.adminCommand({setFeatureCompatibilityVersion: latestFCV}));
- checkFCV(adminDB, latestFCV);
- }
- });
+ const testDB = db.getSiblingDB("test");
+ const adminDB = db.getSiblingDB("admin");
+ try {
+ jsTestLog("Downgrade to FCV4.0.");
+ assert.commandWorked(testDB.adminCommand({setFeatureCompatibilityVersion: lastStableFCV}));
+ checkFCV(adminDB, lastStableFCV);
+ } finally {
+ jsTestLog("Restore back to FCV4.2.");
+ assert.commandWorked(testDB.adminCommand({setFeatureCompatibilityVersion: latestFCV}));
+ checkFCV(adminDB, latestFCV);
+ }
+});
- // Wait until the in-memory FCV state has been changed to 4.0.
- assert.soon(function() {
- const adminDB = db.getSiblingDB("admin");
- let res = adminDB.runCommand({getParameter: 1, featureCompatibilityVersion: 1});
- assert.commandWorked(res);
- return "4.0" === res.featureCompatibilityVersion.version;
- }, "Failed to detect the FCV change to 4.0 from server status.");
+// Wait until the in-memory FCV state has been changed to 4.0.
+assert.soon(function() {
+ const adminDB = db.getSiblingDB("admin");
+ let res = adminDB.runCommand({getParameter: 1, featureCompatibilityVersion: 1});
+ assert.commandWorked(res);
+ return "4.0" === res.featureCompatibilityVersion.version;
+}, "Failed to detect the FCV change to 4.0 from server status.");
- jsTestLog("Attempt to commit the large transaction using the FCV4.0 oplog format.");
- assert.commandFailedWithCode(session.commitTransaction_forTesting(),
- ErrorCodes.TransactionTooLarge);
+jsTestLog("Attempt to commit the large transaction using the FCV4.0 oplog format.");
+assert.commandFailedWithCode(session.commitTransaction_forTesting(),
+ ErrorCodes.TransactionTooLarge);
- assert.commandWorked(db.adminCommand(
- {configureFailPoint: "hangBeforeAbortingRunningTransactionsOnFCVDowngrade", mode: "off"}));
- downgradeFCV();
+assert.commandWorked(db.adminCommand(
+ {configureFailPoint: "hangBeforeAbortingRunningTransactionsOnFCVDowngrade", mode: "off"}));
+downgradeFCV();
}());