mongo 2.16.4 → 2.17.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (123) hide show
  1. checksums.yaml +4 -4
  2. checksums.yaml.gz.sig +0 -0
  3. data/README.md +1 -1
  4. data/lib/mongo/auth/aws/request.rb +0 -1
  5. data/lib/mongo/client.rb +4 -0
  6. data/lib/mongo/collection/view/aggregation.rb +62 -17
  7. data/lib/mongo/collection/view/builder/aggregation.rb +11 -13
  8. data/lib/mongo/collection/view/builder/map_reduce.rb +5 -8
  9. data/lib/mongo/collection/view/change_stream.rb +7 -3
  10. data/lib/mongo/collection/view/iterable.rb +3 -20
  11. data/lib/mongo/collection/view/map_reduce.rb +3 -14
  12. data/lib/mongo/collection/view/readable.rb +24 -1
  13. data/lib/mongo/collection/view/writable.rb +23 -0
  14. data/lib/mongo/collection/view.rb +0 -1
  15. data/lib/mongo/collection.rb +21 -1
  16. data/lib/mongo/database/view.rb +4 -2
  17. data/lib/mongo/database.rb +6 -6
  18. data/lib/mongo/error/snapshot_session_invalid_server_version.rb +31 -0
  19. data/lib/mongo/error/snapshot_session_transaction_prohibited.rb +30 -0
  20. data/lib/mongo/error.rb +2 -0
  21. data/lib/mongo/operation/delete/op_msg.rb +2 -1
  22. data/lib/mongo/operation/find/builder/command.rb +1 -0
  23. data/lib/mongo/operation/result.rb +6 -0
  24. data/lib/mongo/operation/shared/executable.rb +4 -0
  25. data/lib/mongo/operation/shared/sessions_supported.rb +18 -2
  26. data/lib/mongo/operation/update/op_msg.rb +2 -1
  27. data/lib/mongo/query_cache.rb +2 -12
  28. data/lib/mongo/server/description/features.rb +3 -1
  29. data/lib/mongo/server/monitor/connection.rb +4 -10
  30. data/lib/mongo/server_selector/base.rb +26 -4
  31. data/lib/mongo/session.rb +19 -0
  32. data/lib/mongo/socket/ocsp_cache.rb +2 -3
  33. data/lib/mongo/socket.rb +1 -5
  34. data/lib/mongo/utils.rb +0 -6
  35. data/lib/mongo/version.rb +1 -1
  36. data/mongo.gemspec +1 -1
  37. data/spec/integration/query_cache_spec.rb +0 -159
  38. data/spec/integration/read_preference_spec.rb +16 -12
  39. data/spec/integration/sdam_events_spec.rb +0 -40
  40. data/spec/lite_spec_helper.rb +0 -7
  41. data/spec/mongo/collection/view/aggregation_spec.rb +71 -95
  42. data/spec/mongo/collection/view/change_stream_spec.rb +1 -1
  43. data/spec/mongo/collection/view/map_reduce_spec.rb +14 -17
  44. data/spec/mongo/collection/view/readable_spec.rb +0 -56
  45. data/spec/mongo/operation/read_preference_op_msg_spec.rb +24 -1
  46. data/spec/mongo/query_cache_spec.rb +0 -165
  47. data/spec/mongo/server_selector_spec.rb +136 -15
  48. data/spec/mongo/socket/ssl_spec.rb +26 -58
  49. data/spec/mongo/utils_spec.rb +0 -14
  50. data/spec/runners/auth.rb +1 -1
  51. data/spec/runners/change_streams/spec.rb +1 -1
  52. data/spec/runners/cmap.rb +1 -1
  53. data/spec/runners/command_monitoring.rb +1 -1
  54. data/spec/runners/connection_string.rb +1 -1
  55. data/spec/runners/crud/spec.rb +3 -1
  56. data/spec/runners/crud/verifier.rb +1 -2
  57. data/spec/runners/gridfs.rb +1 -1
  58. data/spec/runners/read_write_concern_document.rb +1 -1
  59. data/spec/runners/sdam.rb +1 -1
  60. data/spec/runners/server_selection.rb +1 -1
  61. data/spec/runners/server_selection_rtt.rb +1 -1
  62. data/spec/runners/unified/assertions.rb +3 -1
  63. data/spec/runners/unified/crud_operations.rb +77 -23
  64. data/spec/runners/unified/ddl_operations.rb +29 -1
  65. data/spec/runners/unified/entity_map.rb +3 -3
  66. data/spec/runners/unified/support_operations.rb +6 -1
  67. data/spec/runners/unified/test.rb +15 -3
  68. data/spec/runners/unified/test_group.rb +1 -1
  69. data/spec/shared/share/Dockerfile.erb +3 -3
  70. data/spec/shared/shlib/server.sh +1 -1
  71. data/spec/spec_tests/data/crud_unified/aggregate-let.yml +138 -0
  72. data/spec/spec_tests/data/crud_unified/aggregate-write-readPreference.yml +155 -0
  73. data/spec/spec_tests/data/crud_unified/db-aggregate-write-readPreference.yml +151 -0
  74. data/spec/spec_tests/data/crud_unified/deleteMany-let.yml +91 -0
  75. data/spec/spec_tests/data/crud_unified/deleteOne-let.yml +89 -0
  76. data/spec/spec_tests/data/crud_unified/find-let.yml +71 -0
  77. data/spec/spec_tests/data/crud_unified/findOneAndDelete-let.yml +88 -0
  78. data/spec/spec_tests/data/crud_unified/findOneAndReplace-let.yml +94 -0
  79. data/spec/spec_tests/data/crud_unified/findOneAndUpdate-let.yml +96 -0
  80. data/spec/spec_tests/data/crud_unified/updateMany-let.yml +103 -0
  81. data/spec/spec_tests/data/crud_unified/updateOne-let.yml +98 -0
  82. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/DefaultNoMaxStaleness.yml +2 -2
  83. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/LastUpdateTime.yml +3 -3
  84. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/Nearest.yml +3 -3
  85. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/Nearest2.yml +3 -3
  86. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/PrimaryPreferred.yml +2 -2
  87. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/PrimaryPreferred_tags.yml +2 -2
  88. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/Secondary.yml +4 -4
  89. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/SecondaryPreferred.yml +2 -2
  90. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/SecondaryPreferred_tags.yml +4 -4
  91. data/spec/spec_tests/data/max_staleness/ReplicaSetNoPrimary/ZeroMaxStaleness.yml +2 -2
  92. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/DefaultNoMaxStaleness.yml +2 -2
  93. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/LastUpdateTime.yml +3 -3
  94. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/LongHeartbeat.yml +2 -2
  95. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/LongHeartbeat2.yml +2 -2
  96. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/MaxStalenessTooSmall.yml +2 -2
  97. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/MaxStalenessWithModePrimary.yml +2 -2
  98. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Nearest.yml +3 -3
  99. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Nearest2.yml +3 -3
  100. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Nearest_tags.yml +2 -2
  101. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/PrimaryPreferred.yml +2 -2
  102. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/SecondaryPreferred.yml +2 -2
  103. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/SecondaryPreferred_tags.yml +5 -5
  104. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/SecondaryPreferred_tags2.yml +3 -3
  105. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Secondary_tags.yml +5 -5
  106. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/Secondary_tags2.yml +3 -3
  107. data/spec/spec_tests/data/max_staleness/ReplicaSetWithPrimary/ZeroMaxStaleness.yml +2 -2
  108. data/spec/spec_tests/data/max_staleness/Sharded/SmallMaxStaleness.yml +2 -2
  109. data/spec/spec_tests/data/max_staleness/Single/SmallMaxStaleness.yml +1 -1
  110. data/spec/spec_tests/data/max_staleness/Unknown/SmallMaxStaleness.yml +1 -1
  111. data/spec/spec_tests/data/sessions_unified/snapshot-sessions-not-supported-client-error.yml +69 -0
  112. data/spec/spec_tests/data/sessions_unified/snapshot-sessions-not-supported-server-error.yml +102 -0
  113. data/spec/spec_tests/data/sessions_unified/snapshot-sessions-unsupported-ops.yml +258 -0
  114. data/spec/spec_tests/data/sessions_unified/snapshot-sessions.yml +482 -0
  115. data/spec/spec_tests/seed_list_discovery_spec.rb +1 -1
  116. data/spec/spec_tests/sessions_unified_spec.rb +13 -0
  117. data/spec/support/certificates/atlas-ocsp-ca.crt +47 -40
  118. data/spec/support/certificates/atlas-ocsp.crt +106 -101
  119. data/spec/support/utils.rb +0 -31
  120. data.tar.gz.sig +0 -0
  121. metadata +1084 -1058
  122. metadata.gz.sig +0 -0
  123. data/spec/integration/find_options_spec.rb +0 -227
