runOn: - minServerVersion: "4.0" topology: ["single", "replicaset"] - minServerVersion: "4.1.7" topology: ["sharded"] 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} tests: - description: "Aggregate succeeds after InterruptedAtShutdown" failPoint: &failCommand_failPoint configureFailPoint: failCommand mode: { times: 1 } data: { failCommands: [aggregate], errorCode: 11600 } operations: - &retryable_operation_succeeds <<: &retryable_operation name: aggregate object: collection arguments: pipeline: - $match: _id: {$gt: 1} - $sort: {x: 1} result: - {_id: 2, x: 22} - {_id: 3, x: 33} expectations: - &retryable_command_started_event command_started_event: command: aggregate: *collection_name pipeline: [{$match: {_id: {$gt: 1}}}, {$sort: {x: 1}}] database_name: *database_name - *retryable_command_started_event - description: "Aggregate succeeds after InterruptedDueToReplStateChange" failPoint: <<: *failCommand_failPoint data: { failCommands: [aggregate], errorCode: 11602 } operations: [*retryable_operation_succeeds] expectations: - *retryable_command_started_event - *retryable_command_started_event - description: "Aggregate succeeds after NotMaster" failPoint: <<: *failCommand_failPoint data: { failCommands: [aggregate], errorCode: 10107 } operations: [*retryable_operation_succeeds] expectations: - *retryable_command_started_event - *retryable_command_started_event - description: "Aggregate succeeds after NotPrimaryNoSecondaryOk" failPoint: <<: *failCommand_failPoint data: { failCommands: [aggregate], errorCode: 13435 } operations: [*retryable_operation_succeeds] expectations: - *retryable_command_started_event - *retryable_command_started_event - description: "Aggregate succeeds after NotMasterOrSecondary" failPoint: <<: *failCommand_failPoint data: { failCommands: [aggregate], errorCode: 13436 } operations: [*retryable_operation_succeeds] expectations: - *retryable_command_started_event - *retryable_command_started_event - description: "Aggregate succeeds after PrimarySteppedDown" failPoint: <<: *failCommand_failPoint data: { failCommands: [aggregate], errorCode: 189 } operations: [*retryable_operation_succeeds] expectations: - *retryable_command_started_event - *retryable_command_started_event - description: "Aggregate succeeds after ShutdownInProgress" failPoint: <<: *failCommand_failPoint data: { failCommands: [aggregate], errorCode: 91 } operations: [*retryable_operation_succeeds] expectations: - *retryable_command_started_event - *retryable_command_started_event - description: "Aggregate succeeds after HostNotFound" failPoint: <<: *failCommand_failPoint data: { failCommands: [aggregate], errorCode: 7 } operations: [*retryable_operation_succeeds] expectations: - *retryable_command_started_event - *retryable_command_started_event - description: "Aggregate succeeds after HostUnreachable" failPoint: <<: *failCommand_failPoint data: { failCommands: [aggregate], errorCode: 6 } operations: [*retryable_operation_succeeds] expectations: - *retryable_command_started_event - *retryable_command_started_event - description: "Aggregate succeeds after NetworkTimeout" failPoint: <<: *failCommand_failPoint data: { failCommands: [aggregate], errorCode: 89 } operations: [*retryable_operation_succeeds] expectations: - *retryable_command_started_event - *retryable_command_started_event - description: "Aggregate succeeds after SocketException" failPoint: <<: *failCommand_failPoint data: { failCommands: [aggregate], errorCode: 9001 } operations: [*retryable_operation_succeeds] expectations: - *retryable_command_started_event - *retryable_command_started_event - description: "Aggregate fails after two NotMaster errors" failPoint: <<: *failCommand_failPoint mode: { times: 2 } data: { failCommands: [aggregate], errorCode: 10107 } operations: - &retryable_operation_fails <<: *retryable_operation error: true expectations: - *retryable_command_started_event - *retryable_command_started_event - description: "Aggregate fails after NotMaster when retryReads is false" clientOptions: retryReads: false failPoint: <<: *failCommand_failPoint data: { failCommands: [aggregate], errorCode: 10107 } operations: [*retryable_operation_fails] expectations: - *retryable_command_started_event