Skip to content

Commit 943358c

Browse files
authored
Merge pull request #36532 from dotnet/release/9.0-staging
[release/9.0] Merge release/9.0-staging to release/9.0
2 parents c6f0ae0 + b460f82 commit 943358c

File tree

2 files changed

+32
-7
lines changed

2 files changed

+32
-7
lines changed

src/EFCore.Relational/Query/Internal/GroupBySplitQueryingEnumerable.cs

Lines changed: 30 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -360,6 +360,19 @@ public void Dispose()
360360
{
361361
_relationalQueryContext.Connection.ReturnCommand(_relationalCommand!);
362362
_dataReader.Dispose();
363+
364+
if (_resultCoordinator != null)
365+
{
366+
foreach (var dataReader in _resultCoordinator.DataReaders)
367+
{
368+
dataReader?.DataReader.Dispose();
369+
}
370+
371+
_resultCoordinator.DataReaders.Clear();
372+
373+
_resultCoordinator = null;
374+
}
375+
363376
_dataReader = null;
364377
_dbDataReader = null;
365378
}
@@ -526,20 +539,30 @@ private static async Task<bool> InitializeReaderAsync(AsyncEnumerator enumerator
526539
return false;
527540
}
528541

529-
public ValueTask DisposeAsync()
542+
public async ValueTask DisposeAsync()
530543
{
531-
if (_dataReader is not null)
544+
if (_dataReader != null)
532545
{
533546
_relationalQueryContext.Connection.ReturnCommand(_relationalCommand!);
547+
await _dataReader.DisposeAsync().ConfigureAwait(false);
548+
549+
if (_resultCoordinator != null)
550+
{
551+
foreach (var dataReader in _resultCoordinator.DataReaders)
552+
{
553+
if (dataReader != null)
554+
{
555+
await dataReader.DataReader.DisposeAsync().ConfigureAwait(false);
556+
}
557+
}
558+
559+
_resultCoordinator.DataReaders.Clear();
560+
_resultCoordinator = null;
561+
}
534562

535-
var dataReader = _dataReader;
536563
_dataReader = null;
537564
_dbDataReader = null;
538-
539-
return dataReader.DisposeAsync();
540565
}
541-
542-
return default;
543566
}
544567
}
545568
}

src/EFCore.Relational/Query/Internal/SplitQueryingEnumerable.cs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -281,6 +281,7 @@ public void Dispose()
281281
{
282282
_relationalQueryContext.Connection.ReturnCommand(_relationalCommand!);
283283
_dataReader.Dispose();
284+
284285
if (_resultCoordinator != null)
285286
{
286287
foreach (var dataReader in _resultCoordinator.DataReaders)
@@ -430,6 +431,7 @@ public async ValueTask DisposeAsync()
430431
{
431432
_relationalQueryContext.Connection.ReturnCommand(_relationalCommand!);
432433
await _dataReader.DisposeAsync().ConfigureAwait(false);
434+
433435
if (_resultCoordinator != null)
434436
{
435437
foreach (var dataReader in _resultCoordinator.DataReaders)

0 commit comments

Comments
 (0)