mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-30 21:01:02 +00:00
parachains-runtime: Less cloning! (#6896)
* parachains-runtime: Less cloning! * Fix tests * FMT
This commit is contained in:
@@ -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
|
||||||
|
|||||||
Reference in New Issue
Block a user