Skip to content

Commit 9062dd7

Browse files
author
Oleksandr Poliakov
committed
pr
1 parent a29eceb commit 9062dd7

File tree

1 file changed

+15
-41
lines changed

1 file changed

+15
-41
lines changed

src/MongoDB.Driver/MongoCollectionImpl.cs

Lines changed: 15 additions & 41 deletions
Original file line numberDiff line numberDiff line change
@@ -100,7 +100,8 @@ public override MongoCollectionSettings Settings
100100
// public methods
101101
public override IAsyncCursor<TResult> Aggregate<TResult>(PipelineDefinition<TDocument, TResult> pipeline, AggregateOptions options, CancellationToken cancellationToken = default)
102102
{
103-
return UsingImplicitSession(session => Aggregate(session, pipeline, options, cancellationToken), cancellationToken);
103+
using var session = OperationExecutor.StartImplicitSession(cancellationToken);
104+
return Aggregate(session, pipeline, options, cancellationToken);
104105
}
105106

106107
public override IAsyncCursor<TResult> Aggregate<TResult>(IClientSessionHandle session, PipelineDefinition<TDocument, TResult> pipeline, AggregateOptions options, CancellationToken cancellationToken = default)
@@ -124,9 +125,10 @@ public override IAsyncCursor<TResult> Aggregate<TResult>(IClientSessionHandle se
124125
}
125126
}
126127

127-
public override Task<IAsyncCursor<TResult>> AggregateAsync<TResult>(PipelineDefinition<TDocument, TResult> pipeline, AggregateOptions options, CancellationToken cancellationToken = default)
128+
public override async Task<IAsyncCursor<TResult>> AggregateAsync<TResult>(PipelineDefinition<TDocument, TResult> pipeline, AggregateOptions options, CancellationToken cancellationToken = default)
128129
{
129-
return UsingImplicitSessionAsync(session => AggregateAsync(session, pipeline, options, cancellationToken), cancellationToken);
130+
using var session = await OperationExecutor.StartImplicitSessionAsync(cancellationToken).ConfigureAwait(false);
131+
return await AggregateAsync(session, pipeline, options, cancellationToken).ConfigureAwait(false);
130132
}
131133

