Skip to content

Commit

Permalink
update BondedPool member count as well
Browse files Browse the repository at this point in the history
  • Loading branch information
4meta5 committed Feb 12, 2025
1 parent 1202ea3 commit b401f55
Showing 1 changed file with 24 additions and 6 deletions.
30 changes: 24 additions & 6 deletions runtime/src/migrations/fix_pool_members.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
//! Runtime migration to remove buggy pool members
use frame_support::{traits::Get, weights::Weight};
use pallet_nomination_pools::PoolMembers;
use pallet_nomination_pools::{BondedPools, PoolMembers};
use polkadot_sdk::*;
use sp_core::crypto::Ss58Codec;
use sp_runtime::AccountId32;
Expand All @@ -16,7 +16,6 @@ where
fn on_runtime_upgrade() -> Weight {
let mut weight: Weight = Weight::zero();

// Provided SS58 addresses
let to_remove = [
"an67vKKCtXjWYUaErzKp5E97dDnyt39HNZMwTAReK1PLUVdbA",
"an9XX2NvQXRvFBwMdNiaaXbAKHN4tA6oi7xGVJbffR84AvcDw",
Expand All @@ -35,14 +34,33 @@ where
})
.collect::<Vec<T::AccountId>>();

for account in accounts_to_remove.iter() {
if PoolMembers::<T>::contains_key(account) {
PoolMembers::<T>::remove(account);
// Track affected pools to update member_counter
let mut affected_pools = sp_std::collections::btree_map::BTreeMap::<u32, u32>::new();

for account in &accounts_to_remove {
if let Some(member) = PoolMembers::<T>::take(account) {
weight += T::DbWeight::get().writes(1);
log::info!("Removed pool member: {account:?}");
weight += <T as frame_system::Config>::DbWeight::get().writes(1);
let pool_id = member.pool_id;
// Increment count of members removed per pool
affected_pools.entry(pool_id).and_modify(|c| *c += 1).or_insert(1);
}
}

// Update the member_counter for each affected pool
for (pool_id, count) in affected_pools.iter() {
BondedPools::<T>::mutate(*pool_id, |maybe_pool| {
if let Some(pool) = maybe_pool {
if pool.member_counter >= *count {
pool.member_counter -= count;
} else {
pool.member_counter = 0; // Ensure it doesn't go negative
}
}
});
weight += T::DbWeight::get().writes(1);
}

weight
}
}

0 comments on commit b401f55

Please sign in to comment.