runOn: - minServerVersion: "4.3.1" topology: ["replicaset", "sharded", "load-balanced"] data: - { _id: 1, x: 11 } tests: - description: "InsertMany succeeds with RetryableWriteError from server" failPoint: configureFailPoint: failCommand mode: { times: 1 } data: failCommands: ["insert"] errorCode: 112 # WriteConflict, not a retryable error code errorLabels: ["RetryableWriteError"] # Override server behavior: send RetryableWriteError label with non-retryable error code operation: name: "insertMany" arguments: documents: - { _id: 2, x: 22 } - { _id: 3, x: 33 } options: { ordered: true } outcome: # Driver retries operation and it succeeds result: insertedIds: { 0: 2, 1: 3 } collection: data: - { _id: 1, x: 11 } - { _id: 2, x: 22 } - { _id: 3, x: 33 } - description: "InsertMany fails if server does not return RetryableWriteError" failPoint: configureFailPoint: failCommand mode: { times: 1 } data: failCommands: ["insert"] errorCode: 11600 # InterruptedAtShutdown, normally a retryable error code errorLabels: [] # Override server behavior: do not send RetryableWriteError label with retryable code operation: name: "insertMany" arguments: documents: - { _id: 2, x: 22 } - { _id: 3, x: 33 } options: { ordered: true } 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 }