Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Skip, quarantine and un-Quarantine #34564

Merged
merged 3 commits into from
Jul 21, 2021
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
Original file line number Diff line number Diff line change
Expand Up @@ -1080,7 +1080,6 @@ await InitializeConnectionAsync(async context =>
}

[Fact]
[QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/33373")]
public async Task ContentLength_Received_MultipleDataFramesOverSize_Reset()
{
IOException thrownEx = null;
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests
public class LoggingConnectionMiddlewareTests : LoggedTest
{
[Fact]
[QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/34561")]
Copy link
Member

@halter73 halter73 Jul 21, 2021

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

| [6.375s] Microsoft.AspNetCore.Server.Kestrel.Connections Debug: Connection id "0HMAB2I8425HF" accepted.
| [10.059s] Microsoft.AspNetCore.Server.Kestrel.Connections Debug: Connection id "0HMAB2I8425HF" started.

[20.479s] Microsoft.AspNetCore.Server.Kestrel.Https.Internal.HttpsConnectionMiddleware Debug: Authentication of the HTTPS connection timed out.

It looks like there might have been some serious threadpool starvation for the "accepted" and "started" logs to be ~4 seconds apart. The only thing between those two logs is a threadpool dispatch. I think that's what caused the handshake timeout and failed test.

"Accepted" log:

Log.ConnectionAccepted(connection.ConnectionId);
KestrelEventSource.Log.ConnectionQueuedStart(connection);
ThreadPool.UnsafeQueueUserWorkItem(kestrelConnection, preferLocal: false);

Which immediately dispatches to the "started" log:

void IThreadPoolWorkItem.Execute()
{
_ = ExecuteAsync();
}
internal async Task ExecuteAsync()
{
var connectionContext = _transportConnection;
try
{
KestrelEventSource.Log.ConnectionQueuedStop(connectionContext);
Logger.ConnectionStart(connectionContext.ConnectionId);
KestrelEventSource.Log.ConnectionStart(connectionContext);

I'm not sure we should be quarantining tests because of threadpool starvation caused by who-knows-what. This seems to just be the unlucky victim.

public async Task LoggingConnectionMiddlewareCanBeAddedBeforeAndAfterHttps()
{
await using (var server = new TestServer(context =>
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -13,6 +13,7 @@
import java.util.concurrent.atomic.AtomicInteger;
import java.util.concurrent.atomic.AtomicReference;

import org.junit.jupiter.api.Disabled;
import org.junit.jupiter.api.Test;

import io.reactivex.rxjava3.core.Single;
Expand Down Expand Up @@ -125,6 +126,7 @@ public void CanSetAndTriggerOnReceive() {
assertTrue(onReceivedRan.get());
}

@Disabled("https://github.com/dotnet/aspnetcore/issues/34563")
@Test
public void LongPollingTransportOnReceiveGetsCalled() {
AtomicInteger requestCount = new AtomicInteger();
Expand Down