{ "runOn": [ { "minServerVersion": "4.0", "topology": [ "replicaset" ] }, { "minServerVersion": "4.1.7", "topology": [ "sharded", "load-balanced" ] } ], "data": [ { "_id": 1, "x": 11 }, { "_id": 2, "x": 22 } ], "tests": [ { "description": "FindOneAndReplace succeeds after PrimarySteppedDown", "failPoint": { "configureFailPoint": "failCommand", "mode": { "times": 1 }, "data": { "failCommands": [ "findAndModify" ], "errorCode": 189, "errorLabels": [ "RetryableWriteError" ] } }, "operation": { "name": "findOneAndReplace", "arguments": { "filter": { "_id": 1 }, "replacement": { "_id": 1, "x": 111 }, "returnDocument": "Before" } }, "outcome": { "result": { "_id": 1, "x": 11 }, "collection": { "data": [ { "_id": 1, "x": 111 }, { "_id": 2, "x": 22 } ] } } }, { "description": "FindOneAndReplace succeeds after WriteConcernError ShutdownInProgress", "failPoint": { "configureFailPoint": "failCommand", "mode": { "times": 1 }, "data": { "failCommands": [ "findAndModify" ], "writeConcernError": { "code": 91, "errmsg": "Replication is being shut down", "errorLabels": [ "RetryableWriteError" ] } } }, "operation": { "name": "findOneAndReplace", "arguments": { "filter": { "_id": 1 }, "replacement": { "_id": 1, "x": 111 }, "returnDocument": "Before" } }, "outcome": { "result": { "_id": 1, "x": 11 }, "collection": { "data": [ { "_id": 1, "x": 111 }, { "_id": 2, "x": 22 } ] } } }, { "description": "FindOneAndReplace fails with a RetryableWriteError label after two connection failures", "failPoint": { "configureFailPoint": "failCommand", "mode": { "times": 2 }, "data": { "failCommands": [ "findAndModify" ], "closeConnection": true } }, "operation": { "name": "findOneAndReplace", "arguments": { "filter": { "_id": 1 }, "replacement": { "_id": 1, "x": 111 }, "returnDocument": "Before" } }, "outcome": { "error": true, "result": { "errorLabelsContain": [ "RetryableWriteError" ] }, "collection": { "data": [ { "_id": 1, "x": 11 }, { "_id": 2, "x": 22 } ] } } } ] }