diff options
Diffstat (limited to 'jstests/core/txns/prepare_requires_fcv42.js')
-rw-r--r-- | jstests/core/txns/prepare_requires_fcv42.js | 94 |
1 files changed, 48 insertions, 46 deletions
diff --git a/jstests/core/txns/prepare_requires_fcv42.js b/jstests/core/txns/prepare_requires_fcv42.js index a7be765a969..6f32918d332 100644 --- a/jstests/core/txns/prepare_requires_fcv42.js +++ b/jstests/core/txns/prepare_requires_fcv42.js @@ -4,54 +4,56 @@ * @tags: [uses_transactions, uses_prepare_transaction] */ (function() { - "use strict"; - load("jstests/libs/feature_compatibility_version.js"); - load("jstests/core/txns/libs/prepare_helpers.js"); - - const dbName = "test"; - const collName = "prepare_requires_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"}})); - - const sessionOptions = {causalConsistency: false}; - const session = testDB.getMongo().startSession(sessionOptions); - const sessionDB = session.getDatabase(dbName); - - try { - jsTestLog("Transaction succeeds in latest FCV."); - checkFCV(adminDB, latestFCV); - session.startTransaction(); - assert.commandWorked(sessionDB[collName].insert({_id: "a"})); - let prepareTimestamp = PrepareHelpers.prepareTransaction(session); - assert.commandWorked(PrepareHelpers.commitTransaction(session, prepareTimestamp)); - - jsTestLog("Downgrade the featureCompatibilityVersion."); - assert.commandWorked(testDB.adminCommand({setFeatureCompatibilityVersion: lastStableFCV})); - checkFCV(adminDB, lastStableFCV); - - jsTestLog("Transaction fails to prepare in last stable FCV."); - session.startTransaction(); - assert.commandWorked(sessionDB[collName].insert({_id: "b"})); - assert.commandFailedWithCode(sessionDB.adminCommand({prepareTransaction: 1}), - ErrorCodes.CommandNotSupported); - // Abort the transaction in the shell. - assert.commandFailedWithCode(session.abortTransaction_forTesting(), - ErrorCodes.NoSuchTransaction); - - } finally { - jsTestLog("Restore the original featureCompatibilityVersion."); - assert.commandWorked(testDB.adminCommand({setFeatureCompatibilityVersion: latestFCV})); - checkFCV(adminDB, latestFCV); - } - - jsTestLog("Transaction succeeds in latest FCV after upgrade."); +"use strict"; +load("jstests/libs/feature_compatibility_version.js"); +load("jstests/core/txns/libs/prepare_helpers.js"); + +const dbName = "test"; +const collName = "prepare_requires_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"}})); + +const sessionOptions = { + causalConsistency: false +}; +const session = testDB.getMongo().startSession(sessionOptions); +const sessionDB = session.getDatabase(dbName); + +try { + jsTestLog("Transaction succeeds in latest FCV."); + checkFCV(adminDB, latestFCV); session.startTransaction(); - assert.commandWorked(sessionDB[collName].insert({_id: "c"})); + assert.commandWorked(sessionDB[collName].insert({_id: "a"})); let prepareTimestamp = PrepareHelpers.prepareTransaction(session); assert.commandWorked(PrepareHelpers.commitTransaction(session, prepareTimestamp)); - session.endSession(); + jsTestLog("Downgrade the featureCompatibilityVersion."); + assert.commandWorked(testDB.adminCommand({setFeatureCompatibilityVersion: lastStableFCV})); + checkFCV(adminDB, lastStableFCV); + + jsTestLog("Transaction fails to prepare in last stable FCV."); + session.startTransaction(); + assert.commandWorked(sessionDB[collName].insert({_id: "b"})); + assert.commandFailedWithCode(sessionDB.adminCommand({prepareTransaction: 1}), + ErrorCodes.CommandNotSupported); + // Abort the transaction in the shell. + assert.commandFailedWithCode(session.abortTransaction_forTesting(), + ErrorCodes.NoSuchTransaction); + +} finally { + jsTestLog("Restore the original featureCompatibilityVersion."); + assert.commandWorked(testDB.adminCommand({setFeatureCompatibilityVersion: latestFCV})); + checkFCV(adminDB, latestFCV); +} + +jsTestLog("Transaction succeeds in latest FCV after upgrade."); +session.startTransaction(); +assert.commandWorked(sessionDB[collName].insert({_id: "c"})); +let prepareTimestamp = PrepareHelpers.prepareTransaction(session); +assert.commandWorked(PrepareHelpers.commitTransaction(session, prepareTimestamp)); + +session.endSession(); }()); |