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