From 71ff24c79e2f31f63aa7f9d243d46cdc128766f8 Mon Sep 17 00:00:00 2001 From: thiolliere Date: Fri, 6 Mar 2020 18:31:48 +0100 Subject: [PATCH] Fix staking bug (#5170) * fix staking bug * add some guarantee note in SessionManager while it is not fixed in staking * bumpd impl version --- substrate/frame/session/src/lib.rs | 2 ++ substrate/frame/staking/src/lib.rs | 15 +++++---------- 2 files changed, 7 insertions(+), 10 deletions(-) diff --git a/substrate/frame/session/src/lib.rs b/substrate/frame/session/src/lib.rs index 1097cfd6be..62c122fad3 100644 --- a/substrate/frame/session/src/lib.rs +++ b/substrate/frame/session/src/lib.rs @@ -156,6 +156,8 @@ pub trait SessionManager { /// `new_index` is strictly greater than from previous call. /// /// The first session start at index 0. + /// + /// `new_session(session)` is guaranteed to be called before `end_session(session-1)`. fn new_session(new_index: SessionIndex) -> Option>; /// End the session. /// diff --git a/substrate/frame/staking/src/lib.rs b/substrate/frame/staking/src/lib.rs index 2dc377c55a..627cd1c2a1 100644 --- a/substrate/frame/staking/src/lib.rs +++ b/substrate/frame/staking/src/lib.rs @@ -1659,17 +1659,12 @@ impl Module { /// End a session potentially ending an era. fn end_session(session_index: SessionIndex) { if let Some(active_era) = Self::active_era() { - let next_active_era_start_session_index = + if let Some(next_active_era_start_session_index) = Self::eras_start_session_index(active_era.index + 1) - .unwrap_or_else(|| { - frame_support::print( - "Error: start_session_index must be set for active_era + 1" - ); - 0 - }); - - if next_active_era_start_session_index == session_index + 1 { - Self::end_era(active_era, session_index); + { + if next_active_era_start_session_index == session_index + 1 { + Self::end_era(active_era, session_index); + } } } }