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

iotaledger / iota / 27731470792
67%

Build:
DEFAULT BRANCH: develop
Ran 18 Jun 2026 02:45AM UTC
Jobs 1
Files 1107
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

17 Jun 2026 04:57PM UTC coverage: 67.397% (+0.08%) from 67.316%
27731470792

push

github

web-flow
fix(starfish): bound far-future block rounds to cap suspender memory (#11920)

# Description of change

## Intuition

A Byzantine validator can self-author blocks at far-future rounds
(`local + 1e6`, `+1`, …), each citing 2f+1 *fabricated* round-(R-1)
ancestor refs. They pass `verify` — which only bounds ancestor rounds
*relative* to the block's own round and has no absolute upper bound —
but can never connect, so they accumulate per-block state without bound
(suspender entries, shard-reconstructor transactions, DagState shards).
GC is keyed off `gc_round_for_last_commit`, a *low* watermark, so it
never reclaims rounds *above* the frontier. The fix drops a
peer-disseminated block once its round is implausibly far above the
node's accepted frontier; a node that legitimately trails that far
catches up via commit sync, the proper catch-up path.

## What it does

Drop peer-disseminated blocks/headers whose round exceeds
`highest_accepted_round + dag_state_cached_rounds +
peer_round_ahead_margin`, enforced at each peer ingress path and again
in the block manager, all sharing one formula
(`Parameters::peer_disseminated_round_ceiling`) and one metric
(`dropped_far_future_blocks_total`, labeled by `source`):

- **`handle_subscribed_block_bundle`** (streamed bundles) —
`source="block_bundle"`. Placed after signature/header verification and
commit-vote observation, but *before* shard extraction, transaction
messages, digest filtering, and `add_shards`. Required here because the
streaming path populates `ShardReconstructor::processed_transactions`
and `DagState` shard state *before* `BlockManager` ever sees the block.
This ingress point checks only the bundle's *primary* block; far-future
*additional* headers carried in the same bundle are forwarded to core
and bounded by the `BlockManager` layer below.
- **`process_fetched_headers_from_authority`** (header synchronizer) —
`source="header_synchronizer"`. The fetch path has no other round bound:
`verify_block_hea... (continued)

343 of 343 new or added lines in 7 files covered. (100.0%)

1874 existing lines in 61 files now uncovered.

158041 of 234492 relevant lines covered (67.4%)

477724.12 hits per line

Coverage Regressions

Lines Coverage ∆ File
329
82.31
-0.17% crates/iota-core/src/authority.rs
157
70.24
0.67% crates/iota-core/src/grpc_indexes.rs
156
91.15
0.17% crates/iota-core/src/authority/authority_per_epoch_store.rs
103
56.08
-0.28% crates/iota-json-rpc-types/src/iota_object.rs
83
33.1
-0.4% crates/iota-indexer/src/models/objects.rs
81
7.8
-0.02% crates/iota-indexer/src/types.rs
79
38.87
0.12% crates/iota/src/keytool.rs
69
89.04
-0.39% crates/iota-protocol-config/src/lib.rs
67
0.0
0.0% crates/iota-indexer/src/apis/read_api.rs
62
93.94
0.01% crates/starfish/core/src/authority_node.rs
55
77.53
0.14% crates/iota-core/src/checkpoints/mod.rs
53
89.55
-0.01% crates/iota-core/src/authority/suggested_gas_price_calculator.rs
53
0.0
0.0% crates/iota-data-ingestion/src/main.rs
52
84.73
0.0% iota-execution/latest/iota-adapter/src/temporary_store.rs
50
93.18
0.0% crates/iota-core/src/transaction_manager.rs
45
48.7
0.5% crates/iota-replay/src/data_fetcher.rs
35
83.2
0.02% crates/iota-json-rpc/src/read_api.rs
32
61.46
-0.23% crates/iota-network-stack/src/client.rs
28
83.45
3.39% crates/starfish/core/src/core_thread.rs
21
97.69
0.02% crates/starfish/core/src/commit_observer.rs
18
87.55
-2.49% crates/iota-test-transaction-builder/src/lib.rs
15
72.11
-4.08% crates/iota-json-rpc-types/src/lib.rs
14
0.0
0.0% crates/iota-graphql-rpc/src/backward_view/mod.rs
14
95.35
-1.2% crates/iota-json-rpc-types/src/iota_primitives.rs
13
96.47
-0.24% crates/iota-metrics/src/lib.rs
12
75.73
-2.7% crates/iota-grpc-server/src/server.rs
12
37.74
-0.83% crates/iota-types/src/signature.rs
12
93.47
0.24% crates/starfish/core/src/authority_service.rs
11
82.54
1.0% crates/iota-core/src/authority_client/mod.rs
11
0.0
0.0% crates/iota-graphql-rpc/src/backward_view/historical.rs
11
94.93
0.08% crates/starfish/core/src/core.rs
8
71.79
0.0% crates/iota-json-rpc-types/src/iota_owner.rs
8
86.99
-2.44% crates/iota-transaction-builder/src/package.rs
8
42.86
-7.14% crates/iota-types/src/collection_types.rs
8
82.75
-0.26% crates/iota-types/src/transaction.rs
7
60.47
-0.28% crates/iota-json-rpc-types/src/iota_transaction.rs
7
75.34
0.88% crates/test-cluster/src/lib.rs
6
91.85
-4.44% crates/iota-package-management/src/lib.rs
5
79.2
-0.69% crates/iota-core/src/traffic_controller/mod.rs
5
55.77
-9.62% crates/iota-json-rpc-types/src/iota_coin.rs
5
45.54
0.99% crates/iota-json-rpc-types/src/object_changes.rs
4
73.2
-2.06% crates/iota-core/src/test_utils.rs
4
0.0
0.0% crates/iota-graphql-rpc/src/backward_view/consistent.rs
4
60.0
-3.08% crates/iota-stardust-types/src/block/output/basic.rs
4
58.33
-33.33% crates/iota-stardust-types/src/block/output/unlock_condition/timelock.rs
4
89.14
-0.99% crates/iota-types/src/base_types.rs
4
86.76
-5.88% crates/iota-types/src/quorum_driver_types.rs
3
49.56
0.0% crates/iota-genesis-builder/src/stardust/types/snapshot.rs
3
79.37
0.0% crates/iota-sdk/src/lib.rs
3
77.01
-1.09% crates/iota-sdk/src/wallet_context.rs
3
19.61
-5.88% crates/iota-stardust-types/src/block/address/mod.rs
3
65.96
-6.38% crates/iota-stardust-types/src/block/output/output_id.rs
3
72.2
-0.62% crates/iota-swarm/src/memory/swarm.rs
3
0.0
-10.0% crates/simulacrum/src/transaction_executor.rs
2
88.66
-0.34% crates/iota-core/src/connection_monitor.rs
2
74.96
0.29% crates/iota-network/src/randomness/mod.rs
1
73.11
-0.18% crates/iota-core/src/authority_server/validator.rs
1
91.8
-0.11% crates/iota-core/src/epoch/randomness.rs
1
91.62
0.26% crates/iota-core/src/execution_cache/writeback_cache.rs
1
94.52
-0.13% crates/iota-network-stack/src/multiaddr.rs
1
91.55
0.28% crates/starfish/core/src/header_synchronizer.rs
Jobs
ID Job ID Ran Files Coverage
1 nextest+simtest - 27731470792.1 18 Jun 2026 02:45AM UTC 1107
67.4
GitHub Action Run
Source Files on build 27731470792
  • Tree
  • List 1107
  • Changed 111
  • Source Changed 69
  • Coverage Changed 91
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #27731470792
  • 803cb40f on github
  • Prev Build on develop (#27588758703)
  • Next Build on develop (#27800682022)
  • Delete
STATUS · Troubleshooting · Open an Issue · Sales · Support · CAREERS · ENTERPRISE · START FREE · SCHEDULE DEMO
ANNOUNCEMENTS · TWITTER · TOS & SLA · Supported CI Services · What's a CI service? · Automated Testing

© 2026 Coveralls, Inc