• Home
  • Features
  • Pricing
  • Docs
  • Announcements
  • Sign In

iotaledger / iota / 37557297359
72%

Build:
DEFAULT BRANCH: develop
Ran 07 Oct 2026 02:23AM UTC
Jobs 1
Files 1108
Run time 2min
Badge
Embed ▾
README BADGES
x

If you need to use a raster PNG badge, change the '.svg' to '.png' in the link

Markdown

Textile

RDoc

HTML

Rst

06 Oct 2026 12:46PM UTC coverage: 70.465% (+0.1%) from 70.36%
37557297359

push

github

web-flow
fix(consensus): serve every peer while others stall or hoard admission slots (#13049)

# Description of change

Admission is charged when a request's headers land and released when its
response has been fully written. In between, a peer could keep a slot
busy at almost no cost, in two ways. It could send the request headers
and never the message; only the 120 s fallback `request_timeout` ended
that. Or it could send a valid request and never read the response; no
timeout ended that at all, because the transport polls a response body
only when the receiver grants window, and the server cannot reset one
stream. Commit fetches also draw on a budget of 16 shared by all peers,
so two peers at their per-peer cap of 8 held all of it and no other peer
was served.

Three changes:

- A request whose message has not fully arrived within 10 s of its
headers is answered with `DEADLINE_EXCEEDED`. The wrapper sits inside
the routes, around the generated service, because that is where the
request body carries tonic's type; the router layers see axum's.
- A peer holding no commit fetch is always granted one; further fetches
from a peer are granted only while the total held stays below
`max_commit_fetches_total`. The total is therefore exceeded by at most
one slot per peer, and a peer whose extra slots are cut cannot take them
back while other peers are being served.
- A response not fully written within the longest wait any requester has
for one fetch attempt, 480 s, gives up its contents and the node-wide
commit-fetch slot. The peer's own slot stays charged until the stream
really ends, so a dead stream counts against the peer that left it and
eight of them stop its commit fetches altogether. Frames handed to the
transport are 64 KiB copies, so what a reclaim cannot free stays small.
The block-subscription stream is exempt from both deadlines.

Both deadlines are constants. The request message is at most 1 MiB by
default, so 10 s covers any working link. The response... (continued)

639 of 675 new or added lines in 9 files covered. (94.67%)

587 existing lines in 28 files now uncovered.

186206 of 264254 relevant lines covered (70.46%)

441509.38 hits per line

Uncovered Changes

Lines Coverage ∆ File
7
95.42
0.44% crates/starfish/core/src/commit_syncer/fast.rs
7
88.94
-0.71% crates/starfish/core/src/commit_syncer/regular.rs
6
93.62
crates/iota-network-stack/src/request_message_timeout.rs
5
98.35
0.03% crates/starfish/core/src/network/admission.rs
4
79.66
0.77% crates/starfish/core/src/commit_syncer/mod.rs
4
90.66
1.55% crates/starfish/core/src/network/tonic_network.rs
3
97.44
-2.56% crates/iota-network-stack/src/concurrency.rs

Coverage Regressions

Lines Coverage ∆ File
126
90.66
1.55% crates/starfish/core/src/network/tonic_network.rs
95
96.88
0.04% crates/starfish/core/src/dag_state.rs
82
82.86
-1.69% crates/iota-move-build/src/lib.rs
77
79.66
0.77% crates/starfish/core/src/commit_syncer/mod.rs
56
95.42
0.44% crates/starfish/core/src/commit_syncer/fast.rs
27
97.23
0.15% crates/starfish/core/src/core.rs
15
80.66
0.0% crates/iota-grpc-server/src/transaction_execution_service/mod.rs
14
50.44
-6.19% crates/iota-grpc-server/src/error.rs
13
95.87
-0.33% crates/starfish/core/src/authority_service.rs
12
92.53
0.08% crates/iota-types/src/move_package.rs
11
96.68
0.0% crates/starfish/config/src/parameters.rs
9
86.89
0.0% crates/iota-grpc-server/src/transaction_execution_service/simulate.rs
9
92.74
0.37% crates/starfish/core/src/context.rs
6
97.44
-2.56% crates/iota-network-stack/src/concurrency.rs
6
78.98
-0.99% crates/iota-types/src/crypto.rs
4
57.28
-1.24% crates/iota/src/client_ptb/ptb.rs
4
96.49
0.09% crates/starfish/core/src/authority_set.rs
4
91.97
-0.35% crates/starfish/core/src/block_header.rs
3
89.0
-0.69% crates/iota-core/src/connection_monitor.rs
2
92.02
-0.07% crates/iota-core/src/authority/authority_per_epoch_store.rs
2
78.5
-0.42% crates/iota-core/src/storage.rs
2
89.92
-0.13% crates/iota-grpc-server/src/types.rs
2
75.32
0.14% crates/iota-network/src/randomness/mod.rs
2
97.91
-0.16% crates/starfish/core/src/commit_observer.rs
1
91.54
0.13% crates/iota-core/src/execution_cache/writeback_cache.rs
1
96.32
-0.53% crates/iota-core/src/transaction_driver/mod.rs
1
88.94
-0.71% crates/starfish/core/src/commit_syncer/regular.rs
1
94.34
-0.03% crates/starfish/core/src/header_synchronizer.rs
Jobs
ID Job ID Ran Files Coverage
1 nextest+simtest - 37557297359.1 07 Oct 2026 02:23AM UTC 1108
70.46
GitHub Action Run
Source Files on build 37557297359
  • Tree
  • List 1108
  • Changed 41
  • Source Changed 21
  • Coverage Changed 40
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #37557297359
  • 0ba2ae97 on github
  • Prev Build on develop (#37399000942)
  • Next Build on develop (#37713070747)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE TRIAL · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc