{ "runOn": [ { "minServerVersion": "4.3.1", "topology": [ "replicaset", "sharded", "load-balanced" ] } ], "data": [ { "_id": 1, "x": 11 }, { "_id": 2, "x": 22 } ], "tests": [ { "description": "FindOneAndReplace succeeds with RetryableWriteError from server", "failPoint": { "configureFailPoint": "failCommand", "mode": { "times": 1 }, "data": { "failCommands": [ "findAndModify" ], "errorCode": 112, "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 if server does not return RetryableWriteError", "failPoint": { "configureFailPoint": "failCommand", "mode": { "times": 1 }, "data": { "failCommands": [ "findAndModify" ], "errorCode": 11600, "errorLabels": [] } }, "operation": { "name": "findOneAndReplace", "arguments": { "filter": { "_id": 1 }, "replacement": { "_id": 1, "x": 111 }, "returnDocument": "Before" } }, "outcome": { "error": true, "result": { "errorLabelsOmit": [ "RetryableWriteError" ] }, "collection": { "data": [ { "_id": 1, "x": 11 }, { "_id": 2, "x": 22 } ] } } } ] }