mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-08-08 08:15:45 +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:
@@ -18,13 +18,12 @@
|
||||
//! to always return an empty set of disabled validators.
|
||||
|
||||
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;
|
||||
@@ -50,6 +49,7 @@ impl OverseerGen for SupportDisabled {
|
||||
&self,
|
||||
connector: OverseerConnector,
|
||||
args: OverseerGenArgs<'_, Spawner, RuntimeClient>,
|
||||
ext_args: Option<ExtendedOverseerGenArgs>,
|
||||
) -> Result<
|
||||
(Overseer<SpawnGlue<Spawner>, Arc<DefaultSubsystemClient<RuntimeClient>>>, OverseerHandle),
|
||||
Error,
|
||||
@@ -59,12 +59,15 @@ impl OverseerGen for SupportDisabled {
|
||||
RuntimeClient::Api: ParachainHost<Block> + BabeApi<Block> + AuthorityDiscoveryApi<Block>,
|
||||
Spawner: 'static + SpawnNamed + Clone + Unpin,
|
||||
{
|
||||
prepared_overseer_builder(args)?
|
||||
.replace_runtime_api(move |ra_subsystem| {
|
||||
InterceptedSubsystem::new(ra_subsystem, IgnoreDisabled)
|
||||
})
|
||||
.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_runtime_api(move |ra_subsystem| {
|
||||
InterceptedSubsystem::new(ra_subsystem, IgnoreDisabled)
|
||||
})
|
||||
.build_with_connector(connector)
|
||||
.map_err(|e| e.into())
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user