diff --git a/src/Servers/Kestrel/test/InMemory.FunctionalTests/ResponseTests.cs b/src/Servers/Kestrel/test/InMemory.FunctionalTests/ResponseTests.cs index f686865253..ec1d90072a 100644 --- a/src/Servers/Kestrel/test/InMemory.FunctionalTests/ResponseTests.cs +++ b/src/Servers/Kestrel/test/InMemory.FunctionalTests/ResponseTests.cs @@ -2555,24 +2555,27 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests [Fact] [QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/24164")] + [Repeat(100)] public async Task AppAbortViaIConnectionLifetimeFeatureIsLogged() { var testContext = new TestServiceContext(LoggerFactory); - await using (var server = new TestServer(httpContext => + var closeTaskTcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); + + await using (var server = new TestServer(async httpContext => { + var closeTask = await closeTaskTcs.Task.DefaultTimeout(); var feature = httpContext.Features.Get(); feature.Abort(); // Ensure the response doesn't get flush before the abort is observed. - var tcs = new TaskCompletionSource(TaskCreationOptions.RunContinuationsAsynchronously); - feature.ConnectionClosed.Register(() => tcs.TrySetResult()); - - return tcs.Task; + await closeTask; }, testContext)) { using (var connection = server.CreateConnection()) { + closeTaskTcs.SetResult(connection.TransportConnection.WaitForCloseTask); + await connection.Send( "GET / HTTP/1.1", "Host:", diff --git a/src/Shared/Buffers.MemoryPool/DiagnosticMemoryPool.cs b/src/Shared/Buffers.MemoryPool/DiagnosticMemoryPool.cs index 2e2857ba41..2432af6ee2 100644 --- a/src/Shared/Buffers.MemoryPool/DiagnosticMemoryPool.cs +++ b/src/Shared/Buffers.MemoryPool/DiagnosticMemoryPool.cs @@ -131,6 +131,8 @@ namespace System.Buffers { SetAllBlocksReturned(); } + + _pool.Dispose(); } }