From bc428b4746afb2b566f656dab7415903e6f2f345 Mon Sep 17 00:00:00 2001 From: Adrian Catangiu Date: Wed, 29 Jan 2025 15:10:59 +0200 Subject: [PATCH 1/2] polkadot relay fix corrupt ledger migration --- relay/polkadot/src/lib.rs | 12 ++++++++---- 1 file changed, 8 insertions(+), 4 deletions(-) diff --git a/relay/polkadot/src/lib.rs b/relay/polkadot/src/lib.rs index 4bcd057726..0a7cd60c44 100644 --- a/relay/polkadot/src/lib.rs +++ b/relay/polkadot/src/lib.rs @@ -2036,13 +2036,17 @@ pub mod restore_corrupt_ledger_2 { #[cfg(feature = "try-runtime")] fn pre_upgrade() -> Result, sp_runtime::TryRuntimeError> { - assert!(pallet_staking::Ledger::::get(CorruptStash::get()).is_some()); - Ok(Default::default()) + let found_corrupted = + pallet_staking::Ledger::::get(CorruptStash::get()).is_some(); + Ok(found_corrupted.encode()) } #[cfg(feature = "try-runtime")] - fn post_upgrade(_state: Vec) -> Result<(), sp_runtime::TryRuntimeError> { - assert!(pallet_staking::Ledger::::get(CorruptStash::get()).is_none()); + fn post_upgrade(state: Vec) -> Result<(), sp_runtime::TryRuntimeError> { + let found_corrupted: bool = Decode::decode(&mut &state[..])?; + if found_corrupted { + assert!(pallet_staking::Ledger::::get(CorruptStash::get()).is_none()); + } Ok(()) } } From 77c1d17131e76af5270d6920eacbb3c083c708c5 Mon Sep 17 00:00:00 2001 From: Adrian Catangiu Date: Wed, 29 Jan 2025 15:56:46 +0200 Subject: [PATCH 2/2] fix error --- relay/polkadot/src/lib.rs | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/relay/polkadot/src/lib.rs b/relay/polkadot/src/lib.rs index 0a7cd60c44..20eaa1d098 100644 --- a/relay/polkadot/src/lib.rs +++ b/relay/polkadot/src/lib.rs @@ -2043,7 +2043,8 @@ pub mod restore_corrupt_ledger_2 { #[cfg(feature = "try-runtime")] fn post_upgrade(state: Vec) -> Result<(), sp_runtime::TryRuntimeError> { - let found_corrupted: bool = Decode::decode(&mut &state[..])?; + let found_corrupted: bool = Decode::decode(&mut &state[..]) + .map_err(|_| sp_runtime::TryRuntimeError::Corruption)?; if found_corrupted { assert!(pallet_staking::Ledger::::get(CorruptStash::get()).is_none()); }