# Tests in this file are generated from retryability-timeoutMS.yml.template. description: "timeoutMS behaves correctly for retryable operations" schemaVersion: "1.9" # failCommand is available on 4.0+ replica sets and 4.2+ sharded clusters. runOnRequirements: - minServerVersion: "4.0" topologies: ["replicaset"] - minServerVersion: "4.2" topologies: ["replicaset", "sharded-replicaset"] createEntities: - client: id: &failPointClient failPointClient useMultipleMongoses: false - client: id: &client client uriOptions: timeoutMS: 100 useMultipleMongoses: false observeEvents: - commandStartedEvent ignoreCommandMonitoringEvents: - killCursors - database: id: &database database client: *client databaseName: &databaseName test - collection: id: &collection collection database: *database collectionName: &collectionName coll initialData: - collectionName: *collectionName databaseName: *databaseName documents: [] tests: # For each retryable operation, run three tests: # # 1. timeoutMS applies to the whole operation, not to individual attempts - Client timeoutMS=100 and the operation is # fails with a retryable error after being blocked server-side for 60ms. The operation should fail with a timeout error # because the second attempt should take it over the 100ms limit. This test only runs on 4.4+ because it uses the # blockConnection option in failCommand. # # 2. operation is retried multiple times if timeoutMS is set to a non-zero value - Client timeoutMS=100 and the # operation fails with a retryable error twice. Drivers should send the original operation and two retries, the # second of which should succeed. # # 3. operation is retried multiple times if timeoutMS is set to a zero - Override timeoutMS to zero for the operation # and set a fail point to force a retryable error twice. Drivers should send the original operation and two retries, # the second of which should succeed. # # The fail points in these tests use error code 7 (HostNotFound) because it is a retryable error but does not trigger # an SDAM state change so we don't lose any time to server rediscovery. The tests also explicitly specify an # errorLabels array in the fail point to avoid behavioral differences among server types and ensure that the error # will be considered retryable. - description: "timeoutMS applies to whole operation, not individual attempts - insertOne on collection" runOnRequirements: - minServerVersion: "4.4" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 4 } data: failCommands: ["insert"] blockConnection: true blockTimeMS: 60 errorCode: 7 errorLabels: ["RetryableWriteError"] - name: insertOne object: *collection arguments: document: { x: 1 } expectError: isTimeoutError: true - description: "operation is retried multiple times for non-zero timeoutMS - insertOne on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["insert"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: insertOne object: *collection arguments: timeoutMS: 500 document: { x: 1 } expectEvents: - client: *client events: - commandStartedEvent: commandName: insert databaseName: *databaseName command: insert: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: insert databaseName: *databaseName command: insert: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: insert databaseName: *databaseName command: insert: *collectionName maxTimeMS: { $$type: ["int", "long"] } - description: "operation is retried multiple times if timeoutMS is zero - insertOne on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["insert"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: insertOne object: *collection arguments: timeoutMS: 0 document: { x: 1 } expectEvents: - client: *client events: - commandStartedEvent: commandName: insert databaseName: *databaseName command: insert: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: insert databaseName: *databaseName command: insert: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: insert databaseName: *databaseName command: insert: *collectionName maxTimeMS: { $$exists: false } - description: "timeoutMS applies to whole operation, not individual attempts - insertMany on collection" runOnRequirements: - minServerVersion: "4.4" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 4 } data: failCommands: ["insert"] blockConnection: true blockTimeMS: 60 errorCode: 7 errorLabels: ["RetryableWriteError"] - name: insertMany object: *collection arguments: documents: - { x: 1 } expectError: isTimeoutError: true - description: "operation is retried multiple times for non-zero timeoutMS - insertMany on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["insert"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: insertMany object: *collection arguments: timeoutMS: 500 documents: - { x: 1 } expectEvents: - client: *client events: - commandStartedEvent: commandName: insert databaseName: *databaseName command: insert: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: insert databaseName: *databaseName command: insert: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: insert databaseName: *databaseName command: insert: *collectionName maxTimeMS: { $$type: ["int", "long"] } - description: "operation is retried multiple times if timeoutMS is zero - insertMany on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["insert"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: insertMany object: *collection arguments: timeoutMS: 0 documents: - { x: 1 } expectEvents: - client: *client events: - commandStartedEvent: commandName: insert databaseName: *databaseName command: insert: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: insert databaseName: *databaseName command: insert: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: insert databaseName: *databaseName command: insert: *collectionName maxTimeMS: { $$exists: false } - description: "timeoutMS applies to whole operation, not individual attempts - deleteOne on collection" runOnRequirements: - minServerVersion: "4.4" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 4 } data: failCommands: ["delete"] blockConnection: true blockTimeMS: 60 errorCode: 7 errorLabels: ["RetryableWriteError"] - name: deleteOne object: *collection arguments: filter: {} expectError: isTimeoutError: true - description: "operation is retried multiple times for non-zero timeoutMS - deleteOne on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["delete"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: deleteOne object: *collection arguments: timeoutMS: 500 filter: {} expectEvents: - client: *client events: - commandStartedEvent: commandName: delete databaseName: *databaseName command: delete: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: delete databaseName: *databaseName command: delete: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: delete databaseName: *databaseName command: delete: *collectionName maxTimeMS: { $$type: ["int", "long"] } - description: "operation is retried multiple times if timeoutMS is zero - deleteOne on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["delete"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: deleteOne object: *collection arguments: timeoutMS: 0 filter: {} expectEvents: - client: *client events: - commandStartedEvent: commandName: delete databaseName: *databaseName command: delete: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: delete databaseName: *databaseName command: delete: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: delete databaseName: *databaseName command: delete: *collectionName maxTimeMS: { $$exists: false } - description: "timeoutMS applies to whole operation, not individual attempts - replaceOne on collection" runOnRequirements: - minServerVersion: "4.4" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 4 } data: failCommands: ["update"] blockConnection: true blockTimeMS: 60 errorCode: 7 errorLabels: ["RetryableWriteError"] - name: replaceOne object: *collection arguments: filter: {} replacement: { x: 1 } expectError: isTimeoutError: true - description: "operation is retried multiple times for non-zero timeoutMS - replaceOne on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["update"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: replaceOne object: *collection arguments: timeoutMS: 500 filter: {} replacement: { x: 1 } expectEvents: - client: *client events: - commandStartedEvent: commandName: update databaseName: *databaseName command: update: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: update databaseName: *databaseName command: update: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: update databaseName: *databaseName command: update: *collectionName maxTimeMS: { $$type: ["int", "long"] } - description: "operation is retried multiple times if timeoutMS is zero - replaceOne on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["update"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: replaceOne object: *collection arguments: timeoutMS: 0 filter: {} replacement: { x: 1 } expectEvents: - client: *client events: - commandStartedEvent: commandName: update databaseName: *databaseName command: update: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: update databaseName: *databaseName command: update: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: update databaseName: *databaseName command: update: *collectionName maxTimeMS: { $$exists: false } - description: "timeoutMS applies to whole operation, not individual attempts - updateOne on collection" runOnRequirements: - minServerVersion: "4.4" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 4 } data: failCommands: ["update"] blockConnection: true blockTimeMS: 60 errorCode: 7 errorLabels: ["RetryableWriteError"] - name: updateOne object: *collection arguments: filter: {} update: { $set: { x: 1 } } expectError: isTimeoutError: true - description: "operation is retried multiple times for non-zero timeoutMS - updateOne on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["update"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: updateOne object: *collection arguments: timeoutMS: 500 filter: {} update: { $set: { x: 1 } } expectEvents: - client: *client events: - commandStartedEvent: commandName: update databaseName: *databaseName command: update: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: update databaseName: *databaseName command: update: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: update databaseName: *databaseName command: update: *collectionName maxTimeMS: { $$type: ["int", "long"] } - description: "operation is retried multiple times if timeoutMS is zero - updateOne on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["update"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: updateOne object: *collection arguments: timeoutMS: 0 filter: {} update: { $set: { x: 1 } } expectEvents: - client: *client events: - commandStartedEvent: commandName: update databaseName: *databaseName command: update: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: update databaseName: *databaseName command: update: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: update databaseName: *databaseName command: update: *collectionName maxTimeMS: { $$exists: false } - description: "timeoutMS applies to whole operation, not individual attempts - findOneAndDelete on collection" runOnRequirements: - minServerVersion: "4.4" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 4 } data: failCommands: ["findAndModify"] blockConnection: true blockTimeMS: 60 errorCode: 7 errorLabels: ["RetryableWriteError"] - name: findOneAndDelete object: *collection arguments: filter: {} expectError: isTimeoutError: true - description: "operation is retried multiple times for non-zero timeoutMS - findOneAndDelete on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["findAndModify"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: findOneAndDelete object: *collection arguments: timeoutMS: 500 filter: {} expectEvents: - client: *client events: - commandStartedEvent: commandName: findAndModify databaseName: *databaseName command: findAndModify: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: findAndModify databaseName: *databaseName command: findAndModify: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: findAndModify databaseName: *databaseName command: findAndModify: *collectionName maxTimeMS: { $$type: ["int", "long"] } - description: "operation is retried multiple times if timeoutMS is zero - findOneAndDelete on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["findAndModify"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: findOneAndDelete object: *collection arguments: timeoutMS: 0 filter: {} expectEvents: - client: *client events: - commandStartedEvent: commandName: findAndModify databaseName: *databaseName command: findAndModify: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: findAndModify databaseName: *databaseName command: findAndModify: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: findAndModify databaseName: *databaseName command: findAndModify: *collectionName maxTimeMS: { $$exists: false } - description: "timeoutMS applies to whole operation, not individual attempts - findOneAndReplace on collection" runOnRequirements: - minServerVersion: "4.4" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 4 } data: failCommands: ["findAndModify"] blockConnection: true blockTimeMS: 60 errorCode: 7 errorLabels: ["RetryableWriteError"] - name: findOneAndReplace object: *collection arguments: filter: {} replacement: { x: 1 } expectError: isTimeoutError: true - description: "operation is retried multiple times for non-zero timeoutMS - findOneAndReplace on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["findAndModify"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: findOneAndReplace object: *collection arguments: timeoutMS: 500 filter: {} replacement: { x: 1 } expectEvents: - client: *client events: - commandStartedEvent: commandName: findAndModify databaseName: *databaseName command: findAndModify: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: findAndModify databaseName: *databaseName command: findAndModify: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: findAndModify databaseName: *databaseName command: findAndModify: *collectionName maxTimeMS: { $$type: ["int", "long"] } - description: "operation is retried multiple times if timeoutMS is zero - findOneAndReplace on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["findAndModify"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: findOneAndReplace object: *collection arguments: timeoutMS: 0 filter: {} replacement: { x: 1 } expectEvents: - client: *client events: - commandStartedEvent: commandName: findAndModify databaseName: *databaseName command: findAndModify: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: findAndModify databaseName: *databaseName command: findAndModify: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: findAndModify databaseName: *databaseName command: findAndModify: *collectionName maxTimeMS: { $$exists: false } - description: "timeoutMS applies to whole operation, not individual attempts - findOneAndUpdate on collection" runOnRequirements: - minServerVersion: "4.4" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 4 } data: failCommands: ["findAndModify"] blockConnection: true blockTimeMS: 60 errorCode: 7 errorLabels: ["RetryableWriteError"] - name: findOneAndUpdate object: *collection arguments: filter: {} update: { $set: { x: 1 } } expectError: isTimeoutError: true - description: "operation is retried multiple times for non-zero timeoutMS - findOneAndUpdate on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["findAndModify"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: findOneAndUpdate object: *collection arguments: timeoutMS: 500 filter: {} update: { $set: { x: 1 } } expectEvents: - client: *client events: - commandStartedEvent: commandName: findAndModify databaseName: *databaseName command: findAndModify: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: findAndModify databaseName: *databaseName command: findAndModify: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: findAndModify databaseName: *databaseName command: findAndModify: *collectionName maxTimeMS: { $$type: ["int", "long"] } - description: "operation is retried multiple times if timeoutMS is zero - findOneAndUpdate on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["findAndModify"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: findOneAndUpdate object: *collection arguments: timeoutMS: 0 filter: {} update: { $set: { x: 1 } } expectEvents: - client: *client events: - commandStartedEvent: commandName: findAndModify databaseName: *databaseName command: findAndModify: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: findAndModify databaseName: *databaseName command: findAndModify: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: findAndModify databaseName: *databaseName command: findAndModify: *collectionName maxTimeMS: { $$exists: false } - description: "timeoutMS applies to whole operation, not individual attempts - bulkWrite on collection" runOnRequirements: - minServerVersion: "4.4" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 4 } data: failCommands: ["insert"] blockConnection: true blockTimeMS: 60 errorCode: 7 errorLabels: ["RetryableWriteError"] - name: bulkWrite object: *collection arguments: requests: - insertOne: document: { _id: 1 } expectError: isTimeoutError: true - description: "operation is retried multiple times for non-zero timeoutMS - bulkWrite on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["insert"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: bulkWrite object: *collection arguments: timeoutMS: 500 requests: - insertOne: document: { _id: 1 } expectEvents: - client: *client events: - commandStartedEvent: commandName: insert databaseName: *databaseName command: insert: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: insert databaseName: *databaseName command: insert: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: insert databaseName: *databaseName command: insert: *collectionName maxTimeMS: { $$type: ["int", "long"] } - description: "operation is retried multiple times if timeoutMS is zero - bulkWrite on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["insert"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: bulkWrite object: *collection arguments: timeoutMS: 0 requests: - insertOne: document: { _id: 1 } expectEvents: - client: *client events: - commandStartedEvent: commandName: insert databaseName: *databaseName command: insert: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: insert databaseName: *databaseName command: insert: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: insert databaseName: *databaseName command: insert: *collectionName maxTimeMS: { $$exists: false } - description: "timeoutMS applies to whole operation, not individual attempts - listDatabases on client" runOnRequirements: - minServerVersion: "4.4" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 4 } data: failCommands: ["listDatabases"] blockConnection: true blockTimeMS: 60 errorCode: 7 errorLabels: ["RetryableWriteError"] - name: listDatabases object: *client arguments: filter: {} expectError: isTimeoutError: true - description: "operation is retried multiple times for non-zero timeoutMS - listDatabases on client" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["listDatabases"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: listDatabases object: *client arguments: timeoutMS: 500 filter: {} expectEvents: - client: *client events: - commandStartedEvent: commandName: listDatabases databaseName: admin command: listDatabases: 1 maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: listDatabases databaseName: admin command: listDatabases: 1 maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: listDatabases databaseName: admin command: listDatabases: 1 maxTimeMS: { $$type: ["int", "long"] } - description: "operation is retried multiple times if timeoutMS is zero - listDatabases on client" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["listDatabases"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: listDatabases object: *client arguments: timeoutMS: 0 filter: {} expectEvents: - client: *client events: - commandStartedEvent: commandName: listDatabases databaseName: admin command: listDatabases: 1 maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: listDatabases databaseName: admin command: listDatabases: 1 maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: listDatabases databaseName: admin command: listDatabases: 1 maxTimeMS: { $$exists: false } - description: "timeoutMS applies to whole operation, not individual attempts - listDatabaseNames on client" runOnRequirements: - minServerVersion: "4.4" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 4 } data: failCommands: ["listDatabases"] blockConnection: true blockTimeMS: 60 errorCode: 7 errorLabels: ["RetryableWriteError"] - name: listDatabaseNames object: *client expectError: isTimeoutError: true - description: "operation is retried multiple times for non-zero timeoutMS - listDatabaseNames on client" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["listDatabases"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: listDatabaseNames object: *client arguments: timeoutMS: 500 expectEvents: - client: *client events: - commandStartedEvent: commandName: listDatabases databaseName: admin command: listDatabases: 1 maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: listDatabases databaseName: admin command: listDatabases: 1 maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: listDatabases databaseName: admin command: listDatabases: 1 maxTimeMS: { $$type: ["int", "long"] } - description: "operation is retried multiple times if timeoutMS is zero - listDatabaseNames on client" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["listDatabases"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: listDatabaseNames object: *client arguments: timeoutMS: 0 expectEvents: - client: *client events: - commandStartedEvent: commandName: listDatabases databaseName: admin command: listDatabases: 1 maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: listDatabases databaseName: admin command: listDatabases: 1 maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: listDatabases databaseName: admin command: listDatabases: 1 maxTimeMS: { $$exists: false } - description: "timeoutMS applies to whole operation, not individual attempts - createChangeStream on client" runOnRequirements: - minServerVersion: "4.4" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 4 } data: failCommands: ["aggregate"] blockConnection: true blockTimeMS: 60 errorCode: 7 errorLabels: ["RetryableWriteError"] - name: createChangeStream object: *client arguments: pipeline: [] expectError: isTimeoutError: true - description: "operation is retried multiple times for non-zero timeoutMS - createChangeStream on client" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["aggregate"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: createChangeStream object: *client arguments: timeoutMS: 500 pipeline: [] expectEvents: - client: *client events: - commandStartedEvent: commandName: aggregate databaseName: admin command: aggregate: 1 maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: aggregate databaseName: admin command: aggregate: 1 maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: aggregate databaseName: admin command: aggregate: 1 maxTimeMS: { $$type: ["int", "long"] } - description: "operation is retried multiple times if timeoutMS is zero - createChangeStream on client" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["aggregate"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: createChangeStream object: *client arguments: timeoutMS: 0 pipeline: [] expectEvents: - client: *client events: - commandStartedEvent: commandName: aggregate databaseName: admin command: aggregate: 1 maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: aggregate databaseName: admin command: aggregate: 1 maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: aggregate databaseName: admin command: aggregate: 1 maxTimeMS: { $$exists: false } - description: "timeoutMS applies to whole operation, not individual attempts - aggregate on database" runOnRequirements: - minServerVersion: "4.4" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 4 } data: failCommands: ["aggregate"] blockConnection: true blockTimeMS: 60 errorCode: 7 errorLabels: ["RetryableWriteError"] - name: aggregate object: *database arguments: pipeline: [ { $listLocalSessions: {} }, { $limit: 1 } ] expectError: isTimeoutError: true - description: "operation is retried multiple times for non-zero timeoutMS - aggregate on database" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["aggregate"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: aggregate object: *database arguments: timeoutMS: 500 pipeline: [ { $listLocalSessions: {} }, { $limit: 1 } ] expectEvents: - client: *client events: - commandStartedEvent: commandName: aggregate databaseName: *databaseName command: aggregate: 1 maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: aggregate databaseName: *databaseName command: aggregate: 1 maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: aggregate databaseName: *databaseName command: aggregate: 1 maxTimeMS: { $$type: ["int", "long"] } - description: "operation is retried multiple times if timeoutMS is zero - aggregate on database" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["aggregate"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: aggregate object: *database arguments: timeoutMS: 0 pipeline: [ { $listLocalSessions: {} }, { $limit: 1 } ] expectEvents: - client: *client events: - commandStartedEvent: commandName: aggregate databaseName: *databaseName command: aggregate: 1 maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: aggregate databaseName: *databaseName command: aggregate: 1 maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: aggregate databaseName: *databaseName command: aggregate: 1 maxTimeMS: { $$exists: false } - description: "timeoutMS applies to whole operation, not individual attempts - listCollections on database" runOnRequirements: - minServerVersion: "4.4" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 4 } data: failCommands: ["listCollections"] blockConnection: true blockTimeMS: 60 errorCode: 7 errorLabels: ["RetryableWriteError"] - name: listCollections object: *database arguments: filter: {} expectError: isTimeoutError: true - description: "operation is retried multiple times for non-zero timeoutMS - listCollections on database" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["listCollections"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: listCollections object: *database arguments: timeoutMS: 500 filter: {} expectEvents: - client: *client events: - commandStartedEvent: commandName: listCollections databaseName: *databaseName command: listCollections: 1 maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: listCollections databaseName: *databaseName command: listCollections: 1 maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: listCollections databaseName: *databaseName command: listCollections: 1 maxTimeMS: { $$type: ["int", "long"] } - description: "operation is retried multiple times if timeoutMS is zero - listCollections on database" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["listCollections"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: listCollections object: *database arguments: timeoutMS: 0 filter: {} expectEvents: - client: *client events: - commandStartedEvent: commandName: listCollections databaseName: *databaseName command: listCollections: 1 maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: listCollections databaseName: *databaseName command: listCollections: 1 maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: listCollections databaseName: *databaseName command: listCollections: 1 maxTimeMS: { $$exists: false } - description: "timeoutMS applies to whole operation, not individual attempts - listCollectionNames on database" runOnRequirements: - minServerVersion: "4.4" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 4 } data: failCommands: ["listCollections"] blockConnection: true blockTimeMS: 60 errorCode: 7 errorLabels: ["RetryableWriteError"] - name: listCollectionNames object: *database arguments: filter: {} expectError: isTimeoutError: true - description: "operation is retried multiple times for non-zero timeoutMS - listCollectionNames on database" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["listCollections"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: listCollectionNames object: *database arguments: timeoutMS: 500 filter: {} expectEvents: - client: *client events: - commandStartedEvent: commandName: listCollections databaseName: *databaseName command: listCollections: 1 maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: listCollections databaseName: *databaseName command: listCollections: 1 maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: listCollections databaseName: *databaseName command: listCollections: 1 maxTimeMS: { $$type: ["int", "long"] } - description: "operation is retried multiple times if timeoutMS is zero - listCollectionNames on database" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["listCollections"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: listCollectionNames object: *database arguments: timeoutMS: 0 filter: {} expectEvents: - client: *client events: - commandStartedEvent: commandName: listCollections databaseName: *databaseName command: listCollections: 1 maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: listCollections databaseName: *databaseName command: listCollections: 1 maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: listCollections databaseName: *databaseName command: listCollections: 1 maxTimeMS: { $$exists: false } - description: "timeoutMS applies to whole operation, not individual attempts - createChangeStream on database" runOnRequirements: - minServerVersion: "4.4" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 4 } data: failCommands: ["aggregate"] blockConnection: true blockTimeMS: 60 errorCode: 7 errorLabels: ["RetryableWriteError"] - name: createChangeStream object: *database arguments: pipeline: [] expectError: isTimeoutError: true - description: "operation is retried multiple times for non-zero timeoutMS - createChangeStream on database" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["aggregate"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: createChangeStream object: *database arguments: timeoutMS: 500 pipeline: [] expectEvents: - client: *client events: - commandStartedEvent: commandName: aggregate databaseName: *databaseName command: aggregate: 1 maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: aggregate databaseName: *databaseName command: aggregate: 1 maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: aggregate databaseName: *databaseName command: aggregate: 1 maxTimeMS: { $$type: ["int", "long"] } - description: "operation is retried multiple times if timeoutMS is zero - createChangeStream on database" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["aggregate"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: createChangeStream object: *database arguments: timeoutMS: 0 pipeline: [] expectEvents: - client: *client events: - commandStartedEvent: commandName: aggregate databaseName: *databaseName command: aggregate: 1 maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: aggregate databaseName: *databaseName command: aggregate: 1 maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: aggregate databaseName: *databaseName command: aggregate: 1 maxTimeMS: { $$exists: false } - description: "timeoutMS applies to whole operation, not individual attempts - aggregate on collection" runOnRequirements: - minServerVersion: "4.4" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 4 } data: failCommands: ["aggregate"] blockConnection: true blockTimeMS: 60 errorCode: 7 errorLabels: ["RetryableWriteError"] - name: aggregate object: *collection arguments: pipeline: [] expectError: isTimeoutError: true - description: "operation is retried multiple times for non-zero timeoutMS - aggregate on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["aggregate"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: aggregate object: *collection arguments: timeoutMS: 500 pipeline: [] expectEvents: - client: *client events: - commandStartedEvent: commandName: aggregate databaseName: *databaseName command: aggregate: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: aggregate databaseName: *databaseName command: aggregate: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: aggregate databaseName: *databaseName command: aggregate: *collectionName maxTimeMS: { $$type: ["int", "long"] } - description: "operation is retried multiple times if timeoutMS is zero - aggregate on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["aggregate"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: aggregate object: *collection arguments: timeoutMS: 0 pipeline: [] expectEvents: - client: *client events: - commandStartedEvent: commandName: aggregate databaseName: *databaseName command: aggregate: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: aggregate databaseName: *databaseName command: aggregate: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: aggregate databaseName: *databaseName command: aggregate: *collectionName maxTimeMS: { $$exists: false } - description: "timeoutMS applies to whole operation, not individual attempts - count on collection" runOnRequirements: - minServerVersion: "4.4" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 4 } data: failCommands: ["count"] blockConnection: true blockTimeMS: 60 errorCode: 7 errorLabels: ["RetryableWriteError"] - name: count object: *collection arguments: filter: {} expectError: isTimeoutError: true - description: "operation is retried multiple times for non-zero timeoutMS - count on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["count"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: count object: *collection arguments: timeoutMS: 500 filter: {} expectEvents: - client: *client events: - commandStartedEvent: commandName: count databaseName: *databaseName command: count: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: count databaseName: *databaseName command: count: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: count databaseName: *databaseName command: count: *collectionName maxTimeMS: { $$type: ["int", "long"] } - description: "operation is retried multiple times if timeoutMS is zero - count on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["count"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: count object: *collection arguments: timeoutMS: 0 filter: {} expectEvents: - client: *client events: - commandStartedEvent: commandName: count databaseName: *databaseName command: count: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: count databaseName: *databaseName command: count: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: count databaseName: *databaseName command: count: *collectionName maxTimeMS: { $$exists: false } - description: "timeoutMS applies to whole operation, not individual attempts - countDocuments on collection" runOnRequirements: - minServerVersion: "4.4" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 4 } data: failCommands: ["aggregate"] blockConnection: true blockTimeMS: 60 errorCode: 7 errorLabels: ["RetryableWriteError"] - name: countDocuments object: *collection arguments: filter: {} expectError: isTimeoutError: true - description: "operation is retried multiple times for non-zero timeoutMS - countDocuments on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["aggregate"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: countDocuments object: *collection arguments: timeoutMS: 500 filter: {} expectEvents: - client: *client events: - commandStartedEvent: commandName: aggregate databaseName: *databaseName command: aggregate: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: aggregate databaseName: *databaseName command: aggregate: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: aggregate databaseName: *databaseName command: aggregate: *collectionName maxTimeMS: { $$type: ["int", "long"] } - description: "operation is retried multiple times if timeoutMS is zero - countDocuments on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["aggregate"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: countDocuments object: *collection arguments: timeoutMS: 0 filter: {} expectEvents: - client: *client events: - commandStartedEvent: commandName: aggregate databaseName: *databaseName command: aggregate: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: aggregate databaseName: *databaseName command: aggregate: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: aggregate databaseName: *databaseName command: aggregate: *collectionName maxTimeMS: { $$exists: false } - description: "timeoutMS applies to whole operation, not individual attempts - estimatedDocumentCount on collection" runOnRequirements: - minServerVersion: "4.4" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 4 } data: failCommands: ["count"] blockConnection: true blockTimeMS: 60 errorCode: 7 errorLabels: ["RetryableWriteError"] - name: estimatedDocumentCount object: *collection expectError: isTimeoutError: true - description: "operation is retried multiple times for non-zero timeoutMS - estimatedDocumentCount on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["count"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: estimatedDocumentCount object: *collection arguments: timeoutMS: 500 expectEvents: - client: *client events: - commandStartedEvent: commandName: count databaseName: *databaseName command: count: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: count databaseName: *databaseName command: count: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: count databaseName: *databaseName command: count: *collectionName maxTimeMS: { $$type: ["int", "long"] } - description: "operation is retried multiple times if timeoutMS is zero - estimatedDocumentCount on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["count"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: estimatedDocumentCount object: *collection arguments: timeoutMS: 0 expectEvents: - client: *client events: - commandStartedEvent: commandName: count databaseName: *databaseName command: count: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: count databaseName: *databaseName command: count: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: count databaseName: *databaseName command: count: *collectionName maxTimeMS: { $$exists: false } - description: "timeoutMS applies to whole operation, not individual attempts - distinct on collection" runOnRequirements: - minServerVersion: "4.4" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 4 } data: failCommands: ["distinct"] blockConnection: true blockTimeMS: 60 errorCode: 7 errorLabels: ["RetryableWriteError"] - name: distinct object: *collection arguments: fieldName: x filter: {} expectError: isTimeoutError: true - description: "operation is retried multiple times for non-zero timeoutMS - distinct on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["distinct"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: distinct object: *collection arguments: timeoutMS: 500 fieldName: x filter: {} expectEvents: - client: *client events: - commandStartedEvent: commandName: distinct databaseName: *databaseName command: distinct: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: distinct databaseName: *databaseName command: distinct: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: distinct databaseName: *databaseName command: distinct: *collectionName maxTimeMS: { $$type: ["int", "long"] } - description: "operation is retried multiple times if timeoutMS is zero - distinct on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["distinct"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: distinct object: *collection arguments: timeoutMS: 0 fieldName: x filter: {} expectEvents: - client: *client events: - commandStartedEvent: commandName: distinct databaseName: *databaseName command: distinct: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: distinct databaseName: *databaseName command: distinct: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: distinct databaseName: *databaseName command: distinct: *collectionName maxTimeMS: { $$exists: false } - description: "timeoutMS applies to whole operation, not individual attempts - find on collection" runOnRequirements: - minServerVersion: "4.4" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 4 } data: failCommands: ["find"] blockConnection: true blockTimeMS: 60 errorCode: 7 errorLabels: ["RetryableWriteError"] - name: find object: *collection arguments: filter: {} expectError: isTimeoutError: true - description: "operation is retried multiple times for non-zero timeoutMS - find on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["find"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: find object: *collection arguments: timeoutMS: 500 filter: {} expectEvents: - client: *client events: - commandStartedEvent: commandName: find databaseName: *databaseName command: find: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: find databaseName: *databaseName command: find: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: find databaseName: *databaseName command: find: *collectionName maxTimeMS: { $$type: ["int", "long"] } - description: "operation is retried multiple times if timeoutMS is zero - find on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["find"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: find object: *collection arguments: timeoutMS: 0 filter: {} expectEvents: - client: *client events: - commandStartedEvent: commandName: find databaseName: *databaseName command: find: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: find databaseName: *databaseName command: find: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: find databaseName: *databaseName command: find: *collectionName maxTimeMS: { $$exists: false } - description: "timeoutMS applies to whole operation, not individual attempts - findOne on collection" runOnRequirements: - minServerVersion: "4.4" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 4 } data: failCommands: ["find"] blockConnection: true blockTimeMS: 60 errorCode: 7 errorLabels: ["RetryableWriteError"] - name: findOne object: *collection arguments: filter: {} expectError: isTimeoutError: true - description: "operation is retried multiple times for non-zero timeoutMS - findOne on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["find"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: findOne object: *collection arguments: timeoutMS: 500 filter: {} expectEvents: - client: *client events: - commandStartedEvent: commandName: find databaseName: *databaseName command: find: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: find databaseName: *databaseName command: find: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: find databaseName: *databaseName command: find: *collectionName maxTimeMS: { $$type: ["int", "long"] } - description: "operation is retried multiple times if timeoutMS is zero - findOne on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["find"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: findOne object: *collection arguments: timeoutMS: 0 filter: {} expectEvents: - client: *client events: - commandStartedEvent: commandName: find databaseName: *databaseName command: find: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: find databaseName: *databaseName command: find: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: find databaseName: *databaseName command: find: *collectionName maxTimeMS: { $$exists: false } - description: "timeoutMS applies to whole operation, not individual attempts - listIndexes on collection" runOnRequirements: - minServerVersion: "4.4" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 4 } data: failCommands: ["listIndexes"] blockConnection: true blockTimeMS: 60 errorCode: 7 errorLabels: ["RetryableWriteError"] - name: listIndexes object: *collection expectError: isTimeoutError: true - description: "operation is retried multiple times for non-zero timeoutMS - listIndexes on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["listIndexes"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: listIndexes object: *collection arguments: timeoutMS: 500 expectEvents: - client: *client events: - commandStartedEvent: commandName: listIndexes databaseName: *databaseName command: listIndexes: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: listIndexes databaseName: *databaseName command: listIndexes: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: listIndexes databaseName: *databaseName command: listIndexes: *collectionName maxTimeMS: { $$type: ["int", "long"] } - description: "operation is retried multiple times if timeoutMS is zero - listIndexes on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["listIndexes"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: listIndexes object: *collection arguments: timeoutMS: 0 expectEvents: - client: *client events: - commandStartedEvent: commandName: listIndexes databaseName: *databaseName command: listIndexes: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: listIndexes databaseName: *databaseName command: listIndexes: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: listIndexes databaseName: *databaseName command: listIndexes: *collectionName maxTimeMS: { $$exists: false } - description: "timeoutMS applies to whole operation, not individual attempts - createChangeStream on collection" runOnRequirements: - minServerVersion: "4.4" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 4 } data: failCommands: ["aggregate"] blockConnection: true blockTimeMS: 60 errorCode: 7 errorLabels: ["RetryableWriteError"] - name: createChangeStream object: *collection arguments: pipeline: [] expectError: isTimeoutError: true - description: "operation is retried multiple times for non-zero timeoutMS - createChangeStream on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["aggregate"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: createChangeStream object: *collection arguments: timeoutMS: 500 pipeline: [] expectEvents: - client: *client events: - commandStartedEvent: commandName: aggregate databaseName: *databaseName command: aggregate: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: aggregate databaseName: *databaseName command: aggregate: *collectionName maxTimeMS: { $$type: ["int", "long"] } - commandStartedEvent: commandName: aggregate databaseName: *databaseName command: aggregate: *collectionName maxTimeMS: { $$type: ["int", "long"] } - description: "operation is retried multiple times if timeoutMS is zero - createChangeStream on collection" operations: - name: failPoint object: testRunner arguments: client: *failPointClient failPoint: configureFailPoint: failCommand mode: { times: 2 } data: failCommands: ["aggregate"] errorCode: 7 closeConnection: false errorLabels: ["RetryableWriteError"] - name: createChangeStream object: *collection arguments: timeoutMS: 0 pipeline: [] expectEvents: - client: *client events: - commandStartedEvent: commandName: aggregate databaseName: *databaseName command: aggregate: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: aggregate databaseName: *databaseName command: aggregate: *collectionName maxTimeMS: { $$exists: false } - commandStartedEvent: commandName: aggregate databaseName: *databaseName command: aggregate: *collectionName maxTimeMS: { $$exists: false }