runOn: - minServerVersion: "4.0" topology: ["single", "replicaset"] - minServerVersion: "4.1.7" topology: ["sharded", "load-balanced"] database_name: &database_name "retryable-reads-tests" collection_name: &collection_name "coll" data: - {_id: 1, x: 11} - {_id: 2, x: 22} - {_id: 3, x: 33} - {_id: 4, x: 44} - {_id: 5, x: 55} tests: - description: "Find succeeds on first attempt" operations: - &retryable_operation_succeeds <<: &retryable_operation name: find object: collection arguments: filter: {} sort: {_id: 1} limit: 4 result: - {_id: 1, x: 11} - {_id: 2, x: 22} - {_id: 3, x: 33} - {_id: 4, x: 44} expectations: - &retryable_command_started_event command_started_event: command: find: *collection_name filter: {} sort: {_id: 1} limit: 4 database_name: *database_name - description: "Find succeeds on second attempt with explicit clientOptions" clientOptions: retryReads: true failPoint: &failCommand_failPoint configureFailPoint: failCommand mode: { times: 1 } data: failCommands: [find] closeConnection: true operations: [*retryable_operation_succeeds] expectations: - *retryable_command_started_event - *retryable_command_started_event - description: "Find succeeds on second attempt" failPoint: *failCommand_failPoint operations: [*retryable_operation_succeeds] expectations: - *retryable_command_started_event - *retryable_command_started_event - description: "Find fails on first attempt" clientOptions: retryReads: false failPoint: *failCommand_failPoint operations: - &retryable_operation_fails <<: *retryable_operation error: true expectations: - *retryable_command_started_event - description: "Find fails on second attempt" failPoint: <<: *failCommand_failPoint mode: { times: 2 } operations: [*retryable_operation_fails] expectations: - *retryable_command_started_event - *retryable_command_started_event