Conversation
| /// a multi-block scheduler currently under development which will allow for removal of storage | ||
| /// items (and performing other heavy migrations) over multiple blocks | ||
| /// (see <https://github.com/paritytech/substrate/issues/13690>). | ||
| pub struct RemoveStorage<P: Get<&'static str>, S: Get<&'static str>, DbWeight: Get<RuntimeDbWeight>>( |
There was a problem hiding this comment.
it could be more general, something like ClearPrefix. And RemovePallet and RemoveStorage based on it. But it will require the introduction of few more types for resolving the prefix from static pallet and storage and and type to concat pallet and storage name to have a human readable prefix for logs.
Perhaps ClearPrefix wont be used for itself and copy/paste is better for simplicity.
| /// after the upgrade. | ||
| /// | ||
| /// # Examples: | ||
| /// ```ignore |
There was a problem hiding this comment.
I think with a few lines of change this can be made non-ignore, can you try?
There was a problem hiding this comment.
I did try, requires additional deps for this pallet, example becomes very big and does not really give any assertions
| /// >; | ||
| /// ``` | ||
| /// | ||
| /// WARNING: `RemoveStorage` has no guard rails preventing it from bricking the chain if the |
There was a problem hiding this comment.
This is good, please add it to other similar types like RemovePallet as well :)
There was a problem hiding this comment.
I checked, there is no more general migration solution like this. RemovePallet have it, it is where I copied this from, all credits to @liamaharon
Co-authored-by: Liam Aharon <liam.aharon@hotmail.com> Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
| /// >; | ||
| /// ``` | ||
| /// | ||
| /// WARNING: `RemoveStorage` has no guard rails preventing it from bricking the chain if the |
There was a problem hiding this comment.
Maybe a specific warning for para-chains? I think they are often not aware of such limitations.
|
|
||
| log::info!("Removed `{}` `{}` `{}` keys 🧹", keys_removed, P::get(), S::get()); | ||
|
|
||
| DbWeight::get().reads_writes(keys_removed + 1, keys_removed) |
There was a problem hiding this comment.
The weight annotation makes it unusable for parachains anyway, since it does not report proper weight.
There was a problem hiding this comment.
Not sure I understand, can you explain please?
There was a problem hiding this comment.
I don't see :P Can you please explain?
There was a problem hiding this comment.
The fact that RuntimeDbWeight only has u64 aka. ref_time and no proof_size.
The only warning against it is:
polkadot-sdk/substrate/primitives/weights/src/lib.rs
Lines 79 to 80 in 8eeacff
I can't find a related tracking issue for this matter, @ggwpez do you know any?
There was a problem hiding this comment.
No there is no issue. This is legacy code and reads_writes should probably be deprecated...
Only benchmarking this would solve the issue. But for long term it is probably still not usable without being a MBM.
# ISSUE - Link to the issue: #3800 # Deliverables - [x] remove deprecated calls; (d579b67) - [x] set explicit coded indexes for Error and Event enums, remove unused variants and keep the same indexes for the rest; (d579b67) - [x] remove unused Config's type parameters; (d579b67) - [x] remove irrelevant tests and adopt relevant using old api; (d579b67) - [x] remove benchmarks for removed calls; (1a3d5f1) - [x] prdoc (d579b67) - [x] remove deprecated methods from the `treasury/README.md` and add up-to-date dispatchable functions documentation (d579b67) - [x] remove deprecated weight functions (8f74134) > ### Separated to other issues > - [ ] remove storage items like Proposals and ProposalCount, that are not used anymore Adjust all treasury pallet instances within polkadot-sdk - [x] `pallet_bounty`, `tip`, `child_bounties`: openguild-labs#3 - [x] Remove deprecated treasury weight functions used in Westend and Rococo runtime `collective-westend`, `collective-rococo` Add migration for westend and rococo to clean the data from removed storage items - [ ] #3828 # Test Outcomes Successful tests by running `cargo test --features runtime-benchmarks` ``` running 38 tests test tests::__construct_runtime_integrity_test::runtime_integrity_tests ... ok test benchmarking::benchmarks::bench_check_status ... ok test benchmarking::benchmarks::bench_payout ... ok test benchmarking::benchmarks::bench_spend_local ... ok test tests::accepted_spend_proposal_enacted_on_spend_period ... ok test benchmarking::benchmarks::bench_spend ... ok test tests::accepted_spend_proposal_ignored_outside_spend_period ... ok test benchmarking::benchmarks::bench_void_spend ... ok test benchmarking::benchmarks::bench_remove_approval ... ok test tests::genesis_funding_works ... ok test tests::genesis_config_works ... ok test tests::inexistent_account_works ... ok test tests::minting_works ... ok test tests::check_status_works ... ok test tests::payout_retry_works ... ok test tests::pot_underflow_should_not_diminish ... ok test tests::remove_already_removed_approval_fails ... ok test tests::spend_local_origin_permissioning_works ... ok test tests::spend_valid_from_works ... ok test tests::spend_expires ... ok test tests::spend_works ... ok test tests::test_genesis_config_builds ... ok test tests::spend_payout_works ... ok test tests::spend_local_origin_works ... ok test tests::spend_origin_works ... ok test tests::spending_local_in_batch_respects_max_total ... ok test tests::spending_in_batch_respects_max_total ... ok test tests::try_state_proposals_invariant_2_works ... ok test tests::try_state_proposals_invariant_1_works ... ok test tests::try_state_spends_invariant_2_works ... ok test tests::try_state_spends_invariant_1_works ... ok test tests::treasury_account_doesnt_get_deleted ... ok test tests::try_state_spends_invariant_3_works ... ok test tests::unused_pot_should_diminish ... ok test tests::void_spend_works ... ok test tests::try_state_proposals_invariant_3_works ... ok test tests::max_approvals_limited ... ok test benchmarking::benchmarks::bench_on_initialize_proposals ... ok test result: ok. 38 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s Doc-tests pallet_treasury running 2 tests test substrate/frame/treasury/src/lib.rs - (line 52) ... ignored test substrate/frame/treasury/src/lib.rs - (line 79) ... ignored test result: ok. 0 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.00s ``` polkadot address: 19nSqFQorfF2HxD3oBzWM3oCh4SaCRKWt1yvmgaPYGCo71J
|
@muharem what is the status of this pr? |
|
@bkchr I was not sure about merging it because it cannot be safely applied for a parachain migration. But now I think we will need it at least for relay chains. Also since there is a warning in the doc about this concern. I think we can merge this. If fine with you, I will merge it after CIs pass |
# ISSUE - Link to the issue: paritytech#3800 # Deliverables - [x] remove deprecated calls; (paritytech@d579b67) - [x] set explicit coded indexes for Error and Event enums, remove unused variants and keep the same indexes for the rest; (paritytech@d579b67) - [x] remove unused Config's type parameters; (paritytech@d579b67) - [x] remove irrelevant tests and adopt relevant using old api; (paritytech@d579b67) - [x] remove benchmarks for removed calls; (paritytech@1a3d5f1) - [x] prdoc (paritytech@d579b67) - [x] remove deprecated methods from the `treasury/README.md` and add up-to-date dispatchable functions documentation (paritytech@d579b67) - [x] remove deprecated weight functions (paritytech@8f74134) > ### Separated to other issues > - [ ] remove storage items like Proposals and ProposalCount, that are not used anymore Adjust all treasury pallet instances within polkadot-sdk - [x] `pallet_bounty`, `tip`, `child_bounties`: openguild-labs#3 - [x] Remove deprecated treasury weight functions used in Westend and Rococo runtime `collective-westend`, `collective-rococo` Add migration for westend and rococo to clean the data from removed storage items - [ ] paritytech#3828 # Test Outcomes Successful tests by running `cargo test --features runtime-benchmarks` ``` running 38 tests test tests::__construct_runtime_integrity_test::runtime_integrity_tests ... ok test benchmarking::benchmarks::bench_check_status ... ok test benchmarking::benchmarks::bench_payout ... ok test benchmarking::benchmarks::bench_spend_local ... ok test tests::accepted_spend_proposal_enacted_on_spend_period ... ok test benchmarking::benchmarks::bench_spend ... ok test tests::accepted_spend_proposal_ignored_outside_spend_period ... ok test benchmarking::benchmarks::bench_void_spend ... ok test benchmarking::benchmarks::bench_remove_approval ... ok test tests::genesis_funding_works ... ok test tests::genesis_config_works ... ok test tests::inexistent_account_works ... ok test tests::minting_works ... ok test tests::check_status_works ... ok test tests::payout_retry_works ... ok test tests::pot_underflow_should_not_diminish ... ok test tests::remove_already_removed_approval_fails ... ok test tests::spend_local_origin_permissioning_works ... ok test tests::spend_valid_from_works ... ok test tests::spend_expires ... ok test tests::spend_works ... ok test tests::test_genesis_config_builds ... ok test tests::spend_payout_works ... ok test tests::spend_local_origin_works ... ok test tests::spend_origin_works ... ok test tests::spending_local_in_batch_respects_max_total ... ok test tests::spending_in_batch_respects_max_total ... ok test tests::try_state_proposals_invariant_2_works ... ok test tests::try_state_proposals_invariant_1_works ... ok test tests::try_state_spends_invariant_2_works ... ok test tests::try_state_spends_invariant_1_works ... ok test tests::treasury_account_doesnt_get_deleted ... ok test tests::try_state_spends_invariant_3_works ... ok test tests::unused_pot_should_diminish ... ok test tests::void_spend_works ... ok test tests::try_state_proposals_invariant_3_works ... ok test tests::max_approvals_limited ... ok test benchmarking::benchmarks::bench_on_initialize_proposals ... ok test result: ok. 38 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s Doc-tests pallet_treasury running 2 tests test substrate/frame/treasury/src/lib.rs - (line 52) ... ignored test substrate/frame/treasury/src/lib.rs - (line 79) ... ignored test result: ok. 0 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.00s ``` polkadot address: 19nSqFQorfF2HxD3oBzWM3oCh4SaCRKWt1yvmgaPYGCo71J
Introduce migration type to remove data associated with a specific storage of a pallet. Based on existing `RemovePallet` migration type. Required for paritytech#3820 --------- Co-authored-by: Liam Aharon <liam.aharon@hotmail.com> Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
# ISSUE - Link to the issue: paritytech#3800 # Deliverables - [x] remove deprecated calls; (paritytech@d579b67) - [x] set explicit coded indexes for Error and Event enums, remove unused variants and keep the same indexes for the rest; (paritytech@d579b67) - [x] remove unused Config's type parameters; (paritytech@d579b67) - [x] remove irrelevant tests and adopt relevant using old api; (paritytech@d579b67) - [x] remove benchmarks for removed calls; (paritytech@1a3d5f1) - [x] prdoc (paritytech@d579b67) - [x] remove deprecated methods from the `treasury/README.md` and add up-to-date dispatchable functions documentation (paritytech@d579b67) - [x] remove deprecated weight functions (paritytech@8f74134) > ### Separated to other issues > - [ ] remove storage items like Proposals and ProposalCount, that are not used anymore Adjust all treasury pallet instances within polkadot-sdk - [x] `pallet_bounty`, `tip`, `child_bounties`: openguild-labs#3 - [x] Remove deprecated treasury weight functions used in Westend and Rococo runtime `collective-westend`, `collective-rococo` Add migration for westend and rococo to clean the data from removed storage items - [ ] paritytech#3828 # Test Outcomes Successful tests by running `cargo test --features runtime-benchmarks` ``` running 38 tests test tests::__construct_runtime_integrity_test::runtime_integrity_tests ... ok test benchmarking::benchmarks::bench_check_status ... ok test benchmarking::benchmarks::bench_payout ... ok test benchmarking::benchmarks::bench_spend_local ... ok test tests::accepted_spend_proposal_enacted_on_spend_period ... ok test benchmarking::benchmarks::bench_spend ... ok test tests::accepted_spend_proposal_ignored_outside_spend_period ... ok test benchmarking::benchmarks::bench_void_spend ... ok test benchmarking::benchmarks::bench_remove_approval ... ok test tests::genesis_funding_works ... ok test tests::genesis_config_works ... ok test tests::inexistent_account_works ... ok test tests::minting_works ... ok test tests::check_status_works ... ok test tests::payout_retry_works ... ok test tests::pot_underflow_should_not_diminish ... ok test tests::remove_already_removed_approval_fails ... ok test tests::spend_local_origin_permissioning_works ... ok test tests::spend_valid_from_works ... ok test tests::spend_expires ... ok test tests::spend_works ... ok test tests::test_genesis_config_builds ... ok test tests::spend_payout_works ... ok test tests::spend_local_origin_works ... ok test tests::spend_origin_works ... ok test tests::spending_local_in_batch_respects_max_total ... ok test tests::spending_in_batch_respects_max_total ... ok test tests::try_state_proposals_invariant_2_works ... ok test tests::try_state_proposals_invariant_1_works ... ok test tests::try_state_spends_invariant_2_works ... ok test tests::try_state_spends_invariant_1_works ... ok test tests::treasury_account_doesnt_get_deleted ... ok test tests::try_state_spends_invariant_3_works ... ok test tests::unused_pot_should_diminish ... ok test tests::void_spend_works ... ok test tests::try_state_proposals_invariant_3_works ... ok test tests::max_approvals_limited ... ok test benchmarking::benchmarks::bench_on_initialize_proposals ... ok test result: ok. 38 passed; 0 failed; 0 ignored; 0 measured; 0 filtered out; finished in 0.08s Doc-tests pallet_treasury running 2 tests test substrate/frame/treasury/src/lib.rs - (line 52) ... ignored test substrate/frame/treasury/src/lib.rs - (line 79) ... ignored test result: ok. 0 passed; 0 failed; 2 ignored; 0 measured; 0 filtered out; finished in 0.00s ``` polkadot address: 19nSqFQorfF2HxD3oBzWM3oCh4SaCRKWt1yvmgaPYGCo71J
Introduce migration type to remove data associated with a specific storage of a pallet. Based on existing `RemovePallet` migration type. Required for paritytech#3820 --------- Co-authored-by: Liam Aharon <liam.aharon@hotmail.com> Co-authored-by: Kian Paimani <5588131+kianenigma@users.noreply.github.com>
Introduce migration type to remove data associated with a specific storage of a pallet.
Based on existing
RemovePalletmigration type.Required for #3820