Skip to content

Commit f88dc48

Browse files
author
Oleksandr Poliakov
committed
PR
1 parent 085b0b7 commit f88dc48

File tree

7 files changed

+385
-503
lines changed

7 files changed

+385
-503
lines changed

src/MongoDB.Driver/IOperationExecutor.cs

Lines changed: 1 addition & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -46,8 +46,6 @@ Task<TResult> ExecuteWriteOperationAsync<TResult>(IWriteOperation<TResult> opera
4646
bool allowChannelPinning,
4747
CancellationToken cancellationToken);
4848

49-
IClientSessionHandle StartImplicitSession(CancellationToken cancellationToken);
50-
51-
Task<IClientSessionHandle> StartImplicitSessionAsync(CancellationToken cancellationToken);
49+
IClientSessionHandle StartImplicitSession();
5250
}
5351
}

src/MongoDB.Driver/MongoClient.cs

Lines changed: 45 additions & 65 deletions
Original file line numberDiff line numberDiff line change
@@ -136,12 +136,10 @@ internal void ConfigureAutoEncryptionMessageEncoderSettings(MessageEncoderSettin
136136
// public methods
137137
/// <inheritdoc/>
138138
public ClientBulkWriteResult BulkWrite(IReadOnlyList<BulkWriteModel> models, ClientBulkWriteOptions options = null, CancellationToken cancellationToken = default)
139-
=> _operationExecutor.ExecuteWriteOperation<ClientBulkWriteResult>(
140-
CreateClientBulkWriteOperation(models, options),
141-
_writeOperationOptions,
142-
session: null,
143-
allowChannelPinning: false,
144-
cancellationToken: cancellationToken);
139+
{
140+
using var session = _operationExecutor.StartImplicitSession();
141+
return BulkWrite(session, models, options, cancellationToken);
142+
}
145143

146144
/// <inheritdoc/>
147145
public ClientBulkWriteResult BulkWrite(IClientSessionHandle session, IReadOnlyList<BulkWriteModel> models, ClientBulkWriteOptions options = null, CancellationToken cancellationToken = default)
@@ -153,13 +151,11 @@ public ClientBulkWriteResult BulkWrite(IClientSessionHandle session, IReadOnlyLi
153151
cancellationToken: cancellationToken);
154152

155153
/// <inheritdoc/>
156-
public Task<ClientBulkWriteResult> BulkWriteAsync(IReadOnlyList<BulkWriteModel> models, ClientBulkWriteOptions options = null, CancellationToken cancellationToken = default)
157-
=> _operationExecutor.ExecuteWriteOperationAsync<ClientBulkWriteResult>(
158-
CreateClientBulkWriteOperation(models, options),
159-
_writeOperationOptions,
160-
session: null,
161-
allowChannelPinning: false,
162-
cancellationToken: cancellationToken);
154+
public async Task<ClientBulkWriteResult> BulkWriteAsync(IReadOnlyList<BulkWriteModel> models, ClientBulkWriteOptions options = null, CancellationToken cancellationToken = default)
155+
{
156+
using var session = _operationExecutor.StartImplicitSession();
157+
return await BulkWriteAsync(session, models, options, cancellationToken).ConfigureAwait(false);
158+
}
163159

164160
/// <inheritdoc/>
165161
public Task<ClientBulkWriteResult> BulkWriteAsync(IClientSessionHandle session, IReadOnlyList<BulkWriteModel> models, ClientBulkWriteOptions options = null, CancellationToken cancellationToken = default)
@@ -202,12 +198,10 @@ public void Dispose(bool disposing)
202198

203199
/// <inheritdoc/>
204200
public void DropDatabase(string name, CancellationToken cancellationToken = default)
205-
=> _operationExecutor.ExecuteWriteOperation(
206-
CreateDropDatabaseOperation(name),
207-
_writeOperationOptions,
208-
session: null,
209-
allowChannelPinning: false,
210-
cancellationToken: cancellationToken);
201+
{
202+
using var session = _operationExecutor.StartImplicitSession();
203+
DropDatabase(session, name, cancellationToken);
204+
}
211205

212206
/// <inheritdoc/>
213207
public void DropDatabase(IClientSessionHandle session, string name, CancellationToken cancellationToken = default)
@@ -219,13 +213,11 @@ public void DropDatabase(IClientSessionHandle session, string name, Cancellation
219213
cancellationToken: cancellationToken);
220214

221215
/// <inheritdoc/>
222-
public Task DropDatabaseAsync(string name, CancellationToken cancellationToken = default)
223-
=> _operationExecutor.ExecuteWriteOperationAsync(
224-
CreateDropDatabaseOperation(name),
225-
_writeOperationOptions,
226-
session: null,
227-
allowChannelPinning: false,
228-
cancellationToken: cancellationToken);
216+
public async Task DropDatabaseAsync(string name, CancellationToken cancellationToken = default)
217+
{
218+
using var session = _operationExecutor.StartImplicitSession();
219+
await DropDatabaseAsync(session, name, cancellationToken).ConfigureAwait(false);
220+
}
229221

230222
/// <inheritdoc/>
231223
public Task DropDatabaseAsync(IClientSessionHandle session, string name, CancellationToken cancellationToken = default)
@@ -314,23 +306,19 @@ public async Task<IAsyncCursor<string>> ListDatabaseNamesAsync(
314306

315307
/// <inheritdoc/>
316308
public IAsyncCursor<BsonDocument> ListDatabases(CancellationToken cancellationToken)
317-
=> _operationExecutor.ExecuteReadOperation(
318-
CreateListDatabaseOperation(null),
319-
_readOperationOptions,
320-
session: null,
321-
allowChannelPinning: false,
322-
cancellationToken: cancellationToken);
309+
{
310+
using var session = _operationExecutor.StartImplicitSession();
311+
return ListDatabases(session, cancellationToken);
312+
}
323313

324314
/// <inheritdoc/>
325315
public IAsyncCursor<BsonDocument> ListDatabases(
326316
ListDatabasesOptions options,
327317
CancellationToken cancellationToken = default)
328-
=> _operationExecutor.ExecuteReadOperation(
329-
CreateListDatabaseOperation(options),
330-
_readOperationOptions,
331-
session: null,
332-
allowChannelPinning: false,
333-
cancellationToken: cancellationToken);
318+
{
319+
using var session = _operationExecutor.StartImplicitSession();
320+
return ListDatabases(session, options, cancellationToken);
321+
}
334322

335323
/// <inheritdoc/>
336324
public IAsyncCursor<BsonDocument> ListDatabases(
@@ -356,24 +344,20 @@ public IAsyncCursor<BsonDocument> ListDatabases(
356344
cancellationToken: cancellationToken);
357345

358346
/// <inheritdoc/>
359-
public Task<IAsyncCursor<BsonDocument>> ListDatabasesAsync(CancellationToken cancellationToken = default)
360-
=> _operationExecutor.ExecuteReadOperationAsync(
361-
CreateListDatabaseOperation(null),
362-
_readOperationOptions,
363-
session: null,
364-
allowChannelPinning: false,
365-
cancellationToken: cancellationToken);
347+
public async Task<IAsyncCursor<BsonDocument>> ListDatabasesAsync(CancellationToken cancellationToken = default)
348+
{
349+
using var session = _operationExecutor.StartImplicitSession();
350+
return await ListDatabasesAsync(session, cancellationToken).ConfigureAwait(false);
351+
}
366352

367353
/// <inheritdoc/>
368-
public Task<IAsyncCursor<BsonDocument>> ListDatabasesAsync(
354+
public async Task<IAsyncCursor<BsonDocument>> ListDatabasesAsync(
369355
ListDatabasesOptions options,
370356
CancellationToken cancellationToken = default)
371-
=> _operationExecutor.ExecuteReadOperationAsync(
372-
CreateListDatabaseOperation(options),
373-
_readOperationOptions,
374-
session: null,
375-
allowChannelPinning: false,
376-
cancellationToken: cancellationToken);
357+
{
358+
using var session = _operationExecutor.StartImplicitSession();
359+
return await ListDatabasesAsync(session, options, cancellationToken).ConfigureAwait(false);
360+
}
377361

378362
/// <inheritdoc/>
379363
public Task<IAsyncCursor<BsonDocument>> ListDatabasesAsync(
@@ -419,12 +403,10 @@ public IChangeStreamCursor<TResult> Watch<TResult>(
419403
PipelineDefinition<ChangeStreamDocument<BsonDocument>, TResult> pipeline,
420404
ChangeStreamOptions options = null,
421405
CancellationToken cancellationToken = default)
422-
=> _operationExecutor.ExecuteReadOperation(
423-
CreateChangeStreamOperation(pipeline, options),
424-
_readOperationOptions,
425-
session: null,
426-
allowChannelPinning: false,
427-
cancellationToken: cancellationToken);
406+
{
407+
using var session = _operationExecutor.StartImplicitSession();
408+
return Watch(session, pipeline, options, cancellationToken);
409+
}
428410

429411
/// <inheritdoc/>
430412
public IChangeStreamCursor<TResult> Watch<TResult>(
@@ -440,16 +422,14 @@ public IChangeStreamCursor<TResult> Watch<TResult>(
440422
cancellationToken: cancellationToken);
441423

442424
/// <inheritdoc/>
443-
public Task<IChangeStreamCursor<TResult>> WatchAsync<TResult>(
425+
public async Task<IChangeStreamCursor<TResult>> WatchAsync<TResult>(
444426
PipelineDefinition<ChangeStreamDocument<BsonDocument>, TResult> pipeline,
445427
ChangeStreamOptions options = null,
446428
CancellationToken cancellationToken = default)
447-
=> _operationExecutor.ExecuteReadOperationAsync(
448-
CreateChangeStreamOperation(pipeline, options),
449-
_readOperationOptions,
450-
session: null,
451-
allowChannelPinning: false,
452-
cancellationToken: cancellationToken);
429+
{
430+
using var session = _operationExecutor.StartImplicitSession();
431+
return await WatchAsync(session, pipeline, options, cancellationToken).ConfigureAwait(false);
432+
}
453433

454434
/// <inheritdoc/>
455435
public Task<IChangeStreamCursor<TResult>> WatchAsync<TResult>(

0 commit comments

Comments
 (0)