diff options
Diffstat (limited to 'jstests/noPassthrough/skip_write_conflict_retries_failpoint.js')
-rw-r--r-- | jstests/noPassthrough/skip_write_conflict_retries_failpoint.js | 82 |
1 files changed, 41 insertions, 41 deletions
diff --git a/jstests/noPassthrough/skip_write_conflict_retries_failpoint.js b/jstests/noPassthrough/skip_write_conflict_retries_failpoint.js index 538ba853938..fb56434fd61 100644 --- a/jstests/noPassthrough/skip_write_conflict_retries_failpoint.js +++ b/jstests/noPassthrough/skip_write_conflict_retries_failpoint.js @@ -9,59 +9,59 @@ * @tags: [uses_transactions, uses_prepare_transaction] */ (function() { - "use strict"; +"use strict"; - load("jstests/core/txns/libs/prepare_helpers.js"); +load("jstests/core/txns/libs/prepare_helpers.js"); - const rst = new ReplSetTest({nodes: 1}); - rst.startSet(); - rst.initiate(); +const rst = new ReplSetTest({nodes: 1}); +rst.startSet(); +rst.initiate(); - const primary = rst.getPrimary(); - const testDB = primary.getDB("test"); - const testColl = testDB.getCollection("skip_write_conflict_retries_failpoint"); +const primary = rst.getPrimary(); +const testDB = primary.getDB("test"); +const testColl = testDB.getCollection("skip_write_conflict_retries_failpoint"); - const session = primary.startSession({causalConsistency: false}); - const sessionDB = session.getDatabase(testDB.getName()); - const sessionColl = sessionDB.getCollection(testColl.getName()); +const session = primary.startSession({causalConsistency: false}); +const sessionDB = session.getDatabase(testDB.getName()); +const sessionColl = sessionDB.getCollection(testColl.getName()); - assert.commandWorked(testColl.runCommand( - "createIndexes", - {indexes: [{key: {a: 1}, name: "a_1", unique: true}], writeConcern: {w: "majority"}})); +assert.commandWorked(testColl.runCommand( + "createIndexes", + {indexes: [{key: {a: 1}, name: "a_1", unique: true}], writeConcern: {w: "majority"}})); - assert.commandWorked( - testDB.adminCommand({configureFailPoint: "skipWriteConflictRetries", mode: "alwaysOn"})); +assert.commandWorked( + testDB.adminCommand({configureFailPoint: "skipWriteConflictRetries", mode: "alwaysOn"})); - // A non-transactional insert would ordinarily keep retrying if it conflicts with a write - // operation performed inside a multi-statement transaction. However, with the - // "skipWriteConflictRetries" failpoint enabled, the non-transactional insert should immediately - // fail with a WriteConflict error response. - session.startTransaction(); - assert.commandWorked(sessionColl.insert({_id: "from transaction", a: 0})); +// A non-transactional insert would ordinarily keep retrying if it conflicts with a write +// operation performed inside a multi-statement transaction. However, with the +// "skipWriteConflictRetries" failpoint enabled, the non-transactional insert should immediately +// fail with a WriteConflict error response. +session.startTransaction(); +assert.commandWorked(sessionColl.insert({_id: "from transaction", a: 0})); - assert.commandFailedWithCode(testColl.insert({_id: "from outside transaction", a: 0}), - ErrorCodes.WriteConflict); +assert.commandFailedWithCode(testColl.insert({_id: "from outside transaction", a: 0}), + ErrorCodes.WriteConflict); - assert.commandWorked(session.commitTransaction_forTesting()); - assert.eq(testColl.findOne({a: 0}), {_id: "from transaction", a: 0}); +assert.commandWorked(session.commitTransaction_forTesting()); +assert.eq(testColl.findOne({a: 0}), {_id: "from transaction", a: 0}); - // A non-transactional update would ordinarily keep retrying if it conflicts with a write - // operation performed inside a multi-statement transaction. However, with the - // "skipWriteConflictRetries" failpoint enabled, the non-transactional insert should immediately - // fail with a WriteConflict error response. - session.startTransaction(); - assert.commandWorked(sessionColl.insert({_id: "from prepared transaction", a: 1})); - const prepareTimestamp = PrepareHelpers.prepareTransaction(session); +// A non-transactional update would ordinarily keep retrying if it conflicts with a write +// operation performed inside a multi-statement transaction. However, with the +// "skipWriteConflictRetries" failpoint enabled, the non-transactional insert should immediately +// fail with a WriteConflict error response. +session.startTransaction(); +assert.commandWorked(sessionColl.insert({_id: "from prepared transaction", a: 1})); +const prepareTimestamp = PrepareHelpers.prepareTransaction(session); - assert.commandFailedWithCode(testColl.update({_id: "from transaction"}, {$set: {a: 1}}), - ErrorCodes.WriteConflict); +assert.commandFailedWithCode(testColl.update({_id: "from transaction"}, {$set: {a: 1}}), + ErrorCodes.WriteConflict); - assert.commandWorked(PrepareHelpers.commitTransaction(session, prepareTimestamp)); - assert.eq(testColl.findOne({a: 1}), {_id: "from prepared transaction", a: 1}); +assert.commandWorked(PrepareHelpers.commitTransaction(session, prepareTimestamp)); +assert.eq(testColl.findOne({a: 1}), {_id: "from prepared transaction", a: 1}); - assert.commandWorked( - testDB.adminCommand({configureFailPoint: "skipWriteConflictRetries", mode: "off"})); +assert.commandWorked( + testDB.adminCommand({configureFailPoint: "skipWriteConflictRetries", mode: "off"})); - session.endSession(); - rst.stopSet(); +session.endSession(); +rst.stopSet(); })(); |