From 089ba85c32d2616ab0afbbdbfea1b3e4713bb2ed Mon Sep 17 00:00:00 2001 From: Peter Goodspeed-Niklaus Date: Fri, 15 Jan 2021 18:02:38 +0100 Subject: [PATCH] Add warning when dropping inclusion inherent (#2261) * Add warning when dropping inclusion inherent * improve warning when dropping inclusion inherent - use the actual runtime `warn!` macro - do not speculate about why the error occurred - show the actual error returned * BROKEN: add note if the current block matches the session start block This doesn't compile for a variety of reasons; this commit demonstrates what the issues are. I don't think this is an essential feature, so I'm stopping work on it here instead of pushing through it. * Revert "BROKEN: add note if the current block matches the session start block" This reverts commit eeb79ab7708ec94224fa60c9e1a46e12c18d52fd. * ensure a runtime logger exists before attempting to log a warning to it --- .../parachains/src/inclusion_inherent.rs | 23 ++++++++++++------- 1 file changed, 15 insertions(+), 8 deletions(-) diff --git a/polkadot/runtime/parachains/src/inclusion_inherent.rs b/polkadot/runtime/parachains/src/inclusion_inherent.rs index d71a81a0a2..cc121ed356 100644 --- a/polkadot/runtime/parachains/src/inclusion_inherent.rs +++ b/polkadot/runtime/parachains/src/inclusion_inherent.rs @@ -196,18 +196,25 @@ impl ProvideInherent for Module { )| { // Sanity check: session changes can invalidate an inherent, and we _really_ don't want that to happen. // See github.com/paritytech/polkadot/issues/1327 - if Self::inclusion( + let (signed_bitfields, backed_candidates) = match Self::inclusion( frame_system::RawOrigin::None.into(), signed_bitfields.clone(), backed_candidates.clone(), parent_header.clone(), - ) - .is_ok() - { - Call::inclusion(signed_bitfields, backed_candidates, parent_header) - } else { - Call::inclusion(Vec::new().into(), Vec::new(), parent_header) - } + ) { + Ok(_) => (signed_bitfields, backed_candidates), + Err(err) => { + frame_support::debug::RuntimeLogger::init(); + frame_support::debug::warn!( + target: "runtime_inclusion_inherent", + "dropping signed_bitfields and backed_candidates because they produced \ + an invalid inclusion inherent: {:?}", + err, + ); + (Vec::new().into(), Vec::new()) + } + }; + Call::inclusion(signed_bitfields, backed_candidates, parent_header) } ) }