bson/testdata/change-streams/change-streams-resume-allowlist.yml
2025-03-17 20:58:26 +01:00

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