parachains-runtime: Less cloning! (#6896)

* parachains-runtime: Less cloning!

* Fix tests

* FMT
This commit is contained in:
Bastian Köcher
2023-03-16 19:56:52 +01:00
committed by GitHub
parent 8d92debd44
commit 508f3bd19a
3 changed files with 25 additions and 28 deletions
+6 -6
View File
@@ -277,7 +277,7 @@ pub trait DisputesHandler<BlockNumber: Ord> {
/// Handle sets of dispute statements corresponding to 0 or more candidates. /// Handle sets of dispute statements corresponding to 0 or more candidates.
/// Returns a vector of freshly created disputes. /// Returns a vector of freshly created disputes.
fn process_checked_multi_dispute_data( fn process_checked_multi_dispute_data(
statement_sets: CheckedMultiDisputeStatementSet, statement_sets: &CheckedMultiDisputeStatementSet,
) -> Result<Vec<(SessionIndex, CandidateHash)>, DispatchError>; ) -> Result<Vec<(SessionIndex, CandidateHash)>, DispatchError>;
/// Note that the given candidate has been included. /// Note that the given candidate has been included.
@@ -325,7 +325,7 @@ impl<BlockNumber: Ord> DisputesHandler<BlockNumber> for () {
} }
fn process_checked_multi_dispute_data( fn process_checked_multi_dispute_data(
_statement_sets: CheckedMultiDisputeStatementSet, _statement_sets: &CheckedMultiDisputeStatementSet,
) -> Result<Vec<(SessionIndex, CandidateHash)>, DispatchError> { ) -> Result<Vec<(SessionIndex, CandidateHash)>, DispatchError> {
Ok(Vec::new()) Ok(Vec::new())
} }
@@ -379,7 +379,7 @@ where
} }
fn process_checked_multi_dispute_data( fn process_checked_multi_dispute_data(
statement_sets: CheckedMultiDisputeStatementSet, statement_sets: &CheckedMultiDisputeStatementSet,
) -> Result<Vec<(SessionIndex, CandidateHash)>, DispatchError> { ) -> Result<Vec<(SessionIndex, CandidateHash)>, DispatchError> {
pallet::Pallet::<T>::process_checked_multi_dispute_data(statement_sets) pallet::Pallet::<T>::process_checked_multi_dispute_data(statement_sets)
} }
@@ -983,14 +983,14 @@ impl<T: Config> Pallet<T> {
/// and to fail the extrinsic on error. As invalid inherents are not allowed, the dirty state /// and to fail the extrinsic on error. As invalid inherents are not allowed, the dirty state
/// is not committed. /// is not committed.
pub(crate) fn process_checked_multi_dispute_data( pub(crate) fn process_checked_multi_dispute_data(
statement_sets: CheckedMultiDisputeStatementSet, statement_sets: &CheckedMultiDisputeStatementSet,
) -> Result<Vec<(SessionIndex, CandidateHash)>, DispatchError> { ) -> Result<Vec<(SessionIndex, CandidateHash)>, DispatchError> {
let config = <configuration::Pallet<T>>::config(); let config = <configuration::Pallet<T>>::config();
let mut fresh = Vec::with_capacity(statement_sets.len()); let mut fresh = Vec::with_capacity(statement_sets.len());
for statement_set in statement_sets { for statement_set in statement_sets {
let dispute_target = { let dispute_target = {
let statement_set: &DisputeStatementSet = statement_set.as_ref(); let statement_set = statement_set.as_ref();
(statement_set.session, statement_set.candidate_hash) (statement_set.session, statement_set.candidate_hash)
}; };
if Self::process_checked_dispute_data( if Self::process_checked_dispute_data(
@@ -1126,7 +1126,7 @@ impl<T: Config> Pallet<T> {
/// Fails if the dispute data is invalid. Returns a Boolean indicating whether the /// Fails if the dispute data is invalid. Returns a Boolean indicating whether the
/// dispute is fresh. /// dispute is fresh.
fn process_checked_dispute_data( fn process_checked_dispute_data(
set: CheckedDisputeStatementSet, set: &CheckedDisputeStatementSet,
dispute_post_conclusion_acceptance_period: T::BlockNumber, dispute_post_conclusion_acceptance_period: T::BlockNumber,
) -> Result<bool, DispatchError> { ) -> Result<bool, DispatchError> {
// Dispute statement sets on any dispute which concluded // Dispute statement sets on any dispute which concluded
@@ -431,7 +431,7 @@ fn test_dispute_timeout() {
let stmts = filter_dispute_set(stmts); let stmts = filter_dispute_set(stmts);
assert_ok!( assert_ok!(
Pallet::<Test>::process_checked_multi_dispute_data(stmts), Pallet::<Test>::process_checked_multi_dispute_data(&stmts),
vec![(9, candidate_hash.clone())], vec![(9, candidate_hash.clone())],
); );
@@ -579,7 +579,7 @@ fn test_provide_multi_dispute_is_providing() {
assert_ok!( assert_ok!(
Pallet::<Test>::process_checked_multi_dispute_data( Pallet::<Test>::process_checked_multi_dispute_data(
stmts &stmts
.into_iter() .into_iter()
.map(CheckedDisputeStatementSet::unchecked_from_unchecked) .map(CheckedDisputeStatementSet::unchecked_from_unchecked)
.collect() .collect()
@@ -644,7 +644,7 @@ fn test_disputes_with_missing_backing_votes_are_rejected() {
}]; }];
assert!(Pallet::<Test>::process_checked_multi_dispute_data( assert!(Pallet::<Test>::process_checked_multi_dispute_data(
stmts &stmts
.into_iter() .into_iter()
.map(CheckedDisputeStatementSet::unchecked_from_unchecked) .map(CheckedDisputeStatementSet::unchecked_from_unchecked)
.collect() .collect()
@@ -714,7 +714,7 @@ fn test_freeze_on_note_included() {
], ],
}]; }];
assert!(Pallet::<Test>::process_checked_multi_dispute_data( assert!(Pallet::<Test>::process_checked_multi_dispute_data(
stmts &stmts
.into_iter() .into_iter()
.map(CheckedDisputeStatementSet::unchecked_from_unchecked) .map(CheckedDisputeStatementSet::unchecked_from_unchecked)
.collect() .collect()
@@ -789,7 +789,7 @@ fn test_freeze_provided_against_supermajority_for_included() {
Pallet::<Test>::note_included(3, candidate_hash.clone(), 3); Pallet::<Test>::note_included(3, candidate_hash.clone(), 3);
assert!(Pallet::<Test>::process_checked_multi_dispute_data( assert!(Pallet::<Test>::process_checked_multi_dispute_data(
stmts &stmts
.into_iter() .into_iter()
.map(CheckedDisputeStatementSet::unchecked_from_unchecked) .map(CheckedDisputeStatementSet::unchecked_from_unchecked)
.collect() .collect()
@@ -891,7 +891,7 @@ mod unconfirmed_disputes {
let stmts = filter_dispute_set(stmts); let stmts = filter_dispute_set(stmts);
// Not confirmed => should be filtered out // Not confirmed => should be filtered out
assert_ok!(Pallet::<Test>::process_checked_multi_dispute_data(stmts), vec![],); assert_ok!(Pallet::<Test>::process_checked_multi_dispute_data(&stmts), vec![],);
}); });
} }
@@ -903,7 +903,7 @@ mod unconfirmed_disputes {
let stmts = vec![CheckedDisputeStatementSet::unchecked_from_unchecked(stmts)]; let stmts = vec![CheckedDisputeStatementSet::unchecked_from_unchecked(stmts)];
assert_matches!( assert_matches!(
Pallet::<Test>::process_checked_multi_dispute_data(stmts), Pallet::<Test>::process_checked_multi_dispute_data(&stmts),
Err(DispatchError::Module(ModuleError{index: _, error: _, message})) => assert_eq!(message, Some("UnconfirmedDispute")) Err(DispatchError::Module(ModuleError{index: _, error: _, message})) => assert_eq!(message, Some("UnconfirmedDispute"))
); );
@@ -1011,7 +1011,7 @@ fn test_provide_multi_dispute_success_and_other() {
let stmts = filter_dispute_set(stmts); let stmts = filter_dispute_set(stmts);
assert_ok!( assert_ok!(
Pallet::<Test>::process_checked_multi_dispute_data(stmts), Pallet::<Test>::process_checked_multi_dispute_data(&stmts),
vec![(3, candidate_hash.clone())], vec![(3, candidate_hash.clone())],
); );
@@ -1076,7 +1076,7 @@ fn test_provide_multi_dispute_success_and_other() {
let stmts = filter_dispute_set(stmts); let stmts = filter_dispute_set(stmts);
assert_ok!( assert_ok!(
Pallet::<Test>::process_checked_multi_dispute_data(stmts), Pallet::<Test>::process_checked_multi_dispute_data(&stmts),
vec![(5, candidate_hash.clone())], vec![(5, candidate_hash.clone())],
); );
@@ -1098,7 +1098,7 @@ fn test_provide_multi_dispute_success_and_other() {
)], )],
}]; }];
let stmts = filter_dispute_set(stmts); let stmts = filter_dispute_set(stmts);
assert_ok!(Pallet::<Test>::process_checked_multi_dispute_data(stmts), vec![]); assert_ok!(Pallet::<Test>::process_checked_multi_dispute_data(&stmts), vec![]);
let stmts = vec![ let stmts = vec![
// 0, 4, and 5 vote against 5 // 0, 4, and 5 vote against 5
@@ -1177,7 +1177,7 @@ fn test_provide_multi_dispute_success_and_other() {
}, },
]; ];
let stmts = filter_dispute_set(stmts); let stmts = filter_dispute_set(stmts);
assert_ok!(Pallet::<Test>::process_checked_multi_dispute_data(stmts), vec![]); assert_ok!(Pallet::<Test>::process_checked_multi_dispute_data(&stmts), vec![]);
assert_eq!( assert_eq!(
Pallet::<Test>::disputes(), Pallet::<Test>::disputes(),
@@ -1386,7 +1386,7 @@ fn test_punish_post_conclusion() {
let stmts = filter_dispute_set(stmts); let stmts = filter_dispute_set(stmts);
assert_ok!( assert_ok!(
Pallet::<Test>::process_checked_multi_dispute_data(stmts), Pallet::<Test>::process_checked_multi_dispute_data(&stmts),
vec![(session, candidate_hash)], vec![(session, candidate_hash)],
); );
@@ -1429,7 +1429,7 @@ fn test_punish_post_conclusion() {
}]; }];
let stmts = filter_dispute_set(stmts); let stmts = filter_dispute_set(stmts);
assert_ok!(Pallet::<Test>::process_checked_multi_dispute_data(stmts), vec![],); assert_ok!(Pallet::<Test>::process_checked_multi_dispute_data(&stmts), vec![],);
// Ensure punishment for is called // Ensure punishment for is called
assert_eq!( assert_eq!(
@@ -412,8 +412,7 @@ impl<T: Config> Pallet<T> {
// Note that `process_checked_multi_dispute_data` will iterate and import each // Note that `process_checked_multi_dispute_data` will iterate and import each
// dispute; so the input here must be reasonably bounded, // dispute; so the input here must be reasonably bounded,
// which is guaranteed by the checks and weight limitation above. // which is guaranteed by the checks and weight limitation above.
let _ = let _ = T::DisputesHandler::process_checked_multi_dispute_data(&checked_disputes)?;
T::DisputesHandler::process_checked_multi_dispute_data(checked_disputes.clone())?;
METRICS.on_disputes_imported(checked_disputes.len() as u64); METRICS.on_disputes_imported(checked_disputes.len() as u64);
if T::DisputesHandler::is_frozen() { if T::DisputesHandler::is_frozen() {
@@ -625,13 +624,11 @@ impl<T: Config> Pallet<T> {
// we don't care about fresh or not disputes // we don't care about fresh or not disputes
// this writes them to storage, so let's query it via those means // this writes them to storage, so let's query it via those means
// if this fails for whatever reason, that's ok // if this fails for whatever reason, that's ok
let _ = T::DisputesHandler::process_checked_multi_dispute_data( let _ = T::DisputesHandler::process_checked_multi_dispute_data(&checked_disputes_sets)
checked_disputes_sets.clone(), .map_err(|e| {
) log::warn!(target: LOG_TARGET, "MultiDisputesData failed to update: {:?}", e);
.map_err(|e| { e
log::warn!(target: LOG_TARGET, "MultiDisputesData failed to update: {:?}", e); });
e
});
// Contains the disputes that are concluded in the current session only, // Contains the disputes that are concluded in the current session only,
// since these are the only ones that are relevant for the occupied cores // since these are the only ones that are relevant for the occupied cores