From fe08ce6fbfebf46626d4e1e6835887b41a0c6190 Mon Sep 17 00:00:00 2001 From: Xavier Lau Date: Mon, 26 Jul 2021 22:40:36 +0800 Subject: [PATCH] add migrations --- bin/node/runtime/pangolin/src/lib.rs | 28 +++++++++++++++++++++++++++- frame/header-mmr/src/lib.rs | 13 +++++++------ 2 files changed, 34 insertions(+), 7 deletions(-) diff --git a/bin/node/runtime/pangolin/src/lib.rs b/bin/node/runtime/pangolin/src/lib.rs index 065a43c27a..cc458daaa9 100644 --- a/bin/node/runtime/pangolin/src/lib.rs +++ b/bin/node/runtime/pangolin/src/lib.rs @@ -902,11 +902,35 @@ pub struct CustomOnRuntimeUpgrade; impl OnRuntimeUpgrade for CustomOnRuntimeUpgrade { #[cfg(feature = "try-runtime")] fn pre_upgrade() -> Result<(), &'static str> { + // --- paritytech --- + use frame_support::{migration, Identity}; + // --- darwinia-network --- + use darwinia_header_mmr::NodeIndex; + // <--- Hack for local test use frame_support::traits::Currency; let _ = Ring::deposit_creating(&BridgeMillauMessages::relayer_fund_account_id(), 1 << 50); // ---> + darwinia_header_mmr::migration::migrate(b"HeaderMMR"); + + assert!(migration::storage_key_iter::( + b"HeaderMMR", + b"MMRNodeList" + ) + .next() + .is_none()); + assert!(!migration::have_storage_value( + b"HeaderMMR", + b"MMRNodeList", + &[] + )); + assert!(!migration::have_storage_value( + b"HeaderMMR", + b"PruningConfiguration", + &[] + )); + Ok(()) } @@ -916,7 +940,9 @@ impl OnRuntimeUpgrade for CustomOnRuntimeUpgrade { // let _ = Ring::deposit_creating(&BridgeMillauMessages::relayer_fund_account_id(), 1 << 50); // ---> - 0 + darwinia_header_mmr::migration::migrate(b"HeaderMMR"); + + RuntimeBlockWeights::get().max_block } } diff --git a/frame/header-mmr/src/lib.rs b/frame/header-mmr/src/lib.rs index 4557d9df04..31218d935b 100644 --- a/frame/header-mmr/src/lib.rs +++ b/frame/header-mmr/src/lib.rs @@ -99,11 +99,6 @@ pub mod pallet { #[pallet::getter(fn mmr_size)] pub type MmrSize = StorageValue<_, NodeIndex, ValueQuery>; - /// MMR struct of the previous blocks, from first(genesis) to parent hash. - #[pallet::storage] - #[pallet::getter(fn mmr_node_list)] - pub type MMRNodeList = StorageMap<_, Identity, NodeIndex, T::Hash, OptionQuery>; - /// Peaks of the MMR #[pallet::storage] #[pallet::getter(fn peak_of)] @@ -212,5 +207,11 @@ pub mod migration { } } - pub fn migrate() {} + pub fn migrate(module: impl AsRef<[u8]>) { + // --- paritytech --- + use frame_support::migration; + + migration::remove_storage_prefix(module.as_ref(), b"MMRNodeList", &[]); + migration::remove_storage_prefix(module.as_ref(), b"PruningConfiguration", &[]); + } }