-
Notifications
You must be signed in to change notification settings - Fork 10.1k
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
Conversation
src/Servers/Kestrel/test/InMemory.FunctionalTests/HttpsConnectionMiddlewareTests.cs
Outdated
Show resolved
Hide resolved
7b9a3a3
to
c6f2b06
Compare
.../clients/java/signalr/test/src/main/java/com/microsoft/signalr/LongPollingTransportTest.java
Outdated
Show resolved
Hide resolved
- `@Ignore` is no longer supported w/ jUnit 5 / Juniper
@@ -14,6 +14,7 @@ namespace Microsoft.AspNetCore.Server.Kestrel.InMemory.FunctionalTests | |||
public class LoggingConnectionMiddlewareTests : LoggedTest | |||
{ | |||
[Fact] | |||
[QuarantinedTest("https://github.com/dotnet/aspnetcore/issues/34561")] |
There was a problem hiding this comment.
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:
aspnetcore/src/Servers/Kestrel/Core/src/Internal/Infrastructure/KestrelConnectionOfT.cs
Lines 32 to 46 in 67deada
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.
Other tests in this |
ContentLength_Received_MultipleDataFramesOverSize_Reset
, Quarantine Http2StreamTests .ContentLength_Received_MultipleDataFramesOverSize_Reset #33373 fix seems to have workedLoggingConnectionMiddlewareCanBeAddedBeforeAndAfterHttps()
,LoggingConnectionMiddlewareCanBeAddedBeforeAndAfterHttps()
is flaky #34561LongPollingTransportOnReceiveGetsCalled()
because we can't quarantine Java tests,LongPollingTransportOnReceiveGetsCalled()
is flaky #34563