data: - { _id: 1, x: 11 } - { _id: 2, x: 22 } minServerVersion: '3.6' tests: - description: "FindOneAndReplace is committed on first attempt" clientOptions: retryWrites: true failPoint: configureFailPoint: onPrimaryTransactionalWrite mode: { times: 1 } 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 is not committed on first attempt" clientOptions: retryWrites: true failPoint: configureFailPoint: onPrimaryTransactionalWrite mode: { times: 1 } data: { failBeforeCommitExceptionCode: 1 } 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 is never committed" clientOptions: retryWrites: true failPoint: configureFailPoint: onPrimaryTransactionalWrite mode: { times: 2 } data: { failBeforeCommitExceptionCode: 1 } operation: name: "findOneAndReplace" arguments: filter: { _id: 1 } replacement: { _id: 1, x: 111 } returnDocument: "Before" outcome: error: true collection: data: - { _id: 1, x: 11 } - { _id: 2, x: 22 }