@@ -12,14 +12,14 @@ topology_description:
12
12
  avg_rtt_ms: 5
13
13
  lastUpdateTime: 0
14
14
  lastWrite: {lastWriteDate: {$numberLong: "125002"}}
15
- maxWireVersion: 5
15
+ maxWireVersion: 6
16
16
  - &2
17
17
  address: b:27017
18
18
  type: RSSecondary
19
19
  avg_rtt_ms: 5
20
20
  lastUpdateTime: 0
21
21
  lastWrite: {lastWriteDate: {$numberLong: "2"}}
22
- maxWireVersion: 5
22
+ maxWireVersion: 6
23
23
  tags:
24
24
  data_center: tokyo
25
25
  - &3
@@ -28,7 +28,7 @@ topology_description:
28
28
  avg_rtt_ms: 5
29
29
  lastUpdateTime: 0
30
30
  lastWrite: {lastWriteDate: {$numberLong: "1"}} # Too stale.
31
- maxWireVersion: 5
31
+ maxWireVersion: 6
32
32
  tags:
33
33
  data_center: nyc
34
34
  read_preference:
@@ -8,14 +8,14 @@ topology_description:
8
8
  type: RSPrimary
9
9
  avg_rtt_ms: 5
10
10
  lastUpdateTime: 0
