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

separates out routing repair requests from establishing connections #33742

Merged
merged 1 commit into from
Oct 19, 2023

Conversation

behzadnouri
Copy link
Contributor

Problem

Currently each outgoing repair request will attempt to establish a connection if one does not already exist. This is very wasteful and consumes many tokio tasks if the remote node is down or unresponsive.

Summary of Changes

The commit decouples routing packets from establishing connections by adding a buffering channel for each remote address. Outgoing packets are always sent down this channel to be processed once the connection is established. If connecting attempt fails, all packets already pushed to the channel are dropped at once, reducing the number of attempts to make a connection if the remote node is down or unresponsive.

Currently each outgoing repair request will attempt to establish a
connection if one does not already exist. This is very wasteful and
consumes many tokio tasks if the remote node is down or unresponsive.

The commit decouples routing packets from establishing connections by
adding a buffering channel for each remote address. Outgoing packets are
always sent down this channel to be processed once the connection is
established. If connecting attempt fails, all packets already pushed to
the channel are dropped at once, reducing the number of attempts to make
a connection if the remote node is down or unresponsive.
@codecov
Copy link

codecov bot commented Oct 17, 2023

Codecov Report

Merging #33742 (80aba99) into master (6efc7ec) will increase coverage by 0.0%.
Report is 6 commits behind head on master.
The diff coverage is 94.1%.

@@           Coverage Diff           @@
##           master   #33742   +/-   ##
=======================================
  Coverage    81.7%    81.8%           
=======================================
  Files         806      806           
  Lines      217859   217920   +61     
=======================================
+ Hits       178199   178285   +86     
+ Misses      39660    39635   -25     

Copy link
Contributor

@jbiseda jbiseda left a comment

Choose a reason for hiding this comment

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

LGTM

@behzadnouri behzadnouri merged commit 7aa0fae into solana-labs:master Oct 19, 2023
31 checks passed
@behzadnouri behzadnouri deleted the repair-quic-router branch October 19, 2023 13:25
@behzadnouri behzadnouri added the v1.17 PRs that should be backported to v1.17 label Oct 19, 2023
mergify bot pushed a commit that referenced this pull request Oct 19, 2023
…33742)

Currently each outgoing repair request will attempt to establish a
connection if one does not already exist. This is very wasteful and
consumes many tokio tasks if the remote node is down or unresponsive.

The commit decouples routing packets from establishing connections by
adding a buffering channel for each remote address. Outgoing packets are
always sent down this channel to be processed once the connection is
established. If connecting attempt fails, all packets already pushed to
the channel are dropped at once, reducing the number of attempts to make
a connection if the remote node is down or unresponsive.

(cherry picked from commit 7aa0fae)
mergify bot added a commit that referenced this pull request Oct 20, 2023
…tions (backport of #33742) (#33769)

separates out routing repair requests from establishing connections (#33742)

Currently each outgoing repair request will attempt to establish a
connection if one does not already exist. This is very wasteful and
consumes many tokio tasks if the remote node is down or unresponsive.

The commit decouples routing packets from establishing connections by
adding a buffering channel for each remote address. Outgoing packets are
always sent down this channel to be processed once the connection is
established. If connecting attempt fails, all packets already pushed to
the channel are dropped at once, reducing the number of attempts to make
a connection if the remote node is down or unresponsive.

(cherry picked from commit 7aa0fae)

Co-authored-by: behzad nouri <behzadnouri@gmail.com>
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
v1.17 PRs that should be backported to v1.17
Projects
None yet
Development

Successfully merging this pull request may close these issues.

2 participants