Repository navigation
Refactor QUIC client to reuse connection for multiple streams - #1983
Merged
Merged
Conversation
… all streams Previously a new QUIC connection (and endpoint) was created for every single request. Now QUICClient holds a single Connection established at construction time, and each download request opens a new bi-directional stream over that shared connection. The client pool checks whether the connection is still alive before reusing an entry, and recreates it when the connection has been closed. The send half of each stream is now explicitly finished so the request is delivered reliably. Internal helper methods are renamed from read_*/connect_and_write_request to recv_*/send_request to better reflect their role. Signed-off-by: Gaius <gaius.qi@gmail.com>
hhhhsdxxxx
approved these changes
Aug 12, 2026
Codecov Report❌ Patch coverage is Additional details and impacted files@@ Coverage Diff @@
## main #1983 +/- ##
==========================================
- Coverage 51.80% 51.77% -0.04%
==========================================
Files 100 100
Lines 27161 27189 +28
==========================================
+ Hits 14071 14076 +5
- Misses 13090 13113 +23
🚀 New features to boost your workflow:
|
entrop-tankos
pushed a commit
to entrop-tankos/client-backtosource
that referenced
this pull request
Sep 21, 2026
…flyoss#1983) refactor(quic): establish connection once per client and reuse it for all streams Previously a new QUIC connection (and endpoint) was created for every single request. Now QUICClient holds a single Connection established at construction time, and each download request opens a new bi-directional stream over that shared connection. The client pool checks whether the connection is still alive before reusing an entry, and recreates it when the connection has been closed. The send half of each stream is now explicitly finished so the request is delivered reliably. Internal helper methods are renamed from read_*/connect_and_write_request to recv_*/send_request to better reflect their role. Signed-off-by: Gaius <gaius.qi@gmail.com>
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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Description
Previously a new QUIC connection (and endpoint) was created for every single request. Now QUICClient holds a single Connection established at construction time, and each download request opens a new bi-directional stream over that shared connection. The client pool checks whether the connection is still alive before reusing an entry, and recreates it when the connection has been closed. The send half of each stream is now explicitly finished so the request is delivered reliably. Internal helper methods are renamed from read_/connect_and_write_request to recv_/send_request to better reflect their role.
Related Issue
Motivation and Context
Screenshots (if appropriate)