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

iotaledger / iota / 33935607991
70%

Build:
DEFAULT BRANCH: develop
Ran 05 Sep 2026 02:08AM UTC
Jobs 1
Files 1070
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

04 Sep 2026 02:30PM UTC coverage: 70.503% (+0.03%) from 70.471%
33935607991

push

github

web-flow
refactor(typed-store): make the lower bound of prefix scans exclusive-capable (#12831)

# Description of change

`DBMap::safe_iter_with_prefix_from(prefix, cursor)` can resume a prefix
scan only *at* the cursor: the start key is always included. Every
caller that needs "strictly after the cursor" (a paginated reader
resuming from the last row it returned) emulates that on its own:
`skip(1)` on the result stream (gRPC readers for owned objects, dynamic
fields and package versions), `cursor.unwrap_or(ObjectId::ZERO)` plus
`skip` (JSON-RPC dynamic-field index), a hand-rolled
`version.next().unwrap()` (authority store).

This PR makes the lower bound a `Bound<&C>`, so a caller states
`Included`, `Excluded` or `Unbounded` explicitly. `Excluded` reuses the
existing byte-successor logic of `prefix_iterator_bounds_with_range`;
the scan never leaves the prefix, including for a cursor whose tail is
all `0xFF` (the successor of the tail alone would sort past the prefix,
but the upper bound at the end of the prefix cuts it off; covered by a
unit test).

Along the way, `prefix_iterator_bounds` (whole prefix) becomes a thin
wrapper over `prefix_iterator_bounds_with_range` (prefix plus a range
over the key tail): the former is the `..` special case of the latter.
Previously the dependency ran the other way and the prefix was
serialized twice on the unbounded-upper path.

`safe_iter_with_prefix_after(prefix, cursor: Option<&C>)` names the one
form paginated readers need (strictly after the cursor, or the whole
prefix without one), so they pass the cursor directly instead of mapping
it onto a `Bound`.

Pure refactor: every existing call site is updated mechanically to
`Bound::Included(<old argument>)` and behaves exactly as before.
Switching the paginated readers to `Excluded`, which is what removes
their `skip(1)` and the bug it hides, is done in #12832.

Not in this PR:

- `package_versions_iter` (gRPC) and JSON-RPC
`IndexStore::get_dynamic_fields_iterator` move to ... (continued)

35 of 38 new or added lines in 5 files covered. (92.11%)

655 existing lines in 27 files now uncovered.

178390 of 253026 relevant lines covered (70.5%)

447509.53 hits per line

Uncovered Changes

Lines Coverage ∆ File
3
83.27
0.0% crates/iota-core/src/authority/authority_store_tables.rs

Coverage Regressions

Lines Coverage ∆ File
137
0.0
0.0% crates/iota-tool/src/lib.rs
112
65.93
-0.4% crates/iota-grpc-server/src/merge.rs
75
91.73
0.38% crates/iota-network/src/state_sync/mod.rs
69
55.66
0.42% crates/iota-types/src/storage/shared_in_memory_store.rs
44
90.81
11.38% crates/iota-snapshot/src/reader.rs
38
88.39
0.32% crates/iota-config/src/node.rs
37
91.57
0.93% crates/iota-snapshot/src/progress.rs
22
0.0
-68.75% crates/typed-store/src/traits.rs
21
0.0
0.0% crates/iota-indexer/src/restore/verify.rs
13
73.59
-1.88% crates/iota-network/src/randomness/mod.rs
12
0.0
-54.55% crates/iota-cluster-test/src/config.rs
10
0.0
0.0% crates/iota-indexer/src/restore/orchestration.rs
10
80.33
2.69% crates/test-cluster/src/lib.rs
9
84.78
-0.82% crates/iota-json-rpc/src/read_api.rs
7
90.46
-0.92% crates/iota-core/src/authority/consensus_quarantine.rs
7
93.14
8.03% crates/iota-node-transaction-builder/src/lib.rs
6
70.8
-0.25% crates/iota/src/client_commands.rs
6
78.77
-1.0% crates/iota-types/src/crypto.rs
5
96.88
0.1% crates/iota-config/src/p2p.rs
3
75.73
-2.91% crates/iota-grpc-server/src/server.rs
3
89.7
-0.26% crates/iota-grpc-server/src/types.rs
2
87.1
-0.06% crates/iota-core/src/authority.rs
2
28.42
-1.05% crates/iota-core/src/transaction_driver/error.rs
2
66.67
-4.17% crates/iota-network-stack/src/anemo_ext.rs
1
91.52
0.13% crates/iota-core/src/execution_cache/writeback_cache.rs
1
93.65
-0.12% crates/iota-core/src/execution_scheduler/transaction_manager.rs
1
98.62
-0.28% crates/iota-core/src/signature_verifier.rs
Jobs
ID Job ID Ran Files Coverage
1 nextest+simtest - 33935607991.1 05 Sep 2026 02:07AM UTC 1070
70.5
GitHub Action Run
Source Files on build 33935607991
  • Tree
  • List 1070
  • Changed 48
  • Source Changed 18
  • Coverage Changed 47
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #33935607991
  • 681790de on github
  • Prev Build on develop (#33825041707)
  • Next Build on develop (#34003649292)
  • 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