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

iotaledger / iota / 34003649292
70%

Build:
DEFAULT BRANCH: develop
Ran 06 Sep 2026 02:14AM 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.544% (+0.04%) from 70.503%
34003649292

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%)

138 existing lines in 12 files now uncovered.

178495 of 253026 relevant lines covered (70.54%)

442632.9 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
48
87.01
0.0% crates/iota-core/src/grpc_indexes.rs
34
80.75
0.0% crates/iota-core/src/jsonrpc_index.rs
29
87.22
0.0% crates/typed-store/src/database.rs
12
90.54
-1.2% crates/iota-network/src/state_sync/mod.rs
4
75.51
-0.62% crates/iota-core/src/execution_cache.rs
2
78.54
-0.42% crates/iota-core/src/storage.rs
2
75.32
1.73% crates/iota-network/src/randomness/mod.rs
2
77.91
-2.33% crates/iota-types/src/signature_verification.rs
2
97.91
-0.16% crates/starfish/core/src/commit_observer.rs
1
89.96
0.26% crates/iota-grpc-server/src/types.rs
1
95.56
-0.03% crates/starfish/core/src/authority_service.rs
1
80.24
-0.09% crates/test-cluster/src/lib.rs
Jobs
ID Job ID Ran Files Coverage
1 nextest+simtest - 34003649292.1 06 Sep 2026 02:14AM UTC 1070
70.54
GitHub Action Run
Source Files on build 34003649292
  • Tree
  • List 1070
  • Changed 19
  • Source Changed 0
  • Coverage Changed 19
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #34003649292
  • 681790de on github
  • Prev Build on develop (#33935607991)
  • Next Build on develop (#34072757147)
  • 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