mirror of
https://github.com/pezkuwichain/pezkuwi-subxt.git
synced 2026-06-17 03:11:01 +00:00
A real overseer feature (#1892)
* A real overseer feature * Fix build without feature * Update node/service/src/lib.rs Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com> Co-authored-by: Robert Habermeier <rphmeier@gmail.com> Co-authored-by: Bastian Köcher <bkchr@users.noreply.github.com>
This commit is contained in:
@@ -85,6 +85,7 @@ panic = "unwind"
|
|||||||
|
|
||||||
[features]
|
[features]
|
||||||
runtime-benchmarks=["cli/runtime-benchmarks"]
|
runtime-benchmarks=["cli/runtime-benchmarks"]
|
||||||
|
real-overseer=["cli/real-overseer"]
|
||||||
|
|
||||||
# Configuration for building a .deb package - for use with `cargo-deb`
|
# Configuration for building a .deb package - for use with `cargo-deb`
|
||||||
[package.metadata.deb]
|
[package.metadata.deb]
|
||||||
|
|||||||
@@ -54,3 +54,4 @@ browser = [
|
|||||||
runtime-benchmarks = [ "service/runtime-benchmarks" ]
|
runtime-benchmarks = [ "service/runtime-benchmarks" ]
|
||||||
trie-memory-tracker = [ "sp-trie/memory-tracker" ]
|
trie-memory-tracker = [ "sp-trie/memory-tracker" ]
|
||||||
full-node = [ "service/full-node" ]
|
full-node = [ "service/full-node" ]
|
||||||
|
real-overseer = [ "service/real-overseer" ]
|
||||||
|
|||||||
@@ -99,14 +99,16 @@ env_logger = "0.8.1"
|
|||||||
[features]
|
[features]
|
||||||
default = ["db", "full-node"]
|
default = ["db", "full-node"]
|
||||||
db = ["service/db"]
|
db = ["service/db"]
|
||||||
runtime-benchmarks = ["polkadot-runtime/runtime-benchmarks", "kusama-runtime/runtime-benchmarks", "westend-runtime/runtime-benchmarks"]
|
|
||||||
full-node = [
|
full-node = [
|
||||||
|
"polkadot-node-core-av-store",
|
||||||
|
]
|
||||||
|
runtime-benchmarks = ["polkadot-runtime/runtime-benchmarks", "kusama-runtime/runtime-benchmarks", "westend-runtime/runtime-benchmarks"]
|
||||||
|
real-overseer = [
|
||||||
"polkadot-availability-bitfield-distribution",
|
"polkadot-availability-bitfield-distribution",
|
||||||
"polkadot-availability-distribution",
|
"polkadot-availability-distribution",
|
||||||
"polkadot-collator-protocol",
|
"polkadot-collator-protocol",
|
||||||
"polkadot-network-bridge",
|
"polkadot-network-bridge",
|
||||||
"polkadot-node-collation-generation",
|
"polkadot-node-collation-generation",
|
||||||
"polkadot-node-core-av-store",
|
|
||||||
"polkadot-node-core-backing",
|
"polkadot-node-core-backing",
|
||||||
"polkadot-node-core-bitfield-signing",
|
"polkadot-node-core-bitfield-signing",
|
||||||
"polkadot-node-core-candidate-selection",
|
"polkadot-node-core-candidate-selection",
|
||||||
|
|||||||
@@ -285,7 +285,7 @@ fn new_partial<RuntimeApi, Executor>(config: &mut Configuration) -> Result<
|
|||||||
})
|
})
|
||||||
}
|
}
|
||||||
|
|
||||||
#[cfg(feature="full-node")]
|
#[cfg(all(feature="full-node", not(feature = "real-overseer")))]
|
||||||
fn real_overseer<Spawner, RuntimeClient>(
|
fn real_overseer<Spawner, RuntimeClient>(
|
||||||
leaves: impl IntoIterator<Item = BlockInfo>,
|
leaves: impl IntoIterator<Item = BlockInfo>,
|
||||||
_: SyncCryptoStorePtr,
|
_: SyncCryptoStorePtr,
|
||||||
@@ -310,6 +310,117 @@ where
|
|||||||
).map_err(|e| Error::Other(format!("Failed to create an Overseer: {:?}", e)))
|
).map_err(|e| Error::Other(format!("Failed to create an Overseer: {:?}", e)))
|
||||||
}
|
}
|
||||||
|
|
||||||
|
#[cfg(all(feature = "full-node", feature = "real-overseer"))]
|
||||||
|
fn real_overseer<Spawner, RuntimeClient>(
|
||||||
|
leaves: impl IntoIterator<Item = BlockInfo>,
|
||||||
|
keystore: SyncCryptoStorePtr,
|
||||||
|
runtime_client: Arc<RuntimeClient>,
|
||||||
|
availability_config: AvailabilityConfig,
|
||||||
|
network_service: Arc<sc_network::NetworkService<Block, Hash>>,
|
||||||
|
authority_discovery: AuthorityDiscoveryService,
|
||||||
|
registry: Option<&Registry>,
|
||||||
|
spawner: Spawner,
|
||||||
|
is_collator: IsCollator,
|
||||||
|
) -> Result<(Overseer<Spawner>, OverseerHandler), Error>
|
||||||
|
where
|
||||||
|
RuntimeClient: 'static + ProvideRuntimeApi<Block> + HeaderBackend<Block>,
|
||||||
|
RuntimeClient::Api: ParachainHost<Block>,
|
||||||
|
Spawner: 'static + SpawnNamed + Clone + Unpin,
|
||||||
|
{
|
||||||
|
use polkadot_node_subsystem_util::metrics::Metrics;
|
||||||
|
|
||||||
|
use polkadot_availability_distribution::AvailabilityDistributionSubsystem;
|
||||||
|
use polkadot_node_core_av_store::AvailabilityStoreSubsystem;
|
||||||
|
use polkadot_availability_bitfield_distribution::BitfieldDistribution as BitfieldDistributionSubsystem;
|
||||||
|
use polkadot_node_core_bitfield_signing::BitfieldSigningSubsystem;
|
||||||
|
use polkadot_node_core_backing::CandidateBackingSubsystem;
|
||||||
|
use polkadot_node_core_candidate_selection::CandidateSelectionSubsystem;
|
||||||
|
use polkadot_node_core_candidate_validation::CandidateValidationSubsystem;
|
||||||
|
use polkadot_node_core_chain_api::ChainApiSubsystem;
|
||||||
|
use polkadot_node_collation_generation::CollationGenerationSubsystem;
|
||||||
|
use polkadot_collator_protocol::{CollatorProtocolSubsystem, ProtocolSide};
|
||||||
|
use polkadot_network_bridge::NetworkBridge as NetworkBridgeSubsystem;
|
||||||
|
use polkadot_pov_distribution::PoVDistribution as PoVDistributionSubsystem;
|
||||||
|
use polkadot_node_core_provisioner::ProvisioningSubsystem as ProvisionerSubsystem;
|
||||||
|
use polkadot_node_core_runtime_api::RuntimeApiSubsystem;
|
||||||
|
use polkadot_statement_distribution::StatementDistribution as StatementDistributionSubsystem;
|
||||||
|
|
||||||
|
let all_subsystems = AllSubsystems {
|
||||||
|
availability_distribution: AvailabilityDistributionSubsystem::new(
|
||||||
|
keystore.clone(),
|
||||||
|
Metrics::register(registry)?,
|
||||||
|
),
|
||||||
|
availability_store: AvailabilityStoreSubsystem::new_on_disk(
|
||||||
|
availability_config,
|
||||||
|
Metrics::register(registry)?,
|
||||||
|
)?,
|
||||||
|
bitfield_distribution: BitfieldDistributionSubsystem::new(
|
||||||
|
Metrics::register(registry)?,
|
||||||
|
),
|
||||||
|
bitfield_signing: BitfieldSigningSubsystem::new(
|
||||||
|
spawner.clone(),
|
||||||
|
keystore.clone(),
|
||||||
|
Metrics::register(registry)?,
|
||||||
|
),
|
||||||
|
candidate_backing: CandidateBackingSubsystem::new(
|
||||||
|
spawner.clone(),
|
||||||
|
keystore.clone(),
|
||||||
|
Metrics::register(registry)?,
|
||||||
|
),
|
||||||
|
candidate_selection: CandidateSelectionSubsystem::new(
|
||||||
|
spawner.clone(),
|
||||||
|
(),
|
||||||
|
Metrics::register(registry)?,
|
||||||
|
),
|
||||||
|
candidate_validation: CandidateValidationSubsystem::new(
|
||||||
|
spawner.clone(),
|
||||||
|
Metrics::register(registry)?,
|
||||||
|
),
|
||||||
|
chain_api: ChainApiSubsystem::new(
|
||||||
|
runtime_client.clone(),
|
||||||
|
Metrics::register(registry)?,
|
||||||
|
),
|
||||||
|
collation_generation: CollationGenerationSubsystem::new(
|
||||||
|
Metrics::register(registry)?,
|
||||||
|
),
|
||||||
|
collator_protocol: {
|
||||||
|
let side = match is_collator {
|
||||||
|
IsCollator::Yes(id) => ProtocolSide::Collator(id, Metrics::register(registry)?),
|
||||||
|
IsCollator::No => ProtocolSide::Validator(Metrics::register(registry)?),
|
||||||
|
};
|
||||||
|
CollatorProtocolSubsystem::new(
|
||||||
|
side,
|
||||||
|
)
|
||||||
|
},
|
||||||
|
network_bridge: NetworkBridgeSubsystem::new(
|
||||||
|
network_service,
|
||||||
|
authority_discovery,
|
||||||
|
),
|
||||||
|
pov_distribution: PoVDistributionSubsystem::new(
|
||||||
|
Metrics::register(registry)?,
|
||||||
|
),
|
||||||
|
provisioner: ProvisionerSubsystem::new(
|
||||||
|
spawner.clone(),
|
||||||
|
(),
|
||||||
|
Metrics::register(registry)?,
|
||||||
|
),
|
||||||
|
runtime_api: RuntimeApiSubsystem::new(
|
||||||
|
runtime_client,
|
||||||
|
Metrics::register(registry)?,
|
||||||
|
),
|
||||||
|
statement_distribution: StatementDistributionSubsystem::new(
|
||||||
|
Metrics::register(registry)?,
|
||||||
|
),
|
||||||
|
};
|
||||||
|
|
||||||
|
Overseer::new(
|
||||||
|
leaves,
|
||||||
|
all_subsystems,
|
||||||
|
registry,
|
||||||
|
spawner,
|
||||||
|
).map_err(|e| Error::Other(format!("Failed to create an Overseer: {:?}", e)))
|
||||||
|
}
|
||||||
|
|
||||||
#[cfg(feature = "full-node")]
|
#[cfg(feature = "full-node")]
|
||||||
pub struct NewFull<C> {
|
pub struct NewFull<C> {
|
||||||
pub task_manager: TaskManager,
|
pub task_manager: TaskManager,
|
||||||
|
|||||||
Reference in New Issue
Block a user