-
Notifications
You must be signed in to change notification settings - Fork 10.3k
HTTP/2 output processing make over #40925
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
Merged
Merged
Changes from all commits
Commits
Show all changes
77 commits
Select commit
Hold shift + click to select a range
e0d3bbf
WIP
davidfowl f478542
Make more things work
davidfowl d2a5eb5
No more crashes!
davidfowl 6f07604
Added trailers
davidfowl e70cb39
Delete more code so it's obvious where changes are in the diff
davidfowl 1d5ba97
Complete the channel in Complete
davidfowl c60d113
Move to flow control to the FrameWriter instead
davidfowl b14cf57
Use correct lock, add logs
davidfowl 8a59b46
Abort flow control in a single place
davidfowl 01905ee
Remove dead code
davidfowl 30ef07d
Undo chanes
davidfowl 3c3d4f8
Remove call
davidfowl 086c627
Made a few tests pass
davidfowl c72680b
"Fixed" more tests
davidfowl 6257f26
Put back some timeouts
davidfowl 82fe5cd
Made more test fixes
davidfowl 59b51e4
Fix how we stop streams when flow control is being aborted
davidfowl da54396
Always clean up the pipe writer
davidfowl 8f841d4
Fixed more tests
davidfowl 645479a
Make inline scheduling work better
davidfowl 033c54d
Enqueue unflushed bytes before setting observation flag
davidfowl 78a1ea9
Moar fixes
davidfowl 4c88f2f
Cleaned up some tests
davidfowl f57ce67
Remove space
davidfowl 4dfe135
More code cleanup
davidfowl 4d521ad
Made the timeout tests work
davidfowl af84669
Tests pass!
davidfowl 533b6a6
Move header writing to the processing loop
davidfowl 1a3d0f0
Small clean up
davidfowl 17c9cc6
Merged the locks for header writing when possible
davidfowl 8593ef2
More optimizations
davidfowl 6dbfb14
Remove a state machine from the write code path
davidfowl 69a0384
Rename firstWrite to writeHeaders
davidfowl 4b01192
Make the channel unboundeded
davidfowl 42425d9
Shutdown the write queue after the connection loop ends
davidfowl eb78e17
Make James happy
davidfowl 9d80ad4
Rename schedule again to reschedule
davidfowl 2b31f99
Rename cancelled to use one l
davidfowl 7bb3afb
Spelling
davidfowl 0b94cb2
Move trailer writing into a single method
davidfowl 2626567
Remove extra lines...
davidfowl 5b93caa
Remove task chain allocation on shutdown
davidfowl 66a6d7e
Removed the use of the output flow control objects from the source
davidfowl 56481d6
Delete output flow control types
davidfowl 2388dce
Make ConsumeWindow private
davidfowl 9b3be39
Remove if from queue processing
davidfowl de5787e
Oops
davidfowl aa495ea
Fixed logs
davidfowl 9f54e60
Fix merge
JamesNK cb0e7e1
Don't reschedule for nothing
halter73 9b42561
Fix typo
halter73 a1d56b8
Apply PR feedback
davidfowl 610ec1d
Removed unneeded state
davidfowl 7a92bee
More PR suggestions
davidfowl de855de
Remove the FlushHeaders bool and use the unobserved state
davidfowl c3a1289
Small nits
davidfowl 97e728d
Small tweaks
davidfowl 69f204d
More naming changs
davidfowl 66a8d4e
More PR feedback
davidfowl 41d8e2e
Removed usings...
davidfowl 7acfdd4
Aborts and writes are no longer synchronized
davidfowl 600cffb
Preserve existing behavior
davidfowl 243643d
Removed unused state
davidfowl 6af2c0d
Make the test await the process request loop
davidfowl 98963b7
Removed extra flush headers state.
davidfowl 812964f
PR feedback
davidfowl 7cc588d
Improve the fairness of connection window updates
davidfowl c243966
Fixed test
davidfowl 6650be8
Increased pause threshold to 4K
davidfowl 893ebd7
Simplify the queue fairness
davidfowl e41c7b3
Fixed 2 remaining issues
davidfowl 1c542e1
Added last window consumer to the queue when aborting
davidfowl 618f7f2
Stop for RST frames as well.
davidfowl 6ab3f4f
Small tweaks to state management
davidfowl d6e0a09
This is the last commit that fixes all of the bugs (I hope...)
davidfowl 77ff682
Make things "simpler"
davidfowl 02319f0
We're not boxing today
davidfowl File filter
Filter by extension
Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
There are no files selected for viewing
94 changes: 0 additions & 94 deletions
94
src/Servers/Kestrel/Core/src/Internal/Http2/FlowControl/AwaitableProvider.cs
This file was deleted.
Oops, something went wrong.
74 changes: 0 additions & 74 deletions
74
src/Servers/Kestrel/Core/src/Internal/Http2/FlowControl/OutputFlowControl.cs
This file was deleted.
Oops, something went wrong.
97 changes: 0 additions & 97 deletions
97
src/Servers/Kestrel/Core/src/Internal/Http2/FlowControl/StreamOutputFlowControl.cs
This file was deleted.
Oops, something went wrong.
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Uh oh!
There was an error while loading. Please reload this page.
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.
Is this just for testing?
I don't think it needs to be fixed now, but I'd like to see this reworked to utilize
IHttp2StreamLifetimeHandler
. Tests should support customizing the handler so it can be used to raise this event. I did this in the HTTP/3 tests and it works well.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.
Maybe create a follow-up issue.