diff --git a/pallets/indexing/src/lib.rs b/pallets/indexing/src/lib.rs index 10558407..483b20d4 100644 --- a/pallets/indexing/src/lib.rs +++ b/pallets/indexing/src/lib.rs @@ -484,6 +484,7 @@ pub mod pallet { error: e, data: on_chain_table_bytes, }); + return Err(e); } else { Pallet::::deposit_event(Event::SystemTableUpdate { table: quorum.table.clone(), diff --git a/pallets/system_tables/src/lib.rs b/pallets/system_tables/src/lib.rs index 1fae504c..4228d4a1 100644 --- a/pallets/system_tables/src/lib.rs +++ b/pallets/system_tables/src/lib.rs @@ -241,11 +241,11 @@ pub mod pallet { Ok(()) } - _ => Err(Error::::MissingExpectedField.into()), + _ => emit_missing_expected_field_error::(), } }) - .for_each(emit_for_error::); - Ok(()) + .collect::, _>>() + .map(|_| ()) } /// Process a Nominate SystemRequest @@ -272,9 +272,10 @@ pub mod pallet { errors ); - errors - .into_iter() - .for_each(|e| emit_for_error::(Result::<(), _>::Err(e))); + for error in errors.iter().copied() { + emit_error::(error); + } + Err(*errors.first().expect("There is at least one error"))?; } if nominations.is_empty() { @@ -289,12 +290,11 @@ pub mod pallet { pallet_staking::Pallet::::nominate(nominator_signer, nominations)?; Ok(()) } - _ => Err(Error::::MissingExpectedField.into()), + _ => emit_missing_expected_field_error::(), } }) - .for_each(emit_for_error::); - - Ok(()) + .collect::, _>>() + .map(|_| ()) } /// Processes the actual withdrawal once the Unstaked event is emitted from the Ethereum @@ -325,12 +325,11 @@ pub mod pallet { Ok(()) } - _ => Err(Error::::MissingExpectedField.into()), + _ => emit_missing_expected_field_error::(), } }) - .for_each(emit_for_error::); - - Ok(()) + .collect::, _>>() + .map(|_| ()) } /// Processes an unstake claimed event and updates chain state appropriately @@ -383,11 +382,11 @@ pub mod pallet { Ok(()) } - _ => Err(Error::::MissingExpectedField.into()), + _ => emit_missing_expected_field_error::(), } }) - .for_each(emit_for_error::); - Ok(()) + .collect::, _>>() + .map(|_| ()) } /// Parse a system request to initiate unstaking @@ -420,12 +419,11 @@ pub mod pallet { Ok(()) } - _ => Err(Error::::MissingExpectedField.into()), + _ => emit_missing_expected_field_error::(), } }) - .for_each(emit_for_error::); - - Ok(()) + .collect::, _>>() + .map(|_| ()) } /// Process a request to cancel unstakng @@ -448,18 +446,21 @@ pub mod pallet { .map_err(|e| e.error)?; Ok(()) } - _ => Err(Error::::MissingExpectedField.into()), + _ => emit_missing_expected_field_error::(), } }) - .for_each(emit_for_error::); - Ok(()) + .collect::, _>>() + .map(|_| ()) } - fn emit_for_error(r: DispatchResult) { - if let Err(error) = r { - // Emit an event for any errors - Pallet::::deposit_event(Event::::MessageProcessingError { error }); - } + fn emit_error(error: DispatchError) { + Pallet::::deposit_event(Event::::MessageProcessingError { error }); + } + + fn emit_missing_expected_field_error() -> DispatchResult { + let error = Error::::MissingExpectedField.into(); + emit_error::(error); + Err(error) } #[pallet::storage] @@ -502,12 +503,11 @@ pub mod pallet { messages::handle_message::(eth_sender, body.to_vec())?; Ok(()) } - _ => Err(Error::::MissingExpectedField.into()), + _ => emit_missing_expected_field_error::(), } }) - .for_each(emit_for_error::); - - Ok(()) + .collect::, _>>() + .map(|_| ()) } /// Process a funded message received from our EVM contract @@ -541,12 +541,11 @@ pub mod pallet { )?; Ok(()) } - _ => Err(Error::::MissingExpectedField.into()), + _ => emit_missing_expected_field_error::(), } }) - .for_each(emit_for_error::); - - Ok(()) + .collect::, _>>() + .map(|_| ()) } /// A custom offence handler that chills validators when they offend