diff --git a/runtimes/common/src/session.rs b/runtimes/common/src/session.rs index 13d8dde99..27154aa1b 100644 --- a/runtimes/common/src/session.rs +++ b/runtimes/common/src/session.rs @@ -18,7 +18,7 @@ pub use frame_support::weights::constants::{BlockExecutionWeight, ExtrinsicBaseWeight, RocksDbWeight}; use frame_system::Pallet as SystemPallet; -use pallet_membership::{Config as MembershipConfig, Instance3, Pallet as MembershipPallet}; +use pallet_membership::{Config as MembershipConfig, Pallet as MembershipPallet}; use pallet_session::SessionManager as SessionManagerTrait; pub use sp_consensus_aura::sr25519::AuthorityId; use sp_core::Get; @@ -31,15 +31,15 @@ use crate::constants::staking::DefaultBlocksPerRound; type AccountIdOf = ::AccountId; /// The session manager for the collator set. -pub struct SessionManager(PhantomData); +pub struct SessionManager(PhantomData, PhantomData); -impl SessionManagerTrait> for SessionManager +impl SessionManagerTrait> for SessionManager where - Runtime: MembershipConfig + pallet_session::Config, + Runtime: MembershipConfig + pallet_session::Config, ::ValidatorId: From>, { fn new_session(new_index: SessionIndex) -> Option>> { - let collators = MembershipPallet::::members().to_vec(); + let collators = MembershipPallet::::members().to_vec(); log::debug!( "assembling new collators for new session {} at #{:?} with {:?}", @@ -56,11 +56,16 @@ where SystemPallet::::register_extra_weight_unchecked( ::DbWeight::get() - .reads(2u64.saturating_add(collators.len().saturated_into::())), + .reads(1u64.saturating_add(collators.len().saturated_into::())), frame_support::pallet_prelude::DispatchClass::Mandatory, ); - if collators.is_empty() || !has_collator_keys { + if !has_collator_keys { + log::error!("💥 keeping old session because of missing collator keys!"); + return None; + } + + if collators.is_empty() { // we never want to pass an empty set of collators. This would brick the chain. log::error!("💥 keeping old session because of empty collator set!"); return None; diff --git a/runtimes/peregrine/src/system/mod.rs b/runtimes/peregrine/src/system/mod.rs index 48be7b9e8..334d5439a 100644 --- a/runtimes/peregrine/src/system/mod.rs +++ b/runtimes/peregrine/src/system/mod.rs @@ -148,7 +148,7 @@ impl pallet_session::Config for Runtime { type ValidatorIdOf = ConvertInto; type ShouldEndSession = FixedLengthSession; type NextSessionRotation = FixedLengthSession; - type SessionManager = SessionManager; + type SessionManager = SessionManager; type SessionHandler = ::KeyTypeIdProviders; type Keys = SessionKeys; type WeightInfo = weights::pallet_session::WeightInfo; diff --git a/runtimes/spiritnet/src/system/mod.rs b/runtimes/spiritnet/src/system/mod.rs index 65a232cc8..2305b0ae4 100644 --- a/runtimes/spiritnet/src/system/mod.rs +++ b/runtimes/spiritnet/src/system/mod.rs @@ -148,7 +148,7 @@ impl pallet_session::Config for Runtime { type ValidatorIdOf = ConvertInto; type ShouldEndSession = FixedLengthSession; type NextSessionRotation = FixedLengthSession; - type SessionManager = SessionManager; + type SessionManager = SessionManager; type SessionHandler = ::KeyTypeIdProviders; type Keys = SessionKeys; type WeightInfo = weights::pallet_session::WeightInfo;