> frame_support::traits::OnRuntimeUpgrade
+ for RemovePallet
+{
+ fn on_runtime_upgrade() -> frame_support::weights::Weight {
+ let hashed_prefix = twox_128(P::get().as_bytes());
+ let keys_removed = match clear_prefix(&hashed_prefix, None) {
+ KillStorageResult::AllRemoved(value) => value,
+ KillStorageResult::SomeRemaining(value) => {
+ log::error!(
+ "`clear_prefix` failed to remove all keys for {}. THIS SHOULD NEVER HAPPEN! ๐จ",
+ P::get()
+ );
+ value
+ },
+ } as u64;
+
+ log::info!("Removed {} {} keys ๐งน", keys_removed, P::get());
+
+ DbWeight::get().reads_writes(keys_removed + 1, keys_removed)
+ }
+
+ #[cfg(feature = "try-runtime")]
+ fn pre_upgrade() -> Result, &'static str> {
+ let hashed_prefix = twox_128(P::get().as_bytes());
+ match contains_prefixed_key(&hashed_prefix) {
+ true => log::info!("Found {} keys pre-removal ๐", P::get()),
+ false => log::warn!(
+ "Migration RemovePallet<{}> can be removed (no keys found pre-removal).",
+ P::get()
+ ),
+ };
+ Ok(Vec::new())
+ }
+
+ #[cfg(feature = "try-runtime")]
+ fn post_upgrade(_state: Vec) -> Result<(), &'static str> {
+ let hashed_prefix = twox_128(P::get().as_bytes());
+ match contains_prefixed_key(&hashed_prefix) {
+ true => {
+ log::error!("{} has keys remaining post-removal โ", P::get());
+ return Err("Keys remaining post-removal, this should never happen ๐จ")
+ },
+ false => log::info!("No {} keys found post-removal ๐", P::get()),
+ };
+ Ok(())
+ }
+}