runOn: - minServerVersion: "4.3.1" topology: ["replicaset", "sharded"] data: - { _id: 1, x: 11 } - { _id: 2, x: 22 } tests: - description: "UpdateOne succeeds with RetryableWriteError from server" failPoint: configureFailPoint: failCommand mode: { times: 1 } data: failCommands: ["update"] errorCode: 112 # WriteConflict, not a retryable error code errorLabels: ["RetryableWriteError"] # Override server behavior: send RetryableWriteError label with non-retryable error code operation: name: "updateOne" arguments: filter: { _id: 1 } update: { $inc: { x: 1 } } outcome: # Driver retries operation and it succeeds result: matchedCount: 1 modifiedCount: 1 upsertedCount: 0 collection: data: - { _id: 1, x: 12 } - { _id: 2, x: 22 } - description: "UpdateOne fails if server does not return RetryableWriteError" failPoint: configureFailPoint: failCommand mode: { times: 1 } data: failCommands: ["update"] errorCode: 11600 # InterruptedAtShutdown, normally a retryable error code errorLabels: [] # Override server behavior: do not send RetryableWriteError label with retryable code operation: name: "updateOne" arguments: filter: { _id: 1 } update: { $inc: { x: 1 } } outcome: error: true # Driver does not retry operation because there was no RetryableWriteError label on response result: errorLabelsOmit: ["RetryableWriteError"] collection: data: - { _id: 1, x: 11 } - { _id: 2, x: 22 }