11
- maxWireVersion: 5
11
+ maxWireVersion: 6
12
12
  lastWrite: {lastWriteDate: {$numberLong: "2"}}
13
13
  - &2
14
14
  address: b:27017
15
15
  type: RSSecondary
16
16
  avg_rtt_ms: 5
17
17
  lastUpdateTime: 0
18
- maxWireVersion: 4 # Incompatible.
18
+ maxWireVersion: 6
19
19
  lastWrite: {lastWriteDate: {$numberLong: "1"}}
20
20
  read_preference:
21
21
  mode: Nearest
@@ -9,14 +9,14 @@ topology_description:
9
9
  type: Mongos
10
10
  avg_rtt_ms: 5
11
11
  lastUpdateTime: 0
12
- maxWireVersion: 5
12
+ maxWireVersion: 6
13
13
  lastWrite: {lastWriteDate: {$numberLong: "1"}}
14
14
  - &2
15
15
  address: b:27017
16
16
  type: Mongos
17
17
  avg_rtt_ms: 50 # Too far.
18
18
  lastUpdateTime: 0
19
- maxWireVersion: 5
19
+ maxWireVersion: 6
20
20
  lastWrite: {lastWriteDate: {$numberLong: "1"}}
21
21
  read_preference:
22
22
  mode: Nearest
@@ -9,7 +9,7 @@ topology_description:
9
9
  type: Standalone
10
10
  avg_rtt_ms: 5
11
11
  lastUpdateTime: 0
12
- maxWireVersion: 5
12
+ maxWireVersion: 6
13
13
  lastWrite: {lastWriteDate: {$numberLong: "1"}}
14
14
  read_preference:
15
15
  mode: Nearest
@@ -7,7 +7,7 @@ topology_description:
7
7
  - &1
8
8
  address: a:27017
9
9
  type: Unknown
10
- maxWireVersion: 5
10
+ maxWireVersion: 6
11
11
  read_preference:
12
12
  mode: Nearest
13
13
  maxStalenessSeconds: 1
