mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-05-31 19:11:02 +00:00
Do not run unneeded subsystems on collator and its alongside node (#3061)
Currently, collators and their alongside nodes spin up a full-scale overseer running a bunch of subsystems that are not needed if the node is not a validator. That was considered to be harmless; however, we've got problems with unused subsystems getting stalled for a reason not currently known, resulting in the overseer exiting and bringing down the whole node. This PR aims to only run needed subsystems on such nodes, replacing the rest with `DummySubsystem`. It also enables collator-optimized availability recovery subsystem implementation. Partially solves #1730.
This commit is contained in:
@@ -23,13 +23,12 @@
|
||||
#![allow(missing_docs)]
|
||||
|
||||
use polkadot_cli::{
|
||||
prepared_overseer_builder,
|
||||
service::{
|
||||
AuthorityDiscoveryApi, AuxStore, BabeApi, Block, Error, HeaderBackend, Overseer,
|
||||
OverseerConnector, OverseerGen, OverseerGenArgs, OverseerHandle, ParachainHost,
|
||||
ProvideRuntimeApi,
|
||||
AuthorityDiscoveryApi, AuxStore, BabeApi, Block, Error, ExtendedOverseerGenArgs,
|
||||
HeaderBackend, Overseer, OverseerConnector, OverseerGen, OverseerGenArgs, OverseerHandle,
|
||||
ParachainHost, ProvideRuntimeApi,
|
||||
},
|
||||
Cli,
|
||||
validator_overseer_builder, Cli,
|
||||
};
|
||||
use polkadot_node_subsystem::SpawnGlue;
|
||||
use polkadot_node_subsystem_types::DefaultSubsystemClient;
|
||||
@@ -80,6 +79,7 @@ impl OverseerGen for DisputeValidCandidates {
|
||||
&self,
|
||||
connector: OverseerConnector,
|
||||
args: OverseerGenArgs<'_, Spawner, RuntimeClient>,
|
||||
ext_args: Option<ExtendedOverseerGenArgs>,
|
||||
) -> Result<
|
||||
(Overseer<SpawnGlue<Spawner>, Arc<DefaultSubsystemClient<RuntimeClient>>>, OverseerHandle),
|
||||
Error,
|
||||
@@ -97,11 +97,14 @@ impl OverseerGen for DisputeValidCandidates {
|
||||
SpawnGlue(spawner.clone()),
|
||||
);
|
||||
|
||||
prepared_overseer_builder(args)?
|
||||
.replace_candidate_validation(move |cv_subsystem| {
|
||||
InterceptedSubsystem::new(cv_subsystem, validation_filter)
|
||||
})
|
||||
.build_with_connector(connector)
|
||||
.map_err(|e| e.into())
|
||||
validator_overseer_builder(
|
||||
args,
|
||||
ext_args.expect("Extended arguments required to build validator overseer are provided"),
|
||||
)?
|
||||
.replace_candidate_validation(move |cv_subsystem| {
|
||||
InterceptedSubsystem::new(cv_subsystem, validation_filter)
|
||||
})
|
||||
.build_with_connector(connector)
|
||||
.map_err(|e| e.into())
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user