runOn: - minServerVersion: "4.0" topology: ["single", "replicaset"] - minServerVersion: "4.1.7" topology: ["sharded"] database_name: &database_name "retryable-reads-tests" bucket_name: "fs" data: fs.files: - _id: { $oid : "000000000000000000000001" } length: 1 chunkSize: 4 uploadDate: { $date : "1970-01-01T00:00:00.000Z" } filename: abc metadata: {} fs.chunks: - { _id: { $oid: "000000000000000000000002" }, files_id: { $oid: "000000000000000000000001" }, n: 0, data: { $binary: { base64: "EQ==", subType: "00" } } } tests: - description: "Download succeeds on first attempt" operations: - &retryable_operation name: download object: gridfsbucket arguments: { id: { "$oid" : "000000000000000000000001" } } expectations: - &retryable_command_started_event command_started_event: command: find: fs.files filter: { _id: {$oid : "000000000000000000000001" }} database_name: *database_name - &find_chunks_command_started_event command_started_event: command: find: fs.chunks filter: { files_id: {$oid : "000000000000000000000001" }} sort: { n: 1 } database_name: *database_name - description: "Download succeeds on second attempt" failPoint: &failCommand_failPoint configureFailPoint: failCommand mode: { times: 1 } data: failCommands: [find] closeConnection: true operations: [*retryable_operation] expectations: - *retryable_command_started_event - *retryable_command_started_event - *find_chunks_command_started_event - description: "Download fails on first attempt" clientOptions: retryReads: false failPoint: *failCommand_failPoint operations: - &retryable_operation_fails <<: *retryable_operation error: true expectations: - *retryable_command_started_event - description: "Download fails on second attempt" failPoint: <<: *failCommand_failPoint mode: { times: 2 } operations: [*retryable_operation_fails] expectations: - *retryable_command_started_event - *retryable_command_started_event