|
| 1 | +# StorageHub v0.3.2 |
| 2 | + |
| 3 | +## Summary |
| 4 | + |
| 5 | +StorageHub v0.3.2 is a **small patch release focused on MSP/Fisherman robustness**. It prevents MSPs from creating local forest instances during the post-sync sanity check when the bucket is missing locally (treating this as valid iff the on-chain root is the default/empty root), and ensures the Fisherman can always make forward progress by truncating batch deletions to the on-chain `MaxFileDeletionsPerExtrinsic` limit (using `BoundedVec` end-to-end). |
| 6 | + |
| 7 | +## Components |
| 8 | + |
| 9 | +- Client code: v0.3.0 |
| 10 | +- Pallets code: v0.3.0 |
| 11 | +- Runtime code: v0.3.0 (spec_name/spec_version: parachain `sh-parachain-runtime`/1, solochain-evm `sh-solochain-evm`/1) |
| 12 | +- SH Backend Docker image: v0.3.0 (image: ghcr.io/<org>/storage-hub-msp-backend:v0.3.0) |
| 13 | +- SH SDK (npm): v0.4.3 (`@storagehub-sdk/core`, `@storagehub-sdk/msp-client`) |
| 14 | +- types-bundle/api-augment (npm): `@storagehub/types-bundle` v0.3.0, `@storagehub/api-augment` v0.3.1 |
| 15 | + |
| 16 | +## Changes since last tag |
| 17 | + |
| 18 | +Base: ea8181cb71d15b62db766debb025927a40efbbcd |
| 19 | + |
| 20 | +- Highlights: |
| 21 | + |
| 22 | + - **MSP post-sync sanity check no longer creates forests for missing buckets**: when a bucket forest is missing locally after initial sync, MSPs now treat it as valid *only if* the on-chain bucket root is the default/empty root (`DefaultMerkleRoot::<Runtime>::get()`); otherwise it is reported as **CRITICAL** (bucket is not empty but local forest is missing) ([PR #652](https://github.com/Moonsong-Labs/storage-hub/pull/652)). |
| 23 | + - **Fisherman batch deletions always make progress**: the Fisherman now truncates “files to delete” batches to the on-chain `MaxFileDeletionsPerExtrinsic` constant before building extrinsics, avoiding a stuck loop where oversized batches repeatedly fail. The processing pipeline now uses `BoundedVec::truncate_from(...)` (and defensive warnings if later stages still truncate) ([PR #654](https://github.com/Moonsong-Labs/storage-hub/pull/654)). |
| 24 | + |
| 25 | +- Full diff: https://github.com/Moonsong-Labs/storage-hub/compare/ea8181cb71d15b62db766debb025927a40efbbcd...d27e41fb8805c33f63875ef470ebb8c0edc25887 |
| 26 | +- PRs included: |
| 27 | + - #654 fix: Fisherman truncate files to delete based on `MaxFileDeletionsPerExtrinsic` runtime constant |
| 28 | + - #652 fix: :adhesive_bandage: Avoid creating forests locally when not found in initial check after sync |
| 29 | + |
| 30 | +## Migrations |
| 31 | + |
| 32 | +### RocksDB (File Storage) |
| 33 | + |
| 34 | +- Changes: |
| 35 | + - No new schema changes in this release. |
| 36 | +- Action required: |
| 37 | + - None. |
| 38 | + |
| 39 | +### RocksDB (Forest Storage) |
| 40 | + |
| 41 | +- Changes: |
| 42 | + - No new schema changes in this release. |
| 43 | +- Action required: |
| 44 | + - None. |
| 45 | + |
| 46 | +### RocksDB (State store) |
| 47 | + |
| 48 | +- Changes: |
| 49 | + - No new schema changes in this release. |
| 50 | +- Action required: |
| 51 | + - None. |
| 52 | + |
| 53 | +### Indexer DB (Postgres) |
| 54 | + |
| 55 | +- Migrations: |
| 56 | + - No new Postgres migrations in this release. |
| 57 | +- How to apply: The indexer service runs migrations automatically on startup. Alternatively run `diesel migration run`. |
| 58 | + |
| 59 | +## ⚠️ Breaking Changes ⚠️ |
| 60 | + |
| 61 | +None. Upgrading from the previous release should be seamless. All PRs included in this release are labelled `not-breaking` and do not introduce breaking changes to public APIs, runtime storage layouts, or configuration surfaces. |
| 62 | + |
| 63 | +## Runtime |
| 64 | + |
| 65 | +- Upgrades (spec_version): parachain and solochain-evm remain at spec_version 1. |
| 66 | +- Behaviour changes: None in this release range. |
| 67 | +- Migrations: None. |
| 68 | +- Constants changed: None requiring operator action. |
| 69 | +- Scripts to run: None. |
| 70 | + |
| 71 | +## Client |
| 72 | + |
| 73 | +- Behaviour changes: |
| 74 | + - **MSP post-sync root verification**: |
| 75 | + - If a local bucket forest exists after sync, its local root must match the on-chain root; mismatches are reported as **CRITICAL**. |
| 76 | + - If a local bucket forest does **not** exist, the on-chain root must be the default/empty root (`DefaultMerkleRoot::<Runtime>::get()`); otherwise it is reported as **CRITICAL** (bucket is not empty but local forest is missing) ([PR #652](https://github.com/Moonsong-Labs/storage-hub/pull/652)). |
| 77 | + - **Fisherman batch deletions**: |
| 78 | + - The Fisherman truncates the number of files processed for deletion per cycle to the on-chain `MaxFileDeletionsPerExtrinsic` limit, ensuring extrinsic submission never fails purely due to an oversized batch and that remaining deletions are processed in subsequent cycles. |
| 79 | + - The extrinsics `delete_files` and `delete_files_for_incomplete_storage_request` now receive `BoundedVec` inputs constructed via `BoundedVec::truncate_from(...)` to avoid conversion errors ([PR #654](https://github.com/Moonsong-Labs/storage-hub/pull/654)). |
| 80 | +- Initialisation / configuration changes: |
| 81 | + - None. |
| 82 | + |
| 83 | +## Backend |
| 84 | + |
| 85 | +- Behaviour changes: None in this release range. |
| 86 | +- Initialisation / configuration changes: None. |
| 87 | + |
| 88 | +## SDK |
| 89 | + |
| 90 | +- Behaviour changes: None in this release range. |
| 91 | +- Initialisation changes: None (SDK remains at v0.4.3). |
| 92 | + |
| 93 | +## Versions |
| 94 | + |
| 95 | +- Polkadot SDK: polkadot-stable2412-6 |
| 96 | +- Rust: 1.91 (from rust-toolchain.toml) |
| 97 | + |
| 98 | +## Compatibility |
| 99 | + |
| 100 | +- SH Backend v0.3.0 → compatible with pallets/runtime v0.3.0 and client v0.3.0 (all built from this release range). |
| 101 | +- SDK v0.4.3 → compatible with backend v0.3.0, client v0.3.0, and pallets/runtime v0.3.0. |
| 102 | +- types-bundle v0.3.0 + api-augment v0.3.1 → compatible with this runtime release’s metadata; regenerate if you run custom runtimes. |
| 103 | + |
| 104 | +## Upgrade Guide |
| 105 | + |
| 106 | +None. Upgrading from the previous release should be seamless. All PRs included in this release are labelled `not-breaking` and do not introduce breaking changes to public APIs, runtime storage layouts, or configuration surfaces. |
| 107 | + |
0 commit comments