mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-04-29 23:07:57 +00:00
backing: move the min votes threshold to the runtime (#1200)
* move min backing votes const to runtime also cache it per-session in the backing subsystem Signed-off-by: alindima <alin@parity.io> * add runtime migration * introduce api versioning for min_backing votes also enable it for rococo/versi for testing * also add min_backing_votes runtime calls to statement-distribution this dependency has been recently introduced by async backing * remove explicit version runtime API call this is not needed, as the RuntimeAPISubsystem already takes care of versioning and will return NotSupported if the version is not right. * address review comments - parametrise backing votes runtime API with session index - remove RuntimeInfo usage in backing subsystem, as runtime API caches the min backing votes by session index anyway. - move the logic for adjusting the configured needed backing votes with the size of the backing group to a primitives helper. - move the legacy min backing votes value to a primitives helper. - mark JoinMultiple error as fatal, since the Canceled (non-multiple) counterpart is also fatal. - make backing subsystem handle fatal errors for new leaves update. - add HostConfiguration consistency check for zeroed backing votes threshold - add cumulus accompanying change * fix cumulus test compilation * fix tests * more small fixes * fix merge * bump runtime api version for westend and rollback version for rococo --------- Signed-off-by: alindima <alin@parity.io> Co-authored-by: Javier Viola <javier@parity.io>
This commit is contained in:
@@ -65,6 +65,7 @@ pub(crate) struct RequestResultCache {
|
||||
LruMap<Hash, Vec<(SessionIndex, CandidateHash, vstaging::slashing::PendingSlashes)>>,
|
||||
key_ownership_proof:
|
||||
LruMap<(Hash, ValidatorId), Option<vstaging::slashing::OpaqueKeyOwnershipProof>>,
|
||||
minimum_backing_votes: LruMap<SessionIndex, u32>,
|
||||
|
||||
staging_para_backing_state: LruMap<(Hash, ParaId), Option<vstaging::BackingState>>,
|
||||
staging_async_backing_params: LruMap<Hash, vstaging::AsyncBackingParams>,
|
||||
@@ -97,6 +98,7 @@ impl Default for RequestResultCache {
|
||||
disputes: LruMap::new(ByLength::new(DEFAULT_CACHE_CAP)),
|
||||
unapplied_slashes: LruMap::new(ByLength::new(DEFAULT_CACHE_CAP)),
|
||||
key_ownership_proof: LruMap::new(ByLength::new(DEFAULT_CACHE_CAP)),
|
||||
minimum_backing_votes: LruMap::new(ByLength::new(DEFAULT_CACHE_CAP)),
|
||||
|
||||
staging_para_backing_state: LruMap::new(ByLength::new(DEFAULT_CACHE_CAP)),
|
||||
staging_async_backing_params: LruMap::new(ByLength::new(DEFAULT_CACHE_CAP)),
|
||||
@@ -434,6 +436,18 @@ impl RequestResultCache {
|
||||
None
|
||||
}
|
||||
|
||||
pub(crate) fn minimum_backing_votes(&mut self, session_index: SessionIndex) -> Option<u32> {
|
||||
self.minimum_backing_votes.get(&session_index).copied()
|
||||
}
|
||||
|
||||
pub(crate) fn cache_minimum_backing_votes(
|
||||
&mut self,
|
||||
session_index: SessionIndex,
|
||||
minimum_backing_votes: u32,
|
||||
) {
|
||||
self.minimum_backing_votes.insert(session_index, minimum_backing_votes);
|
||||
}
|
||||
|
||||
pub(crate) fn staging_para_backing_state(
|
||||
&mut self,
|
||||
key: (Hash, ParaId),
|
||||
@@ -469,6 +483,7 @@ pub(crate) enum RequestResult {
|
||||
// The structure of each variant is (relay_parent, [params,]*, result)
|
||||
Authorities(Hash, Vec<AuthorityDiscoveryId>),
|
||||
Validators(Hash, Vec<ValidatorId>),
|
||||
MinimumBackingVotes(Hash, SessionIndex, u32),
|
||||
ValidatorGroups(Hash, (Vec<Vec<ValidatorIndex>>, GroupRotationInfo)),
|
||||
AvailabilityCores(Hash, Vec<CoreState>),
|
||||
PersistedValidationData(Hash, ParaId, OccupiedCoreAssumption, Option<PersistedValidationData>),
|
||||
|
||||
Reference in New Issue
Block a user