Skip to content

feat: Option for enabled TPC_QUICKACK for sync process#22635

Open
abies wants to merge 2 commits intomainfrom
22189-quickack-for-sync
Open

feat: Option for enabled TPC_QUICKACK for sync process#22635
abies wants to merge 2 commits intomainfrom
22189-quickack-for-sync

Conversation

@abies
Copy link
Contributor

@abies abies commented Dec 17, 2025

Description:
Possibility for enabling TCP_QUICKACK for sync.

Please read https://catonmat.net/tcp-quickack for context.

This PR has it disabled by default, as it is hard to test and does NOT work on Mac (it shouldn't break anything, just won't give any benefits).

Hope is that it can reduce the latency of sync slightly in some environments. If it has no visible benefits after enabling on linux, it is probably not worth to include it.

Related issue(s):

Fixes #22189

Checklist

  • Documented (Code comments, README, etc.)
  • Tested (unit, integration, etc.)

@abies abies added this to the v0.70 milestone Dec 17, 2025
@abies abies self-assigned this Dec 17, 2025
@abies abies requested a review from a team as a code owner December 17, 2025 10:34
@abies abies requested a review from netopyr December 17, 2025 10:34
@lfdt-bot
Copy link

lfdt-bot commented Dec 17, 2025

Snyk checks have passed. No issues have been found so far.

Status Scanner Critical High Medium Low Total (0)
Open Source Security 0 0 0 0 0 issues

💻 Catch issues earlier using the plugins for VS Code, JetBrains IDEs, Visual Studio, and Eclipse.

@codacy-production
Copy link

codacy-production bot commented Dec 17, 2025

Coverage summary from Codacy

See diff coverage on Codacy

Coverage variation Diff coverage
+0.01% (target: -1.00%) 37.50%
Coverage variation details
Coverable lines Covered lines Coverage
Common ancestor commit (4af0af8) 94159 75276 79.95%
Head commit (b8f41df) 94167 (+8) 75288 (+12) 79.95% (+0.01%)

Coverage variation is the difference between the coverage for the head and common ancestor commits of the pull request branch: <coverage of head commit> - <coverage of common ancestor commit>

Diff coverage details
Coverable lines Covered lines Diff coverage
Pull request (#22635) 8 3 37.50%

Diff coverage is the percentage of lines that are covered by tests out of the coverable lines that the pull request added or modified: <covered lines added or modified>/<coverable lines added or modified> * 100%

See your quality gate settings    Change summary preferences

@codecov
Copy link

codecov bot commented Dec 17, 2025

Codecov Report

❌ Patch coverage is 37.50000% with 5 lines in your changes missing coverage. Please review.

Files with missing lines Patch % Lines
...com/swirlds/platform/network/SocketConnection.java 16.66% 5 Missing ⚠️

Impacted file tree graph

@@            Coverage Diff            @@
##               main   #22635   +/-   ##
=========================================
  Coverage     75.99%   76.00%           
- Complexity    23548    23549    +1     
=========================================
  Files          2550     2550           
  Lines         94344    94352    +8     
  Branches      10060    10060           
=========================================
+ Hits          71699    71708    +9     
+ Misses        18968    18964    -4     
- Partials       3677     3680    +3     
Files with missing lines Coverage Δ Complexity Δ
...rg/hiero/consensus/gossip/config/SocketConfig.java 100.00% <ø> (ø) 1.00 <0.00> (ø)
.../java/com/swirlds/platform/network/Connection.java 100.00% <100.00%> (ø) 3.00 <1.00> (+1.00)
...platform/network/protocol/rpc/RpcPeerProtocol.java 67.58% <100.00%> (+0.17%) 33.00 <0.00> (ø)
...com/swirlds/platform/network/SocketConnection.java 87.50% <16.66%> (-8.50%) 19.00 <0.00> (ø)

... and 11 files with indirect coverage changes

Impacted file tree graph

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

Comment on lines 72 to +75
this.configuration = configuration;
this.quickAck = configuration.getConfigData(SocketConfig.class).quickAck();
Copy link
Contributor

@mxtartaglia-sl mxtartaglia-sl Dec 19, 2025

Choose a reason for hiding this comment

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

can we consolidate both config and quickACk and store
this.socketConfig = configuration.getConfigData(SocketConfig.class); instead?

i see many of these cases where we store both the configuration instance and one particular value of the configuration as a field and its is confusing IMO

@Jeffrey-morgan34 Jeffrey-morgan34 modified the milestones: v0.70, v0.71 Jan 8, 2026
abies added 2 commits January 28, 2026 01:22
Signed-off-by: Artur Biesiadowski <artur.biesiadowski@swirldslabs.com>
Signed-off-by: Artur Biesiadowski <artur.biesiadowski@swirldslabs.com>
@abies abies force-pushed the 22189-quickack-for-sync branch from 08831dd to b8f41df Compare January 28, 2026 00:33
@poulok poulok modified the milestones: v0.71, v0.72 Feb 9, 2026
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

Investigate gossip socket setup in light of low latency requirements

5 participants