diff options
Diffstat (limited to 'jstests/replsets/apply_prepare_txn_write_conflict_robustness.js')
| -rw-r--r-- | jstests/replsets/apply_prepare_txn_write_conflict_robustness.js | 11 |
1 files changed, 8 insertions, 3 deletions
diff --git a/jstests/replsets/apply_prepare_txn_write_conflict_robustness.js b/jstests/replsets/apply_prepare_txn_write_conflict_robustness.js index 62e98879d48..330ebfed751 100644 --- a/jstests/replsets/apply_prepare_txn_write_conflict_robustness.js +++ b/jstests/replsets/apply_prepare_txn_write_conflict_robustness.js @@ -22,8 +22,7 @@ const primaryDB = primary.getDB(dbName); const primaryColl = primaryDB[collName]; jsTestLog("Do a document write"); -assert.commandWorked( - primaryColl.insert({_id: 0}, {"writeConcern": {"w": "majority"}})); +assert.commandWorked(primaryColl.insert({_id: 0}, {"writeConcern": {"w": "majority"}})); // Enable fail point on secondary to cause apply prepare transaction oplog entry's ops to fail // with write conflict error at least once. @@ -37,15 +36,21 @@ const sessionColl = sessionDB.getCollection(collName); session.startTransaction({writeConcern: {w: "majority"}}); assert.commandWorked(sessionColl.insert({_id: 1})); +const status1 = secondary.adminCommand({serverStatus: 1}); + // PrepareTransaction cmd will be successful only if secondary is able to retry applying // prepareTransaction oplog entry on WT_ROLLBACK (WriteConflictException) error. jsTestLog("Prepare transaction"); let prepareTimestamp = PrepareHelpers.prepareTransaction(session); +// Verify that the writeConflicts metrics in serverStatus is incremented on secondary. +const status2 = secondary.adminCommand({serverStatus: 1}); +assert.gt(status2.metrics.operation.writeConflicts, status1.metrics.operation.writeConflicts); + jsTestLog("Commit transaction"); assert.commandWorked(PrepareHelpers.commitTransaction(session, prepareTimestamp)); -// Verify that the committed transaction data is present on secondary. +// Verify that the committed transaction data is present on secondary. assert.eq(secondary.getDB(dbName)[collName].findOne({_id: 1}), {_id: 1}); // verify that secondaries are not holding any transactional lock resources. |
