TryDecodeEntireState check for storage types and pallets (#1805)
### This PR is a port of this [PR for substrate](https://github.com/paritytech/substrate/pull/13013) by @Kianenigma Add infrastructure needed to have a Pallet::decode_entire_state(), which makes sure all "typed" storage items defined in the pallet are decode-able. This is not enforced in any way at the moment. Teams who wish to integrate/use this in the try-runtime feature flag should add frame_support::storage::migration::EnsureStateDecodes as the LAST ITEM of the runtime's custom migrations, and pass it to frame-executive. This will make it usable in try-runtime on-runtime-upgrade. This now catches cases like https://github.com/paritytech/polkadot-sdk/pull/1969: ```pre ERROR runtime::executive] failed to decode the value at key: Failed to decode value at key: 0x94eadf0156a8ad5156507773d0471e4ab8ebad86f546c7e0b135a4212aace339. Storage info StorageInfo { pallet_name: Ok("ParaScheduler"), storage_name: Ok("AvailabilityCores"), prefix: Err(Utf8Error { valid_up_to: 0, error_len: Some(1) }), max_values: Some(1), max_size: None }. Raw value: Some("0x0c010101010101") ``` ... or:  Closes #241 --------- Signed-off-by:Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> Co-authored-by:
Oliver Tale-Yazdi <oliver.tale-yazdi@parity.io> Co-authored-by:
Liam Aharon <liam.aharon@hotmail.com>
Showing
- prdoc/pr_1805.prdoc 19 additions, 0 deletionsprdoc/pr_1805.prdoc
- substrate/bin/node-template/runtime/src/lib.rs 7 additions, 0 deletionssubstrate/bin/node-template/runtime/src/lib.rs
- substrate/frame/executive/src/lib.rs 59 additions, 13 deletionssubstrate/frame/executive/src/lib.rs
- substrate/frame/glutton/src/lib.rs 2 additions, 3 deletionssubstrate/frame/glutton/src/lib.rs
- substrate/frame/support/Cargo.toml 1 addition, 1 deletionsubstrate/frame/support/Cargo.toml
- substrate/frame/support/procedural/src/pallet/expand/event.rs 2 additions, 1 deletion...trate/frame/support/procedural/src/pallet/expand/event.rs
- substrate/frame/support/procedural/src/pallet/expand/storage.rs 59 additions, 0 deletions...ate/frame/support/procedural/src/pallet/expand/storage.rs
- substrate/frame/support/procedural/src/pallet/parse/storage.rs 1 addition, 1 deletion...rate/frame/support/procedural/src/pallet/parse/storage.rs
- substrate/frame/support/src/storage/generator/mod.rs 3 additions, 3 deletionssubstrate/frame/support/src/storage/generator/mod.rs
- substrate/frame/support/src/storage/types/counted_map.rs 9 additions, 5 deletionssubstrate/frame/support/src/storage/types/counted_map.rs
- substrate/frame/support/src/storage/types/counted_nmap.rs 4 additions, 2 deletionssubstrate/frame/support/src/storage/types/counted_nmap.rs
- substrate/frame/support/src/storage/types/mod.rs 1 addition, 1 deletionsubstrate/frame/support/src/storage/types/mod.rs
- substrate/frame/support/src/storage/types/value.rs 2 additions, 2 deletionssubstrate/frame/support/src/storage/types/value.rs
- substrate/frame/support/src/traits.rs 4 additions, 1 deletionsubstrate/frame/support/src/traits.rs
- substrate/frame/support/src/traits/storage.rs 1 addition, 3 deletionssubstrate/frame/support/src/traits/storage.rs
- substrate/frame/support/src/traits/try_runtime/decode_entire_state.rs 498 additions, 0 deletions...ame/support/src/traits/try_runtime/decode_entire_state.rs
- substrate/frame/support/src/traits/try_runtime/mod.rs 17 additions, 0 deletionssubstrate/frame/support/src/traits/try_runtime/mod.rs
- substrate/frame/support/test/tests/pallet_ui/storage_ensure_span_are_ok_on_wrong_gen.stderr 59 additions, 0 deletions.../pallet_ui/storage_ensure_span_are_ok_on_wrong_gen.stderr
- substrate/frame/support/test/tests/pallet_ui/storage_ensure_span_are_ok_on_wrong_gen_unnamed.stderr 59 additions, 0 deletions...ui/storage_ensure_span_are_ok_on_wrong_gen_unnamed.stderr
Please register or sign in to comment