-
Notifications
You must be signed in to change notification settings - Fork 4.7k
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
[release/6.0] [QUIC] Add QuicStream.WaitForWriteCompletionAsync #58415
Conversation
Note regarding the This serves as a reminder for when your PR is modifying a ref *.cs file and adding/modifying public APIs, to please make sure the API implementation in the src *.cs file is documented with triple slash comments, so the PR reviewers can sign off that change. |
Tagging subscribers to this area: @dotnet/ncl |
Thanks @JamesNK |
@JamesNK there is Quic test failure (see log) in test
And another in log in test
runtime-staging and installer failures seem to be unrelated, rerunning them. |
The 2 Mock test failures are suspicious -- they didn't fail anywhere else in last 2 months (not in official runs nor in PRs). |
I can reproduce the failure locally. The problem is the I'll do the same in the main branch PR. |
e7622b4
to
966e2cc
Compare
Risk here is low. This is a new API and the code to implement it is mostly additive and should not impact existing code paths. |
Approved for release/6.0. Significant bug fix for key .NET 6 feature. Minimal risk to other features. Privately tested by ASP.NET. @karelz I assume you are supportive. approved from my end. |
@steveisok note the timeout of the tvOSSimulator. It looks like of the tests, after ~50 mins. |
The typical tvOS build step should be about an hour and a half, so I would guess we got a slower osx hosted pool machine. As for helix, the times vary wildly (between 15-30 min usually) and it looks like this run was lengthy. I don't know if we constitute it as a long pole. The build is definitely impacted by the machine we get from the hosted pool. |
@MattGal would this be a case of "a mysterious slow mac" ? |
Will look and add it to my list. We're hoping today to be able to send some builds into their test pool where performance might be more measurable. |
@danmoseley I added the build to the IcM, but here's something I hadn't realized previously. Despite the (always almost 2 hour) build stage being maybe a 20% more time than a few other runs I looked at, investigating this made me realize two important things that someone with area expertise should be asked to consider:
... having the same condition on building test projects as sending to Helix could really save some time. All that said, this bit makes me still want the macOS team to consider it; uploading to the storage account from this agent just went into a black hole (if it had finished uploading the payloads for this run it'd log a correlation id):
Since it spent 55 minutes doing ? (My guess: very slow Azure storage uploads of your very large payloads) |
@steveisok / @jaredpar tagging you about the seemingly unnecessary generation of several gigs of .apps. |
Good find. That is something we should fix. |
Trying out a "don't build needless tests" PR in #58511 |
Backport of #58236 to release/6.0
Fixes #58229
/cc @JamesNK
Customer Impact
Canceled and aborted HTTP/3 requests in certain states don't have a way to tell Kestrel that they have ended. A request that a client has aborted could continue on on the server, taking up memory and other resources. A client could accidentally or maliciously use up memory on the server by starting and canceling many requests.
This PR adds an API that Kestrel can use to correctly be notified of client cancellation. When cancellation or abort happens then Kestrel will notify the current request that it should stop.
Note: System.Net.Quic is internal in .NET 6. Its only users are HttpClient and Kestrel.
Testing
The changes have been integrated with Kestrel in a draft PR. We have verified that the problem is fixed.
Also, unit testing in System.Net.Quic solution.
Risk
Low. This is a change in System.Net.Quic. It will only be used by new code in .NET 6 for HTTP/3. Additionally, this is a change that shouldn't impact HttpClient at all because HttpClient won't use it.
Risk to existing H3 functionality is low. This is a new API and the code to implement it is mostly additive and should not impact existing code paths.
@adityamandaleeka @karelz