132134
public override async Task<IAsyncCursor<TResult>> AggregateAsync<TResult>(IClientSessionHandle session, PipelineDefinition<TDocument, TResult> pipeline, AggregateOptions options, CancellationToken cancellationToken = default)
@@ -152,7 +154,8 @@ public override async Task<IAsyncCursor<TResult>> AggregateAsync<TResult>(IClien
152154

153155
public override void AggregateToCollection<TResult>(PipelineDefinition<TDocument, TResult> pipeline, AggregateOptions options, CancellationToken cancellationToken = default)
154156
{
155-
UsingImplicitSession(session => AggregateToCollection(session, pipeline, options, cancellationToken), cancellationToken);
157+
using var session = OperationExecutor.StartImplicitSession(cancellationToken);
158+
AggregateToCollection(session, pipeline, options, cancellationToken);
156159
}
157160

158161
public override void AggregateToCollection<TResult>(IClientSessionHandle session, PipelineDefinition<TDocument, TResult> pipeline, AggregateOptions options, CancellationToken cancellationToken = default)
@@ -172,9 +175,10 @@ public override void AggregateToCollection<TResult>(IClientSessionHandle session
172175
OperationExecutor.ExecuteWriteOperation(aggregateOperation, _writeOperationOptions, session, cancellationToken);
173176
}
174177

175-
public override Task AggregateToCollectionAsync<TResult>(PipelineDefinition<TDocument, TResult> pipeline, AggregateOptions options, CancellationToken cancellationToken = default)
178+
public override async Task AggregateToCollectionAsync<TResult>(PipelineDefinition<TDocument, TResult> pipeline, AggregateOptions options, CancellationToken cancellationToken = default)
176179
{
177-
return UsingImplicitSessionAsync(session => AggregateToCollectionAsync(session, pipeline, options, cancellationToken), cancellationToken);
180+
using var session = await OperationExecutor.StartImplicitSessionAsync(cancellationToken).ConfigureAwait(false);
181+
await AggregateToCollectionAsync(session, pipeline, options, cancellationToken).ConfigureAwait(false);
178182
}
179183

180184
public override async Task AggregateToCollectionAsync<TResult>(IClientSessionHandle session, PipelineDefinition<TDocument, TResult> pipeline, AggregateOptions options, CancellationToken cancellationToken = default)
@@ -467,7 +471,8 @@ public override Task<TProjection> FindOneAndUpdateAsync<TProjection>(IClientSess
467471
[Obsolete("Use Aggregation pipeline instead.")]
468472
public override IAsyncCursor<TResult> MapReduce<TResult>(BsonJavaScript map, BsonJavaScript reduce, MapReduceOptions<TDocument, TResult> options = null, CancellationToken cancellationToken = default)
469473
{
470-
return UsingImplicitSession(session => MapReduce(session, map, reduce, options, cancellationToken), cancellationToken);
474+
using var session = OperationExecutor.StartImplicitSession(cancellationToken);
475+
return MapReduce(session, map, reduce, options, cancellationToken);
471476
}
472477

473478
[Obsolete("Use Aggregation pipeline instead.")]
@@ -496,9 +501,10 @@ public override IAsyncCursor<TResult> MapReduce<TResult>(IClientSessionHandle se
496501
}
497502

498503
[Obsolete("Use Aggregation pipeline instead.")]
499-
public override Task<IAsyncCursor<TResult>> MapReduceAsync<TResult>(BsonJavaScript map, BsonJavaScript reduce, MapReduceOptions<TDocument, TResult> options = null, CancellationToken cancellationToken = default)
504+
public override async Task<IAsyncCursor<TResult>> MapReduceAsync<TResult>(BsonJavaScript map, BsonJavaScript reduce, MapReduceOptions<TDocument, TResult> options = null, CancellationToken cancellationToken = default)
500505
{
501-
return UsingImplicitSessionAsync(session => MapReduceAsync(session, map, reduce, options, cancellationToken), cancellationToken);
506+
using var session = await OperationExecutor.StartImplicitSessionAsync(cancellationToken).ConfigureAwait(false);
507+
return await MapReduceAsync(session, map, reduce, options, cancellationToken).ConfigureAwait(false);
502508
}
503509

504510
[Obsolete("Use Aggregation pipeline instead.")]
@@ -1266,38 +1272,6 @@ private IBsonSerializer<TResult> ResolveResultSerializer<TResult>(IBsonSerialize
12661272
return _settings.SerializerRegistry.GetSerializer<TResult>();
12671273
}
12681274

1269-
private void UsingImplicitSession(Action<IClientSessionHandle> func, CancellationToken cancellationToken = default)
1270-
{
1271-
using (var session = _operationExecutor.StartImplicitSession(cancellationToken))
1272-
{
1273-
func(session);
1274-
}
1275-
}
1276-
1277-
private TResult UsingImplicitSession<TResult>(Func<IClientSessionHandle, TResult> func, CancellationToken cancellationToken = default)
1278-
{
1279-
using (var session = _operationExecutor.StartImplicitSession(cancellationToken))
1280-
{
1281-
return func(session);
1282-
}
1283-
}
1284-
1285-
private async Task UsingImplicitSessionAsync(Func<IClientSessionHandle, Task> funcAsync, CancellationToken cancellationToken = default)
1286-
{
1287-
using (var session = await _operationExecutor.StartImplicitSessionAsync(cancellationToken).ConfigureAwait(false))
1288-
{
1289-
await funcAsync(session).ConfigureAwait(false);
1290-
}
1291-
}
1292-
1293-
private async Task<TResult> UsingImplicitSessionAsync<TResult>(Func<IClientSessionHandle, Task<TResult>> funcAsync, CancellationToken cancellationToken = default)
1294-
{
1295-
using (var session = await _operationExecutor.StartImplicitSessionAsync(cancellationToken).ConfigureAwait(false))
1296-
{
1297-
return await funcAsync(session).ConfigureAwait(false);
1298-
}
1299-
}
1300-
13011275
// nested types
13021276
private class MongoIndexManager : MongoIndexManagerBase<TDocument>
13031277
{

0 commit comments

Comments
 (0)