Skip to content

Commit dce7ee3

Browse files
author
Oleksandr Poliakov
committed
PR
1 parent b3c293f commit dce7ee3

File tree

2 files changed

+33
-48
lines changed

2 files changed

+33
-48
lines changed

src/MongoDB.Driver/MongoClient.cs

Lines changed: 29 additions & 44 deletions
Original file line numberDiff line numberDiff line change
@@ -145,10 +145,10 @@ public ClientBulkWriteResult BulkWrite(IReadOnlyList<BulkWriteModel> models, Cli
145145
/// <inheritdoc/>
146146
public ClientBulkWriteResult BulkWrite(IClientSessionHandle session, IReadOnlyList<BulkWriteModel> models, ClientBulkWriteOptions options = null, CancellationToken cancellationToken = default)
147147
{
148-
ThrowIfDisposed();
149148
Ensure.IsNotNull(session, nameof(session));
149+
ThrowIfDisposed();
150150
var operation = CreateClientBulkWriteOperation(models, options);
151-
return ExecuteWriteOperation<ClientBulkWriteResult>(session, operation, _writeOperationOptions, cancellationToken);
151+
return ExecuteWriteOperation<ClientBulkWriteResult>(session, operation, cancellationToken);
152152
}
153153

154154
/// <inheritdoc/>
@@ -162,10 +162,10 @@ public async Task<ClientBulkWriteResult> BulkWriteAsync(IReadOnlyList<BulkWriteM
162162
/// <inheritdoc/>
163163
public Task<ClientBulkWriteResult> BulkWriteAsync(IClientSessionHandle session, IReadOnlyList<BulkWriteModel> models, ClientBulkWriteOptions options = null, CancellationToken cancellationToken = default)
164164
{
165-
ThrowIfDisposed();
166165
Ensure.IsNotNull(session, nameof(session));
166+
ThrowIfDisposed();
167167
var operation = CreateClientBulkWriteOperation(models, options);
168-
return ExecuteWriteOperationAsync<ClientBulkWriteResult>(session, operation, _writeOperationOptions, cancellationToken);
168+
return ExecuteWriteOperationAsync<ClientBulkWriteResult>(session, operation, cancellationToken);
169169
}
170170

171171
/// <inheritdoc/>
@@ -209,10 +209,10 @@ public void DropDatabase(string name, CancellationToken cancellationToken = defa
209209
/// <inheritdoc/>
210210
public void DropDatabase(IClientSessionHandle session, string name, CancellationToken cancellationToken = default)
211211
{
212-
ThrowIfDisposed();
213212
Ensure.IsNotNull(session, nameof(session));
213+
ThrowIfDisposed();
214214
var operation = CreateDropDatabaseOperation(name);
215-
ExecuteWriteOperation(session, operation, _writeOperationOptions, cancellationToken);
215+
ExecuteWriteOperation(session, operation, cancellationToken);
216216
}
217217

218218
/// <inheritdoc/>
@@ -226,10 +226,10 @@ public async Task DropDatabaseAsync(string name, CancellationToken cancellationT
226226
/// <inheritdoc/>
227227
public Task DropDatabaseAsync(IClientSessionHandle session, string name, CancellationToken cancellationToken = default)
228228
{
229-
ThrowIfDisposed();
230229
Ensure.IsNotNull(session, nameof(session));
230+
ThrowIfDisposed();
231231
var opertion = CreateDropDatabaseOperation(name);
232-
return ExecuteWriteOperationAsync(session, opertion, _writeOperationOptions, cancellationToken);
232+
return ExecuteWriteOperationAsync(session, opertion, cancellationToken);
233233
}
234234

235235
/// <inheritdoc/>
@@ -256,9 +256,8 @@ public IAsyncCursor<string> ListDatabaseNames(
256256
CancellationToken cancellationToken = default)
257257
{
258258
ThrowIfDisposed();
259-
var listDatabasesOptions = CreateListDatabasesOptionsFromListDatabaseNamesOptions(options);
260-
var databases = ListDatabases(listDatabasesOptions, cancellationToken);
261-
return CreateDatabaseNamesCursor(databases);
259+
using var session = _operationExecutor.StartImplicitSession();
260+
return ListDatabaseNames(session, options, cancellationToken);
262261
}
263262

264263
/// <inheritdoc />
@@ -289,9 +288,8 @@ public async Task<IAsyncCursor<string>> ListDatabaseNamesAsync(
289288
CancellationToken cancellationToken = default)
290289
{
291290
ThrowIfDisposed();
292-
var listDatabasesOptions = CreateListDatabasesOptionsFromListDatabaseNamesOptions(options);
293-
var databases = await ListDatabasesAsync(listDatabasesOptions, cancellationToken).ConfigureAwait(false);
294-
return CreateDatabaseNamesCursor(databases);
291+
using var session = _operationExecutor.StartImplicitSession();
292+
return await ListDatabaseNamesAsync(session, options, cancellationToken).ConfigureAwait(false);
295293
}
296294

297295
/// <inheritdoc />
@@ -334,12 +332,7 @@ public IAsyncCursor<BsonDocument> ListDatabases(
334332
public IAsyncCursor<BsonDocument> ListDatabases(
335333
IClientSessionHandle session,
336334
CancellationToken cancellationToken = default)
337-
{
338-
ThrowIfDisposed();
339-
Ensure.IsNotNull(session, nameof(session));
340-
var operation = CreateListDatabaseOperation(null);
341-
return ExecuteReadOperation(session, operation, _readOperationOptions, cancellationToken);
342-
}
335+
=> ListDatabases(session, null, cancellationToken);
343336

344337
/// <inheritdoc/>
345338
public IAsyncCursor<BsonDocument> ListDatabases(
@@ -350,7 +343,7 @@ public IAsyncCursor<BsonDocument> ListDatabases(
350343
ThrowIfDisposed();
351344
Ensure.IsNotNull(session, nameof(session));
352345
var operation = CreateListDatabaseOperation(options);
353-
return ExecuteReadOperation(session, operation, _readOperationOptions, cancellationToken);
346+
return ExecuteReadOperation(session, operation, cancellationToken);
354347
}
355348

356349
/// <inheritdoc/>
@@ -375,23 +368,18 @@ public async Task<IAsyncCursor<BsonDocument>> ListDatabasesAsync(
375368
public Task<IAsyncCursor<BsonDocument>> ListDatabasesAsync(
376369
IClientSessionHandle session,
377370
CancellationToken cancellationToken = default)
378-
{
379-
ThrowIfDisposed();
380-
Ensure.IsNotNull(session, nameof(session));
381-
var operation = CreateListDatabaseOperation(null);
382-
return ExecuteReadOperationAsync(session, operation, _readOperationOptions, cancellationToken);
383-
}
371+
=> ListDatabasesAsync(session, null, cancellationToken);
384372

385373
/// <inheritdoc/>
386374
public Task<IAsyncCursor<BsonDocument>> ListDatabasesAsync(
387375
IClientSessionHandle session,
388376
ListDatabasesOptions options,
389377
CancellationToken cancellationToken = default)
390378
{
391-
ThrowIfDisposed();
392379
Ensure.IsNotNull(session, nameof(session));
380+
ThrowIfDisposed();
393381
var operation = CreateListDatabaseOperation(options);
394-
return ExecuteReadOperationAsync(session, operation, _readOperationOptions, cancellationToken);
382+
return ExecuteReadOperationAsync(session, operation, cancellationToken);
395383
}
396384

397385
/// <inheritdoc/>
@@ -428,10 +416,10 @@ public IChangeStreamCursor<TResult> Watch<TResult>(
428416
ChangeStreamOptions options = null,
429417
CancellationToken cancellationToken = default)
430418
{
431-
ThrowIfDisposed();
432419
Ensure.IsNotNull(session, nameof(session));
420+
ThrowIfDisposed();
433421
var operation = CreateChangeStreamOperation(pipeline, options);
434-
return ExecuteReadOperation(session, operation, _readOperationOptions, cancellationToken);
422+
return ExecuteReadOperation(session, operation, cancellationToken);
435423
}
436424

437425
/// <inheritdoc/>
@@ -452,17 +440,16 @@ public Task<IChangeStreamCursor<TResult>> WatchAsync<TResult>(
452440
ChangeStreamOptions options = null,
453441
CancellationToken cancellationToken = default)
454442
{
455-
ThrowIfDisposed();
456443
Ensure.IsNotNull(session, nameof(session));
444+
ThrowIfDisposed();
457445
var operation = CreateChangeStreamOperation(pipeline, options);
458-
return ExecuteReadOperationAsync(session, operation, _readOperationOptions, cancellationToken);
446+
return ExecuteReadOperationAsync(session, operation, cancellationToken);
459447
}
460448

461449
/// <inheritdoc/>
462450
public IMongoClient WithReadConcern(ReadConcern readConcern)
463451
{
464452
Ensure.IsNotNull(readConcern, nameof(readConcern));
465-
466453
ThrowIfDisposed();
467454

468455
var newSettings = Settings.Clone();
@@ -474,7 +461,6 @@ public IMongoClient WithReadConcern(ReadConcern readConcern)
474461
public IMongoClient WithReadPreference(ReadPreference readPreference)
475462
{
476463
Ensure.IsNotNull(readPreference, nameof(readPreference));
477-
478464
ThrowIfDisposed();
479465

480466
var newSettings = Settings.Clone();
@@ -486,7 +472,6 @@ public IMongoClient WithReadPreference(ReadPreference readPreference)
486472
public IMongoClient WithWriteConcern(WriteConcern writeConcern)
487473
{
488474
Ensure.IsNotNull(writeConcern, nameof(writeConcern));
489-
490475
ThrowIfDisposed();
491476

492477
var newSettings = Settings.Clone();
@@ -577,17 +562,17 @@ private ChangeStreamOperation<TResult> CreateChangeStreamOperation<TResult>(
577562
_settings.RetryReads,
578563
_settings.TranslationOptions);
579564

580-
private TResult ExecuteReadOperation<TResult>(IClientSessionHandle session, IReadOperation<TResult> operation, ReadOperationOptions options, CancellationToken cancellationToken)
581-
=> _operationExecutor.ExecuteReadOperation(session, operation, options, false, cancellationToken);
565+
private TResult ExecuteReadOperation<TResult>(IClientSessionHandle session, IReadOperation<TResult> operation, CancellationToken cancellationToken)
566+
=> _operationExecutor.ExecuteReadOperation(session, operation, _readOperationOptions, false, cancellationToken);
582567

583-
private Task<TResult> ExecuteReadOperationAsync<TResult>(IClientSessionHandle session, IReadOperation<TResult> operation, ReadOperationOptions options, CancellationToken cancellationToken)
584-
=> _operationExecutor.ExecuteReadOperationAsync(session, operation, options, false, cancellationToken);
568+
private Task<TResult> ExecuteReadOperationAsync<TResult>(IClientSessionHandle session, IReadOperation<TResult> operation, CancellationToken cancellationToken)
569+
=> _operationExecutor.ExecuteReadOperationAsync(session, operation, _readOperationOptions, false, cancellationToken);
585570

586-
private TResult ExecuteWriteOperation<TResult>(IClientSessionHandle session, IWriteOperation<TResult> operation, WriteOperationOptions options, CancellationToken cancellationToken)
587-
=> _operationExecutor.ExecuteWriteOperation(session, operation, options, false, cancellationToken);
571+
private TResult ExecuteWriteOperation<TResult>(IClientSessionHandle session, IWriteOperation<TResult> operation, CancellationToken cancellationToken)
572+
=> _operationExecutor.ExecuteWriteOperation(session, operation, _writeOperationOptions, false, cancellationToken);
588573

589-
private Task<TResult> ExecuteWriteOperationAsync<TResult>(IClientSessionHandle session, IWriteOperation<TResult> operation, WriteOperationOptions options, CancellationToken cancellationToken)
590-
=> _operationExecutor.ExecuteWriteOperationAsync(session, operation, options, false, cancellationToken);
574+
private Task<TResult> ExecuteWriteOperationAsync<TResult>(IClientSessionHandle session, IWriteOperation<TResult> operation, CancellationToken cancellationToken)
575+
=> _operationExecutor.ExecuteWriteOperationAsync(session, operation, _writeOperationOptions, false, cancellationToken);
591576

592577
private MessageEncoderSettings GetMessageEncoderSettings()
593578
{

src/MongoDB.Driver/OperationExecutor.cs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -45,10 +45,10 @@ public TResult ExecuteReadOperation<TResult>(
4545
bool allowChannelPinning,
4646
CancellationToken cancellationToken)
4747
{
48-
ThrowIfDisposed();
4948
Ensure.IsNotNull(operation, nameof(operation));
5049
Ensure.IsNotNull(options, nameof(options));
5150
Ensure.IsNotNull(session, nameof(session));
51+
ThrowIfDisposed();
5252

5353
var readPreference = options.GetEffectiveReadPreference(session);
5454
using var binding = CreateReadBinding(session, readPreference, allowChannelPinning);
@@ -62,10 +62,10 @@ public async Task<TResult> ExecuteReadOperationAsync<TResult>(
6262
bool allowChannelPinning,
6363
CancellationToken cancellationToken)
6464
{
65-
ThrowIfDisposed();
6665
Ensure.IsNotNull(operation, nameof(operation));
6766
Ensure.IsNotNull(options, nameof(options));
6867
Ensure.IsNotNull(session, nameof(session));
68+
ThrowIfDisposed();
6969

7070
var readPreference = options.GetEffectiveReadPreference(session);
7171
using var binding = CreateReadBinding(session, readPreference, allowChannelPinning);
@@ -79,10 +79,10 @@ public TResult ExecuteWriteOperation<TResult>(
7979
bool allowChannelPinning,
8080
CancellationToken cancellationToken)
8181
{
82-
ThrowIfDisposed();
8382
Ensure.IsNotNull(operation, nameof(operation));
8483
Ensure.IsNotNull(options, nameof(options));
8584
Ensure.IsNotNull(session, nameof(session));
85+
ThrowIfDisposed();
8686

8787
using var binding = CreateReadWriteBinding(session, allowChannelPinning);
8888
return operation.Execute(binding, cancellationToken);
@@ -95,10 +95,10 @@ public async Task<TResult> ExecuteWriteOperationAsync<TResult>(
9595
bool allowChannelPinning,
9696
CancellationToken cancellationToken)
9797
{
98-
ThrowIfDisposed();
9998
Ensure.IsNotNull(operation, nameof(operation));
10099
Ensure.IsNotNull(options, nameof(options));
101100
Ensure.IsNotNull(session, nameof(session));
101+
ThrowIfDisposed();
102102

103103
using var binding = CreateReadWriteBinding(session, allowChannelPinning);
104104
return await operation.ExecuteAsync(binding, cancellationToken).ConfigureAwait(false);

0 commit comments

Comments
 (0)