{ "runOn": [ { "minServerVersion": "4.0", "topology": [ "replicaset" ] }, { "minServerVersion": "4.1.7", "topology": [ "sharded", "load-balanced" ], "serverless": "forbid" } ], "database_name": "retryable-reads-tests", "collection_name": "coll", "data": [ { "_id": 1, "x": 11 }, { "_id": 2, "x": 22 }, { "_id": 3, "x": 33 } ], "tests": [ { "description": "db.coll.watch succeeds after InterruptedAtShutdown", "failPoint": { "configureFailPoint": "failCommand", "mode": { "times": 1 }, "data": { "failCommands": [ "aggregate" ], "errorCode": 11600 } }, "operations": [ { "name": "watch", "object": "collection" } ], "expectations": [ { "command_started_event": { "command": { "aggregate": "coll", "cursor": {}, "pipeline": [ { "$changeStream": {} } ] }, "database_name": "retryable-reads-tests" } }, { "command_started_event": { "command": { "aggregate": "coll", "cursor": {}, "pipeline": [ { "$changeStream": {} } ] }, "database_name": "retryable-reads-tests" } } ] }, { "description": "db.coll.watch succeeds after InterruptedDueToReplStateChange", "failPoint": { "configureFailPoint": "failCommand", "mode": { "times": 1 }, "data": { "failCommands": [ "aggregate" ], "errorCode": 11602 } }, "operations": [ { "name": "watch", "object": "collection" } ], "expectations": [ { "command_started_event": { "command": { "aggregate": "coll", "cursor": {}, "pipeline": [ { "$changeStream": {} } ] }, "database_name": "retryable-reads-tests" } }, { "command_started_event": { "command": { "aggregate": "coll", "cursor": {}, "pipeline": [ { "$changeStream": {} } ] }, "database_name": "retryable-reads-tests" } } ] }, { "description": "db.coll.watch succeeds after NotWritablePrimary", "failPoint": { "configureFailPoint": "failCommand", "mode": { "times": 1 }, "data": { "failCommands": [ "aggregate" ], "errorCode": 10107 } }, "operations": [ { "name": "watch", "object": "collection" } ], "expectations": [ { "command_started_event": { "command": { "aggregate": "coll", "cursor": {}, "pipeline": [ { "$changeStream": {} } ] }, "database_name": "retryable-reads-tests" } }, { "command_started_event": { "command": { "aggregate": "coll", "cursor": {}, "pipeline": [ { "$changeStream": {} } ] }, "database_name": "retryable-reads-tests" } } ] }, { "description": "db.coll.watch succeeds after NotPrimaryNoSecondaryOk", "failPoint": { "configureFailPoint": "failCommand", "mode": { "times": 1 }, "data": { "failCommands": [ "aggregate" ], "errorCode": 13435 } }, "operations": [ { "name": "watch", "object": "collection" } ], "expectations": [ { "command_started_event": { "command": { "aggregate": "coll", "cursor": {}, "pipeline": [ { "$changeStream": {} } ] }, "database_name": "retryable-reads-tests" } }, { "command_started_event": { "command": { "aggregate": "coll", "cursor": {}, "pipeline": [ { "$changeStream": {} } ] }, "database_name": "retryable-reads-tests" } } ] }, { "description": "db.coll.watch succeeds after NotPrimaryOrSecondary", "failPoint": { "configureFailPoint": "failCommand", "mode": { "times": 1 }, "data": { "failCommands": [ "aggregate" ], "errorCode": 13436 } }, "operations": [ { "name": "watch", "object": "collection" } ], "expectations": [ { "command_started_event": { "command": { "aggregate": "coll", "cursor": {}, "pipeline": [ { "$changeStream": {} } ] }, "database_name": "retryable-reads-tests" } }, { "command_started_event": { "command": { "aggregate": "coll", "cursor": {}, "pipeline": [ { "$changeStream": {} } ] }, "database_name": "retryable-reads-tests" } } ] }, { "description": "db.coll.watch succeeds after PrimarySteppedDown", "failPoint": { "configureFailPoint": "failCommand", "mode": { "times": 1 }, "data": { "failCommands": [ "aggregate" ], "errorCode": 189 } }, "operations": [ { "name": "watch", "object": "collection" } ], "expectations": [ { "command_started_event": { "command": { "aggregate": "coll", "cursor": {}, "pipeline": [ { "$changeStream": {} } ] }, "database_name": "retryable-reads-tests" } }, { "command_started_event": { "command": { "aggregate": "coll", "cursor": {}, "pipeline": [ { "$changeStream": {} } ] }, "database_name": "retryable-reads-tests" } } ] }, { "description": "db.coll.watch succeeds after ShutdownInProgress", "failPoint": { "configureFailPoint": "failCommand", "mode": { "times": 1 }, "data": { "failCommands": [ "aggregate" ], "errorCode": 91 } }, "operations": [ { "name": "watch", "object": "collection" } ], "expectations": [ { "command_started_event": { "command": { "aggregate": "coll", "cursor": {}, "pipeline": [ { "$changeStream": {} } ] }, "database_name": "retryable-reads-tests" } }, { "command_started_event": { "command": { "aggregate": "coll", "cursor": {}, "pipeline": [ { "$changeStream": {} } ] }, "database_name": "retryable-reads-tests" } } ] }, { "description": "db.coll.watch succeeds after HostNotFound", "failPoint": { "configureFailPoint": "failCommand", "mode": { "times": 1 }, "data": { "failCommands": [ "aggregate" ], "errorCode": 7 } }, "operations": [ { "name": "watch", "object": "collection" } ], "expectations": [ { "command_started_event": { "command": { "aggregate": "coll", "cursor": {}, "pipeline": [ { "$changeStream": {} } ] }, "database_name": "retryable-reads-tests" } }, { "command_started_event": { "command": { "aggregate": "coll", "cursor": {}, "pipeline": [ { "$changeStream": {} } ] }, "database_name": "retryable-reads-tests" } } ] }, { "description": "db.coll.watch succeeds after HostUnreachable", "failPoint": { "configureFailPoint": "failCommand", "mode": { "times": 1 }, "data": { "failCommands": [ "aggregate" ], "errorCode": 6 } }, "operations": [ { "name": "watch", "object": "collection" } ], "expectations": [ { "command_started_event": { "command": { "aggregate": "coll", "cursor": {}, "pipeline": [ { "$changeStream": {} } ] }, "database_name": "retryable-reads-tests" } }, { "command_started_event": { "command": { "aggregate": "coll", "cursor": {}, "pipeline": [ { "$changeStream": {} } ] }, "database_name": "retryable-reads-tests" } } ] }, { "description": "db.coll.watch succeeds after NetworkTimeout", "failPoint": { "configureFailPoint": "failCommand", "mode": { "times": 1 }, "data": { "failCommands": [ "aggregate" ], "errorCode": 89 } }, "operations": [ { "name": "watch", "object": "collection" } ], "expectations": [ { "command_started_event": { "command": { "aggregate": "coll", "cursor": {}, "pipeline": [ { "$changeStream": {} } ] }, "database_name": "retryable-reads-tests" } }, { "command_started_event": { "command": { "aggregate": "coll", "cursor": {}, "pipeline": [ { "$changeStream": {} } ] }, "database_name": "retryable-reads-tests" } } ] }, { "description": "db.coll.watch succeeds after SocketException", "failPoint": { "configureFailPoint": "failCommand", "mode": { "times": 1 }, "data": { "failCommands": [ "aggregate" ], "errorCode": 9001 } }, "operations": [ { "name": "watch", "object": "collection" } ], "expectations": [ { "command_started_event": { "command": { "aggregate": "coll", "cursor": {}, "pipeline": [ { "$changeStream": {} } ] }, "database_name": "retryable-reads-tests" } }, { "command_started_event": { "command": { "aggregate": "coll", "cursor": {}, "pipeline": [ { "$changeStream": {} } ] }, "database_name": "retryable-reads-tests" } } ] }, { "description": "db.coll.watch fails after two NotWritablePrimary errors", "failPoint": { "configureFailPoint": "failCommand", "mode": { "times": 2 }, "data": { "failCommands": [ "aggregate" ], "errorCode": 10107 } }, "operations": [ { "name": "watch", "object": "collection", "error": true } ], "expectations": [ { "command_started_event": { "command": { "aggregate": "coll", "cursor": {}, "pipeline": [ { "$changeStream": {} } ] }, "database_name": "retryable-reads-tests" } }, { "command_started_event": { "command": { "aggregate": "coll", "cursor": {}, "pipeline": [ { "$changeStream": {} } ] }, "database_name": "retryable-reads-tests" } } ] }, { "description": "db.coll.watch fails after NotWritablePrimary when retryReads is false", "clientOptions": { "retryReads": false }, "failPoint": { "configureFailPoint": "failCommand", "mode": { "times": 1 }, "data": { "failCommands": [ "aggregate" ], "errorCode": 10107 } }, "operations": [ { "name": "watch", "object": "collection", "error": true } ], "expectations": [ { "command_started_event": { "command": { "aggregate": "coll", "cursor": {}, "pipeline": [ { "$changeStream": {} } ] }, "database_name": "retryable-reads-tests" } } ] } ] }