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

iotaledger / iota / 28211780407
67%

Build:
DEFAULT BRANCH: develop
Ran 26 Jun 2026 02:38AM 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

25 Jun 2026 10:00PM UTC coverage: 67.535% (+0.05%) from 67.488%
28211780407

push

github

web-flow
fix(starfish): process commit observer recovery in bounded batches (#12037)

# Description of change

During recovery, the commit observer's
`recover_linearizer_and_solidifier_state` scanned the entire
`recovery_start..=last_commit_index` range into a single
`Vec<TrustedCommit>` and accumulated one `PendingSubDag` per commit
before seeding the commit solidifier. When the unprocessed range is
large (e.g. transaction data lagged behind commits for a long period so
commits stay unprocessed), the whole range was materialized in memory at
once at startup.

This processes the range in bounded batches, mirroring
`resend_unprocessed_solid_commits`: each batch scans one chunk, rebuilds
linearizer state for commits in the `gc_depth * 2` window, seeds the
solidifier, and finalizes solid sub-dags. The solidifier cursor is set
once before the loop; disjoint, ascending, contiguous batches feed the
solidifier exactly as a single pass would, so the recovered
linearizer/solidifier state and the set and order of sub-dags sent to
the consumer are unchanged — only peak memory during recovery is reduced
(the transient scan and the per-batch pending buffer become `O(batch)`
instead of `O(range)`).

The batch size is a `commit_recovery_batch_size` local parameter
(default 250; 3 under the simulator), shared by both recovery phases.
`Parameters::validate` rejects a zero value, which would otherwise panic
`step_by(0)`.

The commit solidifier's internal pending-sub-dag buffer still holds the
unprocessed range while the front of that range is missing transactions;
that is inherent to seeding (identical to the previous single-pass
behaviour) and is a separate, tail-side concern.

## Links to any relevant issues

Fixes #12036

## How the change has been tested

- [x] Basic tests (linting, compilation, formatting, unit/integration
tests)
- [x] Patch-specific tests (correctness, functionality coverage)
- [x] I have added tests that prove my fix is effective or that my
feature works... (continued)

70 of 71 new or added lines in 3 files covered. (98.59%)

869 existing lines in 28 files now uncovered.

158805 of 235145 relevant lines covered (67.53%)

470278.7 hits per line

Uncovered Changes

Lines Coverage ∆ File
1
97.93
0.05% crates/starfish/core/src/commit_observer.rs

Coverage Regressions

Lines Coverage ∆ File
174
68.97
1.26% crates/iota-core/src/authority/authority_store.rs
131
80.25
0.13% crates/iota-core/src/jsonrpc_index.rs
124
73.13
0.02% crates/iota-core/src/authority_server/validator.rs
72
96.34
-0.0% crates/starfish/core/src/dag_state.rs
69
46.24
0.14% crates/iota-transactional-test-runner/src/simulator_persisted_store.rs
59
93.95
0.01% crates/starfish/core/src/authority_node.rs
52
69.88
-0.35% crates/iota-core/src/grpc_indexes.rs
47
84.43
0.08% crates/starfish/core/src/commit.rs
40
76.9
0.22% crates/iota-core/src/authority/authority_store_tables.rs
28
86.15
1.05% crates/typed-store/src/database.rs
23
97.93
0.05% crates/starfish/core/src/commit_observer.rs
18
94.21
-0.13% crates/starfish/core/src/leader_schedule.rs
8
95.95
1.73% crates/starfish/config/src/parameters.rs
3
91.46
-0.14% crates/starfish/core/src/header_synchronizer.rs
3
98.64
0.14% crates/starfish/core/src/leader_scoring.rs
2
81.25
-0.17% crates/iota-core/src/authority_aggregator.rs
2
82.27
-0.06% crates/iota-core/src/authority.rs
2
91.98
-0.84% crates/iota-http/src/lib.rs
2
98.18
0.1% crates/starfish/config/src/committee.rs
2
93.51
0.28% crates/starfish/core/src/storage/rocksdb_store.rs
1
91.8
-0.11% crates/iota-core/src/epoch/randomness.rs
1
91.37
0.13% crates/iota-core/src/execution_cache/writeback_cache.rs
1
63.23
-0.17% crates/iota-grpc-server/src/merge.rs
1
89.03
-0.14% crates/iota-network/src/discovery/mod.rs
1
93.47
-0.04% crates/starfish/core/src/authority_service.rs
1
89.08
0.11% crates/starfish/core/src/commit_syncer/fast.rs
1
75.25
-0.1% crates/test-cluster/src/lib.rs
1
98.85
0.15% crates/typed-store/src/rocks/safe_iter.rs
Jobs
ID Job ID Ran Files Coverage
1 nextest+simtest - 28211780407.1 26 Jun 2026 02:38AM UTC 1108
67.53
GitHub Action Run
Source Files on build 28211780407
  • Tree
  • List 1108
  • Changed 50
  • Source Changed 29
  • Coverage Changed 46
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #28211780407
  • 4f8ce509 on github
  • Prev Build on develop (#28141212998)
  • Next Build on develop (#28274706486)
  • 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