1170 lines
36 KiB
YAML
1170 lines
36 KiB
YAML
# Tests for resume behavior on server versions that do not support the ResumableChangeStreamError label
|
|
description: "change-streams-resume-allowlist"
|
|
|
|
schemaVersion: "1.7"
|
|
|
|
runOnRequirements:
|
|
- minServerVersion: "3.6"
|
|
topologies: [ replicaset, sharded, load-balanced ]
|
|
serverless: forbid
|
|
|
|
createEntities:
|
|
- client:
|
|
id: &client0 client0
|
|
observeEvents: [ commandStartedEvent ]
|
|
ignoreCommandMonitoringEvents: [ killCursors ]
|
|
useMultipleMongoses: false
|
|
- client:
|
|
id: &globalClient globalClient
|
|
useMultipleMongoses: false
|
|
- database:
|
|
id: &database0 database0
|
|
client: *client0
|
|
databaseName: *database0
|
|
- collection:
|
|
id: &collection0 collection0
|
|
database: *database0
|
|
collectionName: *collection0
|
|
- database:
|
|
id: &globalDatabase0 globalDatabase0
|
|
client: *globalClient
|
|
databaseName: *database0
|
|
- collection:
|
|
id: &globalCollection0 globalCollection0
|
|
database: *globalDatabase0
|
|
collectionName: *collection0
|
|
|
|
tests:
|
|
- description: change stream resumes after a network error
|
|
runOnRequirements:
|
|
- minServerVersion: "4.2"
|
|
operations:
|
|
- name: failPoint
|
|
object: testRunner
|
|
arguments:
|
|
client: *globalClient
|
|
failPoint:
|
|
configureFailPoint: failCommand
|
|
mode: { times: 1 }
|
|
data:
|
|
failCommands: [ getMore ]
|
|
closeConnection: true
|
|
- name: createChangeStream
|
|
object: *collection0
|
|
arguments: { pipeline: [] }
|
|
saveResultAsEntity: &changeStream0 changeStream0
|
|
- name: insertOne
|
|
object: *globalCollection0
|
|
arguments:
|
|
document: { x: 1 }
|
|
- name: iterateUntilDocumentOrError
|
|
object: *changeStream0
|
|
expectResult:
|
|
_id: { $$exists: true }
|
|
documentKey: { $$exists: true }
|
|
operationType: insert
|
|
ns:
|
|
db: *database0
|
|
coll: *collection0
|
|
fullDocument:
|
|
x: 1
|
|
_id: { $$exists: true }
|
|
expectEvents:
|
|
- client: *client0
|
|
ignoreExtraEvents: true
|
|
events:
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline: [ { $changeStream: {} } ]
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
getMore: { $$exists: true }
|
|
collection: *collection0
|
|
commandName: getMore
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline:
|
|
- $changeStream:
|
|
resumeAfter: { $$unsetOrMatches: { $$exists: true } }
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
|
|
- description: change stream resumes after HostUnreachable
|
|
runOnRequirements:
|
|
- minServerVersion: "4.2"
|
|
maxServerVersion: "4.2.99"
|
|
operations:
|
|
- name: failPoint
|
|
object: testRunner
|
|
arguments:
|
|
client: *globalClient
|
|
failPoint:
|
|
configureFailPoint: failCommand
|
|
mode: { times: 1 }
|
|
data:
|
|
failCommands: [ getMore ]
|
|
errorCode: 6
|
|
closeConnection: false
|
|
- name: createChangeStream
|
|
object: *collection0
|
|
arguments: { pipeline: [] }
|
|
saveResultAsEntity: &changeStream0 changeStream0
|
|
- name: insertOne
|
|
object: *globalCollection0
|
|
arguments:
|
|
document: { x: 1 }
|
|
- name: iterateUntilDocumentOrError
|
|
object: *changeStream0
|
|
expectResult:
|
|
_id: { $$exists: true }
|
|
documentKey: { $$exists: true }
|
|
operationType: insert
|
|
ns:
|
|
db: *database0
|
|
coll: *collection0
|
|
fullDocument:
|
|
x: 1
|
|
_id: { $$exists: true }
|
|
expectEvents:
|
|
- client: *client0
|
|
ignoreExtraEvents: true
|
|
events:
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline: [ { $changeStream: {} } ]
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
getMore: { $$exists: true }
|
|
collection: *collection0
|
|
commandName: getMore
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline:
|
|
- $changeStream:
|
|
resumeAfter: { $$unsetOrMatches: { $$exists: true } }
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
|
|
- description: change stream resumes after HostNotFound
|
|
runOnRequirements:
|
|
- minServerVersion: "4.2"
|
|
maxServerVersion: "4.2.99"
|
|
operations:
|
|
- name: failPoint
|
|
object: testRunner
|
|
arguments:
|
|
client: *globalClient
|
|
failPoint:
|
|
configureFailPoint: failCommand
|
|
mode: { times: 1 }
|
|
data:
|
|
failCommands: [ getMore ]
|
|
errorCode: 7
|
|
closeConnection: false
|
|
- name: createChangeStream
|
|
object: *collection0
|
|
arguments: { pipeline: [] }
|
|
saveResultAsEntity: &changeStream0 changeStream0
|
|
- name: insertOne
|
|
object: *globalCollection0
|
|
arguments:
|
|
document: { x: 1 }
|
|
- name: iterateUntilDocumentOrError
|
|
object: *changeStream0
|
|
expectResult:
|
|
_id: { $$exists: true }
|
|
documentKey: { $$exists: true }
|
|
operationType: insert
|
|
ns:
|
|
db: *database0
|
|
coll: *collection0
|
|
fullDocument:
|
|
x: 1
|
|
_id: { $$exists: true }
|
|
expectEvents:
|
|
- client: *client0
|
|
ignoreExtraEvents: true
|
|
events:
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline: [ { $changeStream: {} } ]
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
getMore: { $$exists: true }
|
|
collection: *collection0
|
|
commandName: getMore
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline:
|
|
- $changeStream:
|
|
resumeAfter: { $$unsetOrMatches: { $$exists: true } }
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
|
|
- description: change stream resumes after NetworkTimeout
|
|
runOnRequirements:
|
|
- minServerVersion: "4.2"
|
|
maxServerVersion: "4.2.99"
|
|
operations:
|
|
- name: failPoint
|
|
object: testRunner
|
|
arguments:
|
|
client: *globalClient
|
|
failPoint:
|
|
configureFailPoint: failCommand
|
|
mode: { times: 1 }
|
|
data:
|
|
failCommands: [ getMore ]
|
|
errorCode: 89
|
|
closeConnection: false
|
|
- name: createChangeStream
|
|
object: *collection0
|
|
arguments: { pipeline: [] }
|
|
saveResultAsEntity: &changeStream0 changeStream0
|
|
- name: insertOne
|
|
object: *globalCollection0
|
|
arguments:
|
|
document: { x: 1 }
|
|
- name: iterateUntilDocumentOrError
|
|
object: *changeStream0
|
|
expectResult:
|
|
_id: { $$exists: true }
|
|
documentKey: { $$exists: true }
|
|
operationType: insert
|
|
ns:
|
|
db: *database0
|
|
coll: *collection0
|
|
fullDocument:
|
|
x: 1
|
|
_id: { $$exists: true }
|
|
expectEvents:
|
|
- client: *client0
|
|
ignoreExtraEvents: true
|
|
events:
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline: [ { $changeStream: {} } ]
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
getMore: { $$exists: true }
|
|
collection: *collection0
|
|
commandName: getMore
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline:
|
|
- $changeStream:
|
|
resumeAfter: { $$unsetOrMatches: { $$exists: true } }
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
|
|
- description: change stream resumes after ShutdownInProgress
|
|
runOnRequirements:
|
|
- minServerVersion: "4.2"
|
|
maxServerVersion: "4.2.99"
|
|
operations:
|
|
- name: failPoint
|
|
object: testRunner
|
|
arguments:
|
|
client: *globalClient
|
|
failPoint:
|
|
configureFailPoint: failCommand
|
|
mode: { times: 1 }
|
|
data:
|
|
failCommands: [ getMore ]
|
|
errorCode: 91
|
|
closeConnection: false
|
|
- name: createChangeStream
|
|
object: *collection0
|
|
arguments: { pipeline: [] }
|
|
saveResultAsEntity: &changeStream0 changeStream0
|
|
- name: insertOne
|
|
object: *globalCollection0
|
|
arguments:
|
|
document: { x: 1 }
|
|
- name: iterateUntilDocumentOrError
|
|
object: *changeStream0
|
|
expectResult:
|
|
_id: { $$exists: true }
|
|
documentKey: { $$exists: true }
|
|
operationType: insert
|
|
ns:
|
|
db: *database0
|
|
coll: *collection0
|
|
fullDocument:
|
|
x: 1
|
|
_id: { $$exists: true }
|
|
expectEvents:
|
|
- client: *client0
|
|
ignoreExtraEvents: true
|
|
events:
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline: [ { $changeStream: {} } ]
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
getMore: { $$exists: true }
|
|
collection: *collection0
|
|
commandName: getMore
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline:
|
|
- $changeStream:
|
|
resumeAfter: { $$unsetOrMatches: { $$exists: true } }
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
|
|
- description: change stream resumes after PrimarySteppedDown
|
|
runOnRequirements:
|
|
- minServerVersion: "4.2"
|
|
maxServerVersion: "4.2.99"
|
|
operations:
|
|
- name: failPoint
|
|
object: testRunner
|
|
arguments:
|
|
client: *globalClient
|
|
failPoint:
|
|
configureFailPoint: failCommand
|
|
mode: { times: 1 }
|
|
data:
|
|
failCommands: [ getMore ]
|
|
errorCode: 189
|
|
closeConnection: false
|
|
- name: createChangeStream
|
|
object: *collection0
|
|
arguments: { pipeline: [] }
|
|
saveResultAsEntity: &changeStream0 changeStream0
|
|
- name: insertOne
|
|
object: *globalCollection0
|
|
arguments:
|
|
document: { x: 1 }
|
|
- name: iterateUntilDocumentOrError
|
|
object: *changeStream0
|
|
expectResult:
|
|
_id: { $$exists: true }
|
|
documentKey: { $$exists: true }
|
|
operationType: insert
|
|
ns:
|
|
db: *database0
|
|
coll: *collection0
|
|
fullDocument:
|
|
x: 1
|
|
_id: { $$exists: true }
|
|
expectEvents:
|
|
- client: *client0
|
|
ignoreExtraEvents: true
|
|
events:
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline: [ { $changeStream: {} } ]
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
getMore: { $$exists: true }
|
|
collection: *collection0
|
|
commandName: getMore
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline:
|
|
- $changeStream:
|
|
resumeAfter: { $$unsetOrMatches: { $$exists: true } }
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
|
|
- description: change stream resumes after ExceededTimeLimit
|
|
runOnRequirements:
|
|
- minServerVersion: "4.2"
|
|
maxServerVersion: "4.2.99"
|
|
operations:
|
|
- name: failPoint
|
|
object: testRunner
|
|
arguments:
|
|
client: *globalClient
|
|
failPoint:
|
|
configureFailPoint: failCommand
|
|
mode: { times: 1 }
|
|
data:
|
|
failCommands: [ getMore ]
|
|
errorCode: 262
|
|
closeConnection: false
|
|
- name: createChangeStream
|
|
object: *collection0
|
|
arguments: { pipeline: [] }
|
|
saveResultAsEntity: &changeStream0 changeStream0
|
|
- name: insertOne
|
|
object: *globalCollection0
|
|
arguments:
|
|
document: { x: 1 }
|
|
- name: iterateUntilDocumentOrError
|
|
object: *changeStream0
|
|
expectResult:
|
|
_id: { $$exists: true }
|
|
documentKey: { $$exists: true }
|
|
operationType: insert
|
|
ns:
|
|
db: *database0
|
|
coll: *collection0
|
|
fullDocument:
|
|
x: 1
|
|
_id: { $$exists: true }
|
|
expectEvents:
|
|
- client: *client0
|
|
ignoreExtraEvents: true
|
|
events:
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline: [ { $changeStream: {} } ]
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
getMore: { $$exists: true }
|
|
collection: *collection0
|
|
commandName: getMore
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline:
|
|
- $changeStream:
|
|
resumeAfter: { $$unsetOrMatches: { $$exists: true } }
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
|
|
- description: change stream resumes after SocketException
|
|
runOnRequirements:
|
|
- minServerVersion: "4.2"
|
|
maxServerVersion: "4.2.99"
|
|
operations:
|
|
- name: failPoint
|
|
object: testRunner
|
|
arguments:
|
|
client: *globalClient
|
|
failPoint:
|
|
configureFailPoint: failCommand
|
|
mode: { times: 1 }
|
|
data:
|
|
failCommands: [ getMore ]
|
|
errorCode: 9001
|
|
closeConnection: false
|
|
- name: createChangeStream
|
|
object: *collection0
|
|
arguments: { pipeline: [] }
|
|
saveResultAsEntity: &changeStream0 changeStream0
|
|
- name: insertOne
|
|
object: *globalCollection0
|
|
arguments:
|
|
document: { x: 1 }
|
|
- name: iterateUntilDocumentOrError
|
|
object: *changeStream0
|
|
expectResult:
|
|
_id: { $$exists: true }
|
|
documentKey: { $$exists: true }
|
|
operationType: insert
|
|
ns:
|
|
db: *database0
|
|
coll: *collection0
|
|
fullDocument:
|
|
x: 1
|
|
_id: { $$exists: true }
|
|
expectEvents:
|
|
- client: *client0
|
|
ignoreExtraEvents: true
|
|
events:
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline: [ { $changeStream: {} } ]
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
getMore: { $$exists: true }
|
|
collection: *collection0
|
|
commandName: getMore
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline:
|
|
- $changeStream:
|
|
resumeAfter: { $$unsetOrMatches: { $$exists: true } }
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
|
|
- description: change stream resumes after NotWritablePrimary
|
|
runOnRequirements:
|
|
- minServerVersion: "4.2"
|
|
maxServerVersion: "4.2.99"
|
|
operations:
|
|
- name: failPoint
|
|
object: testRunner
|
|
arguments:
|
|
client: *globalClient
|
|
failPoint:
|
|
configureFailPoint: failCommand
|
|
mode: { times: 1 }
|
|
data:
|
|
failCommands: [ getMore ]
|
|
errorCode: 10107
|
|
closeConnection: false
|
|
- name: createChangeStream
|
|
object: *collection0
|
|
arguments: { pipeline: [] }
|
|
saveResultAsEntity: &changeStream0 changeStream0
|
|
- name: insertOne
|
|
object: *globalCollection0
|
|
arguments:
|
|
document: { x: 1 }
|
|
- name: iterateUntilDocumentOrError
|
|
object: *changeStream0
|
|
expectResult:
|
|
_id: { $$exists: true }
|
|
documentKey: { $$exists: true }
|
|
operationType: insert
|
|
ns:
|
|
db: *database0
|
|
coll: *collection0
|
|
fullDocument:
|
|
x: 1
|
|
_id: { $$exists: true }
|
|
expectEvents:
|
|
- client: *client0
|
|
ignoreExtraEvents: true
|
|
events:
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline: [ { $changeStream: {} } ]
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
getMore: { $$exists: true }
|
|
collection: *collection0
|
|
commandName: getMore
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline:
|
|
- $changeStream:
|
|
resumeAfter: { $$unsetOrMatches: { $$exists: true } }
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
|
|
- description: change stream resumes after InterruptedAtShutdown
|
|
runOnRequirements:
|
|
- minServerVersion: "4.2"
|
|
maxServerVersion: "4.2.99"
|
|
operations:
|
|
- name: failPoint
|
|
object: testRunner
|
|
arguments:
|
|
client: *globalClient
|
|
failPoint:
|
|
configureFailPoint: failCommand
|
|
mode: { times: 1 }
|
|
data:
|
|
failCommands: [ getMore ]
|
|
errorCode: 11600
|
|
closeConnection: false
|
|
- name: createChangeStream
|
|
object: *collection0
|
|
arguments: { pipeline: [] }
|
|
saveResultAsEntity: &changeStream0 changeStream0
|
|
- name: insertOne
|
|
object: *globalCollection0
|
|
arguments:
|
|
document: { x: 1 }
|
|
- name: iterateUntilDocumentOrError
|
|
object: *changeStream0
|
|
expectResult:
|
|
_id: { $$exists: true }
|
|
documentKey: { $$exists: true }
|
|
operationType: insert
|
|
ns:
|
|
db: *database0
|
|
coll: *collection0
|
|
fullDocument:
|
|
x: 1
|
|
_id: { $$exists: true }
|
|
expectEvents:
|
|
- client: *client0
|
|
ignoreExtraEvents: true
|
|
events:
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline: [ { $changeStream: {} } ]
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
getMore: { $$exists: true }
|
|
collection: *collection0
|
|
commandName: getMore
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline:
|
|
- $changeStream:
|
|
resumeAfter: { $$unsetOrMatches: { $$exists: true } }
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
|
|
- description: change stream resumes after InterruptedDueToReplStateChange
|
|
runOnRequirements:
|
|
- minServerVersion: "4.2"
|
|
maxServerVersion: "4.2.99"
|
|
operations:
|
|
- name: failPoint
|
|
object: testRunner
|
|
arguments:
|
|
client: *globalClient
|
|
failPoint:
|
|
configureFailPoint: failCommand
|
|
mode: { times: 1 }
|
|
data:
|
|
failCommands: [ getMore ]
|
|
errorCode: 11602
|
|
closeConnection: false
|
|
- name: createChangeStream
|
|
object: *collection0
|
|
arguments: { pipeline: [] }
|
|
saveResultAsEntity: &changeStream0 changeStream0
|
|
- name: insertOne
|
|
object: *globalCollection0
|
|
arguments:
|
|
document: { x: 1 }
|
|
- name: iterateUntilDocumentOrError
|
|
object: *changeStream0
|
|
expectResult:
|
|
_id: { $$exists: true }
|
|
documentKey: { $$exists: true }
|
|
operationType: insert
|
|
ns:
|
|
db: *database0
|
|
coll: *collection0
|
|
fullDocument:
|
|
x: 1
|
|
_id: { $$exists: true }
|
|
expectEvents:
|
|
- client: *client0
|
|
ignoreExtraEvents: true
|
|
events:
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline: [ { $changeStream: {} } ]
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
getMore: { $$exists: true }
|
|
collection: *collection0
|
|
commandName: getMore
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline:
|
|
- $changeStream:
|
|
resumeAfter: { $$unsetOrMatches: { $$exists: true } }
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
|
|
- description: change stream resumes after NotPrimaryNoSecondaryOk
|
|
runOnRequirements:
|
|
- minServerVersion: "4.2"
|
|
maxServerVersion: "4.2.99"
|
|
operations:
|
|
- name: failPoint
|
|
object: testRunner
|
|
arguments:
|
|
client: *globalClient
|
|
failPoint:
|
|
configureFailPoint: failCommand
|
|
mode: { times: 1 }
|
|
data:
|
|
failCommands: [ getMore ]
|
|
errorCode: 13435
|
|
closeConnection: false
|
|
- name: createChangeStream
|
|
object: *collection0
|
|
arguments: { pipeline: [] }
|
|
saveResultAsEntity: &changeStream0 changeStream0
|
|
- name: insertOne
|
|
object: *globalCollection0
|
|
arguments:
|
|
document: { x: 1 }
|
|
- name: iterateUntilDocumentOrError
|
|
object: *changeStream0
|
|
expectResult:
|
|
_id: { $$exists: true }
|
|
documentKey: { $$exists: true }
|
|
operationType: insert
|
|
ns:
|
|
db: *database0
|
|
coll: *collection0
|
|
fullDocument:
|
|
x: 1
|
|
_id: { $$exists: true }
|
|
expectEvents:
|
|
- client: *client0
|
|
ignoreExtraEvents: true
|
|
events:
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline: [ { $changeStream: {} } ]
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
getMore: { $$exists: true }
|
|
collection: *collection0
|
|
commandName: getMore
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline:
|
|
- $changeStream:
|
|
resumeAfter: { $$unsetOrMatches: { $$exists: true } }
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
|
|
- description: change stream resumes after NotPrimaryOrSecondary
|
|
runOnRequirements:
|
|
- minServerVersion: "4.2"
|
|
maxServerVersion: "4.2.99"
|
|
operations:
|
|
- name: failPoint
|
|
object: testRunner
|
|
arguments:
|
|
client: *globalClient
|
|
failPoint:
|
|
configureFailPoint: failCommand
|
|
mode: { times: 1 }
|
|
data:
|
|
failCommands: [ getMore ]
|
|
errorCode: 13436
|
|
closeConnection: false
|
|
- name: createChangeStream
|
|
object: *collection0
|
|
arguments: { pipeline: [] }
|
|
saveResultAsEntity: &changeStream0 changeStream0
|
|
- name: insertOne
|
|
object: *globalCollection0
|
|
arguments:
|
|
document: { x: 1 }
|
|
- name: iterateUntilDocumentOrError
|
|
object: *changeStream0
|
|
expectResult:
|
|
_id: { $$exists: true }
|
|
documentKey: { $$exists: true }
|
|
operationType: insert
|
|
ns:
|
|
db: *database0
|
|
coll: *collection0
|
|
fullDocument:
|
|
x: 1
|
|
_id: { $$exists: true }
|
|
expectEvents:
|
|
- client: *client0
|
|
ignoreExtraEvents: true
|
|
events:
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline: [ { $changeStream: {} } ]
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
getMore: { $$exists: true }
|
|
collection: *collection0
|
|
commandName: getMore
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline:
|
|
- $changeStream:
|
|
resumeAfter: { $$unsetOrMatches: { $$exists: true } }
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
|
|
- description: change stream resumes after StaleShardVersion
|
|
runOnRequirements:
|
|
- minServerVersion: "4.2"
|
|
maxServerVersion: "4.2.99"
|
|
operations:
|
|
- name: failPoint
|
|
object: testRunner
|
|
arguments:
|
|
client: *globalClient
|
|
failPoint:
|
|
configureFailPoint: failCommand
|
|
mode: { times: 1 }
|
|
data:
|
|
failCommands: [ getMore ]
|
|
errorCode: 63
|
|
closeConnection: false
|
|
- name: createChangeStream
|
|
object: *collection0
|
|
arguments: { pipeline: [] }
|
|
saveResultAsEntity: &changeStream0 changeStream0
|
|
- name: insertOne
|
|
object: *globalCollection0
|
|
arguments:
|
|
document: { x: 1 }
|
|
- name: iterateUntilDocumentOrError
|
|
object: *changeStream0
|
|
expectResult:
|
|
_id: { $$exists: true }
|
|
documentKey: { $$exists: true }
|
|
operationType: insert
|
|
ns:
|
|
db: *database0
|
|
coll: *collection0
|
|
fullDocument:
|
|
x: 1
|
|
_id: { $$exists: true }
|
|
expectEvents:
|
|
- client: *client0
|
|
ignoreExtraEvents: true
|
|
events:
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline: [ { $changeStream: {} } ]
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
getMore: { $$exists: true }
|
|
collection: *collection0
|
|
commandName: getMore
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline:
|
|
- $changeStream:
|
|
resumeAfter: { $$unsetOrMatches: { $$exists: true } }
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
|
|
- description: change stream resumes after StaleEpoch
|
|
runOnRequirements:
|
|
- minServerVersion: "4.2"
|
|
maxServerVersion: "4.2.99"
|
|
operations:
|
|
- name: failPoint
|
|
object: testRunner
|
|
arguments:
|
|
client: *globalClient
|
|
failPoint:
|
|
configureFailPoint: failCommand
|
|
mode: { times: 1 }
|
|
data:
|
|
failCommands: [ getMore ]
|
|
errorCode: 150
|
|
closeConnection: false
|
|
- name: createChangeStream
|
|
object: *collection0
|
|
arguments: { pipeline: [] }
|
|
saveResultAsEntity: &changeStream0 changeStream0
|
|
- name: insertOne
|
|
object: *globalCollection0
|
|
arguments:
|
|
document: { x: 1 }
|
|
- name: iterateUntilDocumentOrError
|
|
object: *changeStream0
|
|
expectResult:
|
|
_id: { $$exists: true }
|
|
documentKey: { $$exists: true }
|
|
operationType: insert
|
|
ns:
|
|
db: *database0
|
|
coll: *collection0
|
|
fullDocument:
|
|
x: 1
|
|
_id: { $$exists: true }
|
|
expectEvents:
|
|
- client: *client0
|
|
ignoreExtraEvents: true
|
|
events:
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline: [ { $changeStream: {} } ]
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
getMore: { $$exists: true }
|
|
collection: *collection0
|
|
commandName: getMore
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline:
|
|
- $changeStream:
|
|
resumeAfter: { $$unsetOrMatches: { $$exists: true } }
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
|
|
- description: change stream resumes after RetryChangeStream
|
|
runOnRequirements:
|
|
- minServerVersion: "4.2"
|
|
maxServerVersion: "4.2.99"
|
|
operations:
|
|
- name: failPoint
|
|
object: testRunner
|
|
arguments:
|
|
client: *globalClient
|
|
failPoint:
|
|
configureFailPoint: failCommand
|
|
mode: { times: 1 }
|
|
data:
|
|
failCommands: [ getMore ]
|
|
errorCode: 234
|
|
closeConnection: false
|
|
- name: createChangeStream
|
|
object: *collection0
|
|
arguments: { pipeline: [] }
|
|
saveResultAsEntity: &changeStream0 changeStream0
|
|
- name: insertOne
|
|
object: *globalCollection0
|
|
arguments:
|
|
document: { x: 1 }
|
|
- name: iterateUntilDocumentOrError
|
|
object: *changeStream0
|
|
expectResult:
|
|
_id: { $$exists: true }
|
|
documentKey: { $$exists: true }
|
|
operationType: insert
|
|
ns:
|
|
db: *database0
|
|
coll: *collection0
|
|
fullDocument:
|
|
x: 1
|
|
_id: { $$exists: true }
|
|
expectEvents:
|
|
- client: *client0
|
|
ignoreExtraEvents: true
|
|
events:
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline: [ { $changeStream: {} } ]
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
getMore: { $$exists: true }
|
|
collection: *collection0
|
|
commandName: getMore
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline:
|
|
- $changeStream:
|
|
resumeAfter: { $$unsetOrMatches: { $$exists: true } }
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
|
|
- description: change stream resumes after FailedToSatisfyReadPreference
|
|
runOnRequirements:
|
|
- minServerVersion: "4.2"
|
|
maxServerVersion: "4.2.99"
|
|
operations:
|
|
- name: failPoint
|
|
object: testRunner
|
|
arguments:
|
|
client: *globalClient
|
|
failPoint:
|
|
configureFailPoint: failCommand
|
|
mode: { times: 1 }
|
|
data:
|
|
failCommands: [ getMore ]
|
|
errorCode: 133
|
|
closeConnection: false
|
|
- name: createChangeStream
|
|
object: *collection0
|
|
arguments: { pipeline: [] }
|
|
saveResultAsEntity: &changeStream0 changeStream0
|
|
- name: insertOne
|
|
object: *globalCollection0
|
|
arguments:
|
|
document: { x: 1 }
|
|
- name: iterateUntilDocumentOrError
|
|
object: *changeStream0
|
|
expectResult:
|
|
_id: { $$exists: true }
|
|
documentKey: { $$exists: true }
|
|
operationType: insert
|
|
ns:
|
|
db: *database0
|
|
coll: *collection0
|
|
fullDocument:
|
|
x: 1
|
|
_id: { $$exists: true }
|
|
expectEvents:
|
|
- client: *client0
|
|
ignoreExtraEvents: true
|
|
events:
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline: [ { $changeStream: {} } ]
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
getMore: { $$exists: true }
|
|
collection: *collection0
|
|
commandName: getMore
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline:
|
|
- $changeStream:
|
|
resumeAfter: { $$unsetOrMatches: { $$exists: true } }
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
|
|
# CursorNotFound is special-cased to be resumable regardless of server versions or error labels, so this test has
|
|
# no maxWireVersion.
|
|
- description: change stream resumes after CursorNotFound
|
|
runOnRequirements:
|
|
- minServerVersion: "4.2"
|
|
operations:
|
|
- name: failPoint
|
|
object: testRunner
|
|
arguments:
|
|
client: *globalClient
|
|
failPoint:
|
|
configureFailPoint: failCommand
|
|
mode: { times: 1 }
|
|
data:
|
|
failCommands: [ getMore ]
|
|
errorCode: 43
|
|
closeConnection: false
|
|
- name: createChangeStream
|
|
object: *collection0
|
|
arguments: { pipeline: [] }
|
|
saveResultAsEntity: &changeStream0 changeStream0
|
|
- name: insertOne
|
|
object: *globalCollection0
|
|
arguments:
|
|
document: { x: 1 }
|
|
- name: iterateUntilDocumentOrError
|
|
object: *changeStream0
|
|
expectResult:
|
|
_id: { $$exists: true }
|
|
documentKey: { $$exists: true }
|
|
operationType: insert
|
|
ns:
|
|
db: *database0
|
|
coll: *collection0
|
|
fullDocument:
|
|
x: 1
|
|
_id: { $$exists: true }
|
|
expectEvents:
|
|
- client: *client0
|
|
ignoreExtraEvents: true
|
|
events:
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline: [ { $changeStream: {} } ]
|
|
commandName: aggregate
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
getMore: { $$exists: true }
|
|
collection: *collection0
|
|
commandName: getMore
|
|
databaseName: *database0
|
|
- commandStartedEvent:
|
|
command:
|
|
aggregate: *collection0
|
|
cursor: {}
|
|
pipeline:
|
|
- $changeStream:
|
|
resumeAfter: { $$unsetOrMatches: { $$exists: true } }
|
|
commandName: aggregate
|
|
databaseName: *database0
|