{ "runOn": [ { "minServerVersion": "3.6", "topology": [ "replicaset" ] } ], "data": [ { "_id": 1, "x": 11 }, { "_id": 2, "x": 22 } ], "tests": [ { "description": "FindOneAndUpdate is committed on first attempt", "failPoint": { "configureFailPoint": "onPrimaryTransactionalWrite", "mode": { "times": 1 } }, "operation": { "name": "findOneAndUpdate", "arguments": { "filter": { "_id": 1 }, "update": { "$inc": { "x": 1 } }, "returnDocument": "Before" } }, "outcome": { "result": { "_id": 1, "x": 11 }, "collection": { "data": [ { "_id": 1, "x": 12 }, { "_id": 2, "x": 22 } ] } } }, { "description": "FindOneAndUpdate is not committed on first attempt", "failPoint": { "configureFailPoint": "onPrimaryTransactionalWrite", "mode": { "times": 1 }, "data": { "failBeforeCommitExceptionCode": 1 } }, "operation": { "name": "findOneAndUpdate", "arguments": { "filter": { "_id": 1 }, "update": { "$inc": { "x": 1 } }, "returnDocument": "Before" } }, "outcome": { "result": { "_id": 1, "x": 11 }, "collection": { "data": [ { "_id": 1, "x": 12 }, { "_id": 2, "x": 22 } ] } } }, { "description": "FindOneAndUpdate is never committed", "failPoint": { "configureFailPoint": "onPrimaryTransactionalWrite", "mode": { "times": 2 }, "data": { "failBeforeCommitExceptionCode": 1 } }, "operation": { "name": "findOneAndUpdate", "arguments": { "filter": { "_id": 1 }, "update": { "$inc": { "x": 1 } } } }, "outcome": { "error": true, "collection": { "data": [ { "_id": 1, "x": 11 }, { "_id": 2, "x": 22 } ] } } } ] }