137 lines
3.9 KiB
YAML
137 lines
3.9 KiB
YAML
description: "retryable-writes bulkWrite serverErrors"
|
|
|
|
schemaVersion: "1.3"
|
|
|
|
runOnRequirements:
|
|
- minServerVersion: "4.0"
|
|
topologies: [ replicaset ]
|
|
- minServerVersion: "4.1.7"
|
|
topologies: [ sharded, load-balanced ]
|
|
|
|
createEntities:
|
|
- client:
|
|
id: &client0 client0
|
|
useMultipleMongoses: false
|
|
observeEvents: [ commandStartedEvent ]
|
|
- database:
|
|
id: &database0 database0
|
|
client: *client0
|
|
databaseName: &databaseName retryable-writes-tests
|
|
- collection:
|
|
id: &collection0 collection0
|
|
database: *database0
|
|
collectionName: &collectionName coll
|
|
|
|
initialData:
|
|
- collectionName: *collectionName
|
|
databaseName: *databaseName
|
|
documents:
|
|
- { _id: 1, x: 11 }
|
|
- { _id: 2, x: 22 }
|
|
|
|
tests:
|
|
- description: "BulkWrite succeeds after retryable writeConcernError in first batch"
|
|
runOnRequirements:
|
|
- minServerVersion: "4.3.1" # failCommand errorLabels option
|
|
operations:
|
|
- name: failPoint
|
|
object: testRunner
|
|
arguments:
|
|
client: *client0
|
|
failPoint:
|
|
configureFailPoint: failCommand
|
|
mode: { times: 1 }
|
|
data:
|
|
failCommands: [ insert ]
|
|
errorLabels: [RetryableWriteError] # top-level error labels
|
|
writeConcernError:
|
|
code: 91 # ShutdownInProgress
|
|
errmsg: "Replication is being shut down"
|
|
- name: bulkWrite
|
|
object: *collection0
|
|
arguments:
|
|
requests:
|
|
- insertOne:
|
|
document: { _id: 3, x: 33 }
|
|
- deleteOne:
|
|
filter: { _id: 2 }
|
|
expectResult:
|
|
deletedCount: 1
|
|
insertedCount: 1
|
|
matchedCount: 0
|
|
modifiedCount: 0
|
|
upsertedCount: 0
|
|
insertedIds: { $$unsetOrMatches: { 0: 3 } }
|
|
upsertedIds: { }
|
|
expectEvents:
|
|
- client: *client0
|
|
events:
|
|
- commandStartedEvent:
|
|
command:
|
|
insert: *collectionName
|
|
documents: [{ _id: 3, x: 33 }]
|
|
commandName: insert
|
|
databaseName: *databaseName
|
|
- commandStartedEvent:
|
|
command:
|
|
insert: *collectionName
|
|
documents: [{ _id: 3, x: 33 }]
|
|
commandName: insert
|
|
databaseName: *databaseName
|
|
- commandStartedEvent:
|
|
command:
|
|
delete: *collectionName
|
|
deletes:
|
|
-
|
|
q: { _id: 2 }
|
|
limit: 1
|
|
commandName: delete
|
|
databaseName: *databaseName
|
|
outcome:
|
|
- collectionName: *collectionName
|
|
databaseName: *databaseName
|
|
documents:
|
|
- { _id: 1, x: 11 }
|
|
- { _id: 3, x: 33 } # The write was still applied
|
|
-
|
|
description: 'BulkWrite fails with a RetryableWriteError label after two connection failures'
|
|
operations:
|
|
-
|
|
name: failPoint
|
|
object: testRunner
|
|
arguments:
|
|
client: *client0
|
|
failPoint:
|
|
configureFailPoint: failCommand
|
|
mode: { times: 2 }
|
|
data:
|
|
failCommands: [ update ]
|
|
closeConnection: true
|
|
-
|
|
object: *collection0
|
|
name: bulkWrite
|
|
arguments:
|
|
requests:
|
|
-
|
|
deleteOne:
|
|
filter: { _id: 1 }
|
|
-
|
|
insertOne:
|
|
document: { _id: 3, x: 33 }
|
|
-
|
|
updateOne:
|
|
filter: { _id: 2 }
|
|
update: { $inc: { x: 1 } }
|
|
ordered: true
|
|
expectError:
|
|
isError: true
|
|
errorLabelsContain:
|
|
- RetryableWriteError
|
|
outcome:
|
|
-
|
|
collectionName: *collectionName
|
|
databaseName: *databaseName
|
|
documents:
|
|
- { _id: 2, x: 22 }
|
|
- { _id: 3, x: 33 }
|