Skip to content

Commit 9d8dd10

Browse files
author
Oleksandr Poliakov
committed
PR
1 parent 9cf13c7 commit 9d8dd10

File tree

6 files changed

+184
-158
lines changed

6 files changed

+184
-158
lines changed

src/MongoDB.Driver/IOperationExecutor.cs

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -13,13 +13,14 @@
1313
* limitations under the License.
1414
*/
1515

16+
using System;
1617
using System.Threading;
1718
using System.Threading.Tasks;
1819
using MongoDB.Driver.Core.Operations;
1920

2021
namespace MongoDB.Driver
2122
{
22-
internal interface IOperationExecutor
23+
internal interface IOperationExecutor : IDisposable
2324
{
2425
TResult ExecuteReadOperation<TResult>(
2526
IReadOperation<TResult> operation,

src/MongoDB.Driver/MongoClient.cs

Lines changed: 24 additions & 24 deletions
Original file line numberDiff line numberDiff line change
@@ -116,7 +116,6 @@ internal MongoClient(IOperationExecutor operationExecutor, MongoClientSettings s
116116

117117
// internal properties
118118
internal IAutoEncryptionLibMongoCryptController LibMongoCryptController => ThrowIfDisposed(_libMongoCryptController);
119-
internal IOperationExecutor OperationExecutor => ThrowIfDisposed(_operationExecutor);
120119

121120
// internal methods
122121
internal void ConfigureAutoEncryptionMessageEncoderSettings(MessageEncoderSettings messageEncoderSettings)
@@ -136,29 +135,29 @@ internal void ConfigureAutoEncryptionMessageEncoderSettings(MessageEncoderSettin
136135
// public methods
137136
/// <inheritdoc/>
138137
public ClientBulkWriteResult BulkWrite(IReadOnlyList<BulkWriteModel> models, ClientBulkWriteOptions options = null, CancellationToken cancellationToken = default)
139-
=> OperationExecutor.ExecuteWriteOperation<ClientBulkWriteResult>(
138+
=> _operationExecutor.ExecuteWriteOperation<ClientBulkWriteResult>(
140139
CreateClientBulkWriteOperation(models, options),
141140
_writeOperationOptions,
142141
cancellationToken: cancellationToken);
143142

144143
/// <inheritdoc/>
145144
public ClientBulkWriteResult BulkWrite(IClientSessionHandle session, IReadOnlyList<BulkWriteModel> models, ClientBulkWriteOptions options = null, CancellationToken cancellationToken = default)
146-
=> OperationExecutor.ExecuteWriteOperation<ClientBulkWriteResult>(
145+
=> _operationExecutor.ExecuteWriteOperation<ClientBulkWriteResult>(
147146
CreateClientBulkWriteOperation(models, options),
148147
_writeOperationOptions,
149148
Ensure.IsNotNull(session, nameof(session)),
150149
cancellationToken);
151150

152151
/// <inheritdoc/>
153152
public Task<ClientBulkWriteResult> BulkWriteAsync(IReadOnlyList<BulkWriteModel> models, ClientBulkWriteOptions options = null, CancellationToken cancellationToken = default)
154-
=> OperationExecutor.ExecuteWriteOperationAsync<ClientBulkWriteResult>(
153+
=> _operationExecutor.ExecuteWriteOperationAsync<ClientBulkWriteResult>(
155154
CreateClientBulkWriteOperation(models, options),
156155
_writeOperationOptions,
157156
cancellationToken: cancellationToken);
158157

159158
/// <inheritdoc/>
160159
public Task<ClientBulkWriteResult> BulkWriteAsync(IClientSessionHandle session, IReadOnlyList<BulkWriteModel> models, ClientBulkWriteOptions options = null, CancellationToken cancellationToken = default)
161-
=> OperationExecutor.ExecuteWriteOperationAsync<ClientBulkWriteResult>(
160+
=> _operationExecutor.ExecuteWriteOperationAsync<ClientBulkWriteResult>(
162161
CreateClientBulkWriteOperation(models, options),
163162
_writeOperationOptions,
164163
Ensure.IsNotNull(session, nameof(session)),
@@ -183,6 +182,7 @@ public void Dispose(bool disposing)
183182
{
184183
_logger?.LogDebug(_cluster.ClusterId, "MongoClient disposing");
185184

185+
_operationExecutor.Dispose();
186186
_settings.ClusterSource.Return(_cluster);
187187
_libMongoCryptController?.Dispose();
188188

@@ -195,29 +195,29 @@ public void Dispose(bool disposing)
195195

196196
/// <inheritdoc/>
197197
public void DropDatabase(string name, CancellationToken cancellationToken = default)
198-
=> OperationExecutor.ExecuteWriteOperation(
198+
=> _operationExecutor.ExecuteWriteOperation(
199199
CreateDropDatabaseOperation(name),
200200
_writeOperationOptions,
201201
cancellationToken: cancellationToken);
202202

203203
/// <inheritdoc/>
204204
public void DropDatabase(IClientSessionHandle session, string name, CancellationToken cancellationToken = default)
205-
=> OperationExecutor.ExecuteWriteOperation(
205+
=> _operationExecutor.ExecuteWriteOperation(
206206
CreateDropDatabaseOperation(name),
207207
_writeOperationOptions,
208208
Ensure.IsNotNull(session, nameof(session)),
209209
cancellationToken);
210210

211211
/// <inheritdoc/>
212212
public Task DropDatabaseAsync(string name, CancellationToken cancellationToken = default)
213-
=> OperationExecutor.ExecuteWriteOperationAsync(
213+
=> _operationExecutor.ExecuteWriteOperationAsync(
214214
CreateDropDatabaseOperation(name),
215215
_writeOperationOptions,
216216
cancellationToken: cancellationToken);
217217

218218
/// <inheritdoc/>
219219
public Task DropDatabaseAsync(IClientSessionHandle session, string name, CancellationToken cancellationToken = default)
220-
=> OperationExecutor.ExecuteWriteOperationAsync(
220+
=> _operationExecutor.ExecuteWriteOperationAsync(
221221
CreateDropDatabaseOperation(name),
222222
_writeOperationOptions,
223223
Ensure.IsNotNull(session, nameof(session)),
@@ -301,7 +301,7 @@ public async Task<IAsyncCursor<string>> ListDatabaseNamesAsync(
301301

302302
/// <inheritdoc/>
303303
public IAsyncCursor<BsonDocument> ListDatabases(CancellationToken cancellationToken)
304-
=> OperationExecutor.ExecuteReadOperation(
304+
=> _operationExecutor.ExecuteReadOperation(
305305
CreateListDatabaseOperation(null),
306306
_readOperationOptions,
307307
cancellationToken: cancellationToken);
@@ -310,7 +310,7 @@ public IAsyncCursor<BsonDocument> ListDatabases(CancellationToken cancellationTo
310310
public IAsyncCursor<BsonDocument> ListDatabases(
311311
ListDatabasesOptions options,
312312
CancellationToken cancellationToken = default)
313-
=> OperationExecutor.ExecuteReadOperation(
313+
=> _operationExecutor.ExecuteReadOperation(
314314
CreateListDatabaseOperation(options),
315315
_readOperationOptions,
316316
cancellationToken: cancellationToken);
@@ -319,7 +319,7 @@ public IAsyncCursor<BsonDocument> ListDatabases(
319319
public IAsyncCursor<BsonDocument> ListDatabases(
320320
IClientSessionHandle session,
321321
CancellationToken cancellationToken = default)
322-
=> OperationExecutor.ExecuteReadOperation(
322+
=> _operationExecutor.ExecuteReadOperation(
323323
CreateListDatabaseOperation(null),
324324
_readOperationOptions,
325325
Ensure.IsNotNull(session, nameof(session)),
@@ -330,15 +330,15 @@ public IAsyncCursor<BsonDocument> ListDatabases(
330330
IClientSessionHandle session,
331331
ListDatabasesOptions options,
332332
CancellationToken cancellationToken = default)
333-
=> OperationExecutor.ExecuteReadOperation(
333+
=> _operationExecutor.ExecuteReadOperation(
334334
CreateListDatabaseOperation(options),
335335
_readOperationOptions,
336336
Ensure.IsNotNull(session, nameof(session)),
337337
cancellationToken);
338338

339339
/// <inheritdoc/>
340340
public Task<IAsyncCursor<BsonDocument>> ListDatabasesAsync(CancellationToken cancellationToken = default)
341-
=> OperationExecutor.ExecuteReadOperationAsync(
341+
=> _operationExecutor.ExecuteReadOperationAsync(
342342
CreateListDatabaseOperation(null),
343343
_readOperationOptions,
344344
cancellationToken: cancellationToken);
@@ -347,7 +347,7 @@ public Task<IAsyncCursor<BsonDocument>> ListDatabasesAsync(CancellationToken can
347347
public Task<IAsyncCursor<BsonDocument>> ListDatabasesAsync(
348348
ListDatabasesOptions options,
349349
CancellationToken cancellationToken = default)
350-
=> OperationExecutor.ExecuteReadOperationAsync(
350+
=> _operationExecutor.ExecuteReadOperationAsync(
351351
CreateListDatabaseOperation(options),
352352
_readOperationOptions,
353353
cancellationToken: cancellationToken);
@@ -356,7 +356,7 @@ public Task<IAsyncCursor<BsonDocument>> ListDatabasesAsync(
356356
public Task<IAsyncCursor<BsonDocument>> ListDatabasesAsync(
357357
IClientSessionHandle session,
358358
CancellationToken cancellationToken = default)
359-
=> OperationExecutor.ExecuteReadOperationAsync(
359+
=> _operationExecutor.ExecuteReadOperationAsync(
360360
CreateListDatabaseOperation(null),
361361
_readOperationOptions,
362362
Ensure.IsNotNull(session, nameof(session)),
@@ -367,7 +367,7 @@ public Task<IAsyncCursor<BsonDocument>> ListDatabasesAsync(
367367
IClientSessionHandle session,
368368
ListDatabasesOptions options,
369369
CancellationToken cancellationToken = default)
370-
=> OperationExecutor.ExecuteReadOperationAsync(
370+
=> _operationExecutor.ExecuteReadOperationAsync(
371371
CreateListDatabaseOperation(options),
372372
_readOperationOptions,
373373
Ensure.IsNotNull(session, nameof(session)),
@@ -394,7 +394,7 @@ public IChangeStreamCursor<TResult> Watch<TResult>(
394394
PipelineDefinition<ChangeStreamDocument<BsonDocument>, TResult> pipeline,
395395
ChangeStreamOptions options = null,
396396
CancellationToken cancellationToken = default)
397-
=> OperationExecutor.ExecuteReadOperation(
397+
=> _operationExecutor.ExecuteReadOperation(
398398
CreateChangeStreamOperation(pipeline, options),
399399
_readOperationOptions,
400400
cancellationToken: cancellationToken);
@@ -405,7 +405,7 @@ public IChangeStreamCursor<TResult> Watch<TResult>(
405405
PipelineDefinition<ChangeStreamDocument<BsonDocument>, TResult> pipeline,
406406
ChangeStreamOptions options = null,
407407
CancellationToken cancellationToken = default)
408-
=> OperationExecutor.ExecuteReadOperation(
408+
=> _operationExecutor.ExecuteReadOperation(
409409
CreateChangeStreamOperation(pipeline, options),
410410
_readOperationOptions,
411411
Ensure.IsNotNull(session, nameof(session)),
@@ -416,7 +416,7 @@ public Task<IChangeStreamCursor<TResult>> WatchAsync<TResult>(
416416
PipelineDefinition<ChangeStreamDocument<BsonDocument>, TResult> pipeline,
417417
ChangeStreamOptions options = null,
418418
CancellationToken cancellationToken = default)
419-
=> OperationExecutor.ExecuteReadOperationAsync(
419+
=> _operationExecutor.ExecuteReadOperationAsync(
420420
CreateChangeStreamOperation(pipeline, options),
421421
_readOperationOptions,
422422
cancellationToken: cancellationToken);
@@ -427,7 +427,7 @@ public Task<IChangeStreamCursor<TResult>> WatchAsync<TResult>(
427427
PipelineDefinition<ChangeStreamDocument<BsonDocument>, TResult> pipeline,
428428
ChangeStreamOptions options = null,
429429
CancellationToken cancellationToken = default)
430-
=> OperationExecutor.ExecuteReadOperationAsync(
430+
=> _operationExecutor.ExecuteReadOperationAsync(
431431
CreateChangeStreamOperation(pipeline, options),
432432
_readOperationOptions,
433433
Ensure.IsNotNull(session, nameof(session)),
@@ -442,7 +442,7 @@ public IMongoClient WithReadConcern(ReadConcern readConcern)
442442

443443
var newSettings = Settings.Clone();
444444
newSettings.ReadConcern = readConcern;
445-
return new MongoClient(_operationExecutor, newSettings);
445+
return new MongoClient(newSettings);
446446
}
447447

448448
/// <inheritdoc/>
@@ -454,7 +454,7 @@ public IMongoClient WithReadPreference(ReadPreference readPreference)
454454

455455
var newSettings = Settings.Clone();
456456
newSettings.ReadPreference = readPreference;
457-
return new MongoClient(_operationExecutor, newSettings);
457+
return new MongoClient(newSettings);
458458
}
459459

460460
/// <inheritdoc/>
@@ -466,7 +466,7 @@ public IMongoClient WithWriteConcern(WriteConcern writeConcern)
466466

467467
var newSettings = Settings.Clone();
468468
newSettings.WriteConcern = writeConcern;
469-
return new MongoClient(_operationExecutor, newSettings);
469+
return new MongoClient(newSettings);
470470
}
471471

472472
// private methods

0 commit comments

Comments
 (0)