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

tari-project / tari / 26636618717
60%

Build:
DEFAULT BRANCH: development
Ran 29 May 2026 01:19PM UTC
Jobs 1
Files 702
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

29 May 2026 12:14PM UTC coverage: 61.288% (+0.01%) from 61.276%
26636618717

push

github

web-flow
feat(wallet): migrate legacy output key-ids to current format on startup (closes #7829) (#7859)

## Summary

Closes #7829.

On startup, the `OutputManagerService` now spawns a background task that
converts any `spending_key` / `script_private_key` column values stored
in the legacy `"managed.<branch>.<index>"` or `"imported.<pubkey>"`
format to the current `TariKeyId` encoding.

### Design choices

- **LIKE filter** - `WHERE spending_key LIKE 'managed.%' OR ... LIKE
'imported.%'` targets only rows that need migration. No full-table scan;
no BLOB columns loaded (only `id`, `spending_key`,
`script_private_key`).
- **No offset paging** - converted rows no longer match the filter, so
the batch always starts at offset 0 and the result set shrinks naturally
until empty.
- **Batch size 100** per iteration keeps each SQLite round-trip bounded.
- **Non-blocking** - launched via `tokio::spawn` before the service
event loop; wallet startup is not delayed.
- **No catch_unwind** - nothing in the migration path should panic;
errors for individual rows are logged and skipped.

### Files changed

| File | Change |
|------|--------|
| `storage/database/backend.rs` | Two new trait methods:
`fetch_outputs_with_legacy_key_ids` / `update_output_key_ids` |
| `storage/sqlite_db/output_sql.rs` |
`OutputSql::find_outputs_with_legacy_key_ids` (LIKE query, no BLOBs) +
`OutputSql::update_key_ids` |
| `storage/sqlite_db/mod.rs` | Trait impl on
`OutputManagerSqliteDatabase` |
| `storage/database/mod.rs` | Wrapper methods on
`OutputManagerDatabase<T>` |
| `service.rs` | `migrate_legacy_output_keys` free async fn +
`tokio::spawn` call in `start()` |
| `tests/.../storage.rs` | `test_migrate_legacy_output_key_ids` -
injects `"managed.comms.0"`, verifies LIKE filter detects it, verifies
conversion to `TariKeyId::SpendKey`, verifies row is cleared from
filter, verifies clean outputs are unaffected |

### Test

```
cargo test -p minotari_wallet test_migrate_legacy_output_key_ids
```

Pas... (continued)

0 of 137 new or added lines in 4 files covered. (0.0%)

11 existing lines in 6 files now uncovered.

71894 of 117306 relevant lines covered (61.29%)

222830.42 hits per line

Uncovered Changes

Lines Coverage ∆ File
68
0.0
0.0% base_layer/wallet/src/output_manager_service/service.rs
36
7.3
-0.33% base_layer/wallet/src/output_manager_service/storage/sqlite_db/output_sql.rs
17
10.04
-0.13% base_layer/wallet/src/output_manager_service/storage/sqlite_db/mod.rs
16
0.0
0.0% base_layer/wallet/src/output_manager_service/storage/database/mod.rs

Coverage Regressions

Lines Coverage ∆ File
4
95.52
-1.79% common/src/configuration/network.rs
3
88.04
13.81% base_layer/core/src/blocks/genesis_block.rs
1
93.76
-0.19% base_layer/core/src/proof_of_work/monero_rx/merkle_tree.rs
1
85.88
0.23% base_layer/p2p/src/services/liveness/service.rs
1
88.85
-0.2% comms/core/src/peer_manager/peer_storage_sql.rs
1
83.28
0.16% comms/core/src/protocol/rpc/client/mod.rs
Jobs
ID Job ID Ran Files Coverage
1 26636618717.1 29 May 2026 01:19PM UTC 702
61.29
GitHub Action Run
Source Files on build 26636618717
  • Tree
  • List 702
  • Changed 19
  • Source Changed 4
  • Coverage Changed 19
Coverage ∆ File Lines Relevant Covered Missed Hits/Line
  • Back to Repo
  • Github Actions Build #26636618717
  • 9e9c8323 on github
  • Prev Build on development (#26628635933)
  • Next Build on development (#26644510197)
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