@@ -0,0 +1,69 @@
1
+ description: snapshot-sessions-not-supported-client-error
2
+
3
+ schemaVersion: "1.0"
4
+
5
+ runOnRequirements:
6
+ - minServerVersion: "3.6"
7
+ maxServerVersion: "4.4.99"
8
+
9
+ createEntities:
10
+ - client:
11
+ id: &client0 client0
12
+ observeEvents: [ commandStartedEvent, commandFailedEvent ]
13
+ - database:
14
+ id: &database0Name database0
15
+ client: *client0
16
+ databaseName: *database0Name
17
+ - collection:
18
+ id: &collection0Name collection0
19
+ database: *database0Name
20
+ collectionName: *collection0Name
21
+ - session:
22
+ id: session0
23
+ client: client0
24
+ sessionOptions:
25
+ snapshot: true
26
+
27
+ initialData:
28
+ - collectionName: *collection0Name
29
+ databaseName: *database0Name
30
+ documents:
31
+ - { _id: 1, x: 11 }
32
+
33
+ tests:
34
+ - description: Client error on find with snapshot
35
+ operations:
36
+ - name: find
37
+ object: collection0
38
+ arguments:
39
+ session: session0
40
+ filter: {}
41
+ expectError:
42
+ isClientError: true
43
+ errorContains: Snapshot reads require MongoDB 5.0 or later
44
+ expectEvents: []
45
+
46
+ - description: Client error on aggregate with snapshot
47
+ operations:
48
+ - name: aggregate
49
+ object: collection0
50
+ arguments:
51
+ session: session0
52
+ pipeline: []
53
+ expectError:
54
+ isClientError: true
55
+ errorContains: Snapshot reads require MongoDB 5.0 or later
56
+ expectEvents: []
57
+
58
+ - description: Client error on distinct with snapshot
59
+ operations:
60
+ - name: distinct
61
+ object: collection0
62
+ arguments:
63
+ fieldName: x
64
+ filter: {}
65
+ session: session0
66
+ expectError:
67
+ isClientError: true
68
+ errorContains: Snapshot reads require MongoDB 5.0 or later
69
+ expectEvents: []
@@ -0,0 +1,102 @@
1
+ description: snapshot-sessions-not-supported-server-error
2
+
3
+ schemaVersion: "1.0"
4
+
5
+ runOnRequirements:
6
+ - minServerVersion: "5.0"
7
+ topologies: [ single ]
8
+
9
+ createEntities:
10
+ - client:
11
+ id: &client0 client0
12
+ observeEvents: [ commandStartedEvent, commandFailedEvent ]
13
+ - database:
14
+ id: &database0Name database0
15
+ client: *client0
16
+ databaseName: *database0Name
17
+ - collection:
18
+ id: &collection0Name collection0
19
+ database: *database0Name
20
+ collectionName: *collection0Name
21
+ - session:
22
+ id: session0
23
+ client: client0
24
+ sessionOptions:
25
+ snapshot: true
26
+
27
+ initialData:
28
+ - collectionName: *collection0Name
29
+ databaseName: *database0Name
30
+ documents:
31
+ - { _id: 1, x: 11 }
32
+
33
+ tests:
34
+ - description: Server returns an error on find with snapshot
35
+ operations:
36
+ - name: find
37
+ object: collection0
38
+ arguments:
39
+ session: session0
40
+ filter: {}
41
+ expectError:
42
+ isError: true
43
+ isClientError: false
44
+ expectEvents:
45
+ - client: client0
46
+ events:
47
+ - commandStartedEvent:
48
+ command:
49
+ find: collection0
50
+ readConcern:
51
+ level: snapshot
52
+ atClusterTime:
53
+ "$$exists": false
54
+ - commandFailedEvent:
55
+ commandName: find
56
+
57
+ - description: Server returns an error on aggregate with snapshot
58
+ operations:
59
+ - name: aggregate
60
+ object: collection0
61
+ arguments:
62
+ session: session0
63
+ pipeline: []
64
+ expectError:
65
+ isError: true
66
+ isClientError: false
67
+ expectEvents:
68
+ - client: client0
69
+ events:
70
+ - commandStartedEvent:
71
+ command:
72
+ aggregate: collection0
73
+ readConcern:
74
+ level: snapshot
75
+ atClusterTime:
76
+ "$$exists": false
77
+ - commandFailedEvent:
78
+ commandName: aggregate
79
+
80
+ - description: Server returns an error on distinct with snapshot
81
+ operations:
82
+ - name: distinct
83
+ object: collection0
84
+ arguments:
85
+ fieldName: x
86
+ filter: {}
87
+ session: session0
88
+ expectError:
89
+ isError: true
90
+ isClientError: false
91
+ expectEvents:
92
+ - client: client0
93
+ events:
94
+ - commandStartedEvent:
95
+ command:
96
+ distinct: collection0
97
+ readConcern:
98
+ level: snapshot
99
+ atClusterTime:
100
+ "$$exists": false
101
+ - commandFailedEvent:
102
+ commandName: distinct
@@ -0,0 +1,258 @@
1
+ description: snapshot-sessions-unsupported-ops
2
+
3
+ schemaVersion: "1.0"
4
+
5
+ runOnRequirements:
6
+ - minServerVersion: "5.0"
7
+ topologies: [replicaset, sharded-replicaset]
8
+
9
+ createEntities:
10
+ - client:
11
+ id: &client0 client0
12
+ observeEvents: [ commandStartedEvent, commandFailedEvent ]
13
+ - database:
14
+ id: &database0Name database0
15
+ client: *client0
16
+ databaseName: *database0Name
17
+ - collection:
18
+ id: &collection0Name collection0
19
+ database: *database0Name
20
+ collectionName: *collection0Name
21
+ - session:
22
+ id: session0
23
+ client: client0
24
+ sessionOptions:
25
+ snapshot: true
26
+
27
+ initialData:
28
+ - collectionName: *collection0Name
29
+ databaseName: *database0Name
30
+ documents:
31
+ - { _id: 1, x: 11 }
32
+
33
+ tests:
34
+ - description: Server returns an error on insertOne with snapshot
35
+ # Skip on sharded clusters due to SERVER-58176.
36
+ runOnRequirements:
37
+ - topologies: [replicaset]
38
+ operations:
39
+ - name: insertOne
40
+ object: collection0
41
+ arguments:
42
+ session: session0
43
+ document:
44
+ _id: 22
45
+ x: 22
46
+ expectError:
47
+ isError: true
48
+ isClientError: false
49
+ expectEvents:
50
+ - client: client0
51
+ events:
52
+ - commandStartedEvent:
53
+ command:
54
+ insert: collection0
55
+ readConcern:
56
+ level: snapshot
57
+ atClusterTime:
58
+ "$$exists": false
59
+ - commandFailedEvent:
60
+ commandName: insert
61
+
62
+ - description: Server returns an error on insertMany with snapshot
63
+ # Skip on sharded clusters due to SERVER-58176.
64
+ runOnRequirements:
65
+ - topologies: [replicaset]
66
+ operations:
67
+ - name: insertMany
68
+ object: collection0
69
+ arguments:
70
+ session: session0
71
+ documents:
72
+ - _id: 22
73
+ x: 22
74
+ - _id: 33
75
+ x: 33
76
+ expectError:
77
+ isError: true
78
+ isClientError: false
79
+ expectEvents:
80
+ - client: client0
81
+ events:
82
+ - commandStartedEvent:
83
+ command:
84
+ insert: collection0
85
+ readConcern:
86
+ level: snapshot
87
+ atClusterTime:
88
+ "$$exists": false
89
+ - commandFailedEvent:
90
+ commandName: insert
91
+
92
+ - description: Server returns an error on deleteOne with snapshot
93
+ # Skip on sharded clusters due to SERVER-58176.
94
+ runOnRequirements:
95
+ - topologies: [replicaset]
96
+ operations:
97
+ - name: deleteOne
98
+ object: collection0
99
+ arguments:
100
+ session: session0
101
+ filter: {}
102
+ expectError:
103
+ isError: true
104
+ isClientError: false
105
+ expectEvents:
106
+ - client: client0
107
+ events:
108
+ - commandStartedEvent:
109
+ command:
110
+ delete: collection0
111
+ readConcern:
112
+ level: snapshot
113
+ atClusterTime:
114
+ "$$exists": false
115
+ - commandFailedEvent:
116
+ commandName: delete
117
+
118
+ - description: Server returns an error on updateOne with snapshot
119
+ # Skip on sharded clusters due to SERVER-58176.
120
+ runOnRequirements:
121
+ - topologies: [replicaset]
122
+ operations:
123
+ - name: updateOne
124
+ object: collection0
125
+ arguments:
126
+ session: session0
127
+ filter: { _id: 1 }
128
+ update: { $inc: { x: 1 } }
129
+ expectError:
130
+ isError: true
131
+ isClientError: false
132
+ expectEvents:
133
+ - client: client0
134
+ events:
135
+ - commandStartedEvent:
136
+ command:
137
+ update: collection0
138
+ readConcern:
139
+ level: snapshot
140
+ atClusterTime:
141
+ "$$exists": false
142
+ - commandFailedEvent:
143
+ commandName: update
144
+
145
+ - description: Server returns an error on findOneAndUpdate with snapshot
146
+ operations:
147
+ - name: findOneAndUpdate
148
+ object: collection0
149
+ arguments:
150
+ session: session0
151
+ filter: { _id: 1 }
152
+ update: { $inc: { x: 1 } }
153
+ expectError:
154
+ isError: true
155
+ isClientError: false
156
+ expectEvents:
157
+ - client: client0
158
+ events:
159
+ - commandStartedEvent:
160
+ command:
161
+ findAndModify: collection0
162
+ readConcern:
163
+ level: snapshot
164
+ atClusterTime:
165
+ "$$exists": false
166
+ - commandFailedEvent:
167
+ commandName: findAndModify
168
+
169
+ - description: Server returns an error on listDatabases with snapshot
170
+ operations:
171
+ - name: listDatabases
172
+ object: client0
173
+ arguments:
174
+ session: session0
175
+ expectError:
176
+ isError: true
177
+ isClientError: false
178
+ expectEvents:
179
+ - client: client0
180
+ events:
181
+ - commandStartedEvent:
182
+ command:
183
+ listDatabases: 1
184
+ readConcern:
185
+ level: snapshot
186
+ atClusterTime:
187
+ "$$exists": false
188
+ - commandFailedEvent:
189
+ commandName: listDatabases
190
+
191
+ - description: Server returns an error on listCollections with snapshot
192
+ operations:
193
+ - name: listCollections
194
+ object: database0
195
+ arguments:
196
+ session: session0
197
+ expectError:
198
+ isError: true
199
+ isClientError: false
200
+ expectEvents:
201
+ - client: client0
202
+ events:
203
+ - commandStartedEvent:
204
+ command:
205
+ listCollections: 1
206
+ readConcern:
207
+ level: snapshot
208
+ atClusterTime:
209
+ "$$exists": false
210
+ - commandFailedEvent:
211
+ commandName: listCollections
212
+
213
+ - description: Server returns an error on listIndexes with snapshot
214
+ operations:
215
+ - name: listIndexes
216
+ object: collection0
217
+ arguments:
218
+ session: session0
219
+ expectError:
220
+ isError: true
221
+ isClientError: false
222
+ expectEvents:
223
+ - client: client0
224
+ events:
225
+ - commandStartedEvent:
226
+ command:
227
+ listIndexes: collection0
228
+ readConcern:
229
+ level: snapshot
230
+ atClusterTime:
231
+ "$$exists": false
232
+ - commandFailedEvent:
233
+ commandName: listIndexes
234
+
235
+ - description: Server returns an error on runCommand with snapshot
236
+ operations:
237
+ - name: runCommand
238
+ object: database0
239
+ arguments:
240
+ session: session0
241
+ commandName: listCollections
242
+ command:
243
+ listCollections: 1
244
+ expectError:
245
+ isError: true
246
+ isClientError: false
247
+ expectEvents:
248
+ - client: client0
249
+ events:
250
+ - commandStartedEvent:
251
+ command:
252
+ listCollections: 1
253
+ readConcern:
254
+ level: snapshot
255
+ atClusterTime:
256
+ "$$exists": false
257
+ - commandFailedEvent:
258
+ commandName: listCollections