Single ParachainBlockImport instance (#1782)

This commit is contained in:
Davide Galassi
2022-10-21 10:41:46 +02:00
committed by GitHub
parent 73a53d99b7
commit 3d257b770d
9 changed files with 154 additions and 121 deletions
-1
View File
@@ -217,7 +217,6 @@ pub fn run() -> Result<()> {
let partials = new_partial(&config)?;
let db = partials.backend.expose_db();
let storage = partials.backend.expose_storage();
cmd.run(config, partials.client.clone(), db, storage)
}),
BenchmarkCmd::Machine(cmd) =>
+17 -7
View File
@@ -9,7 +9,9 @@ use parachain_template_runtime::{opaque::Block, Hash, RuntimeApi};
// Cumulus Imports
use cumulus_client_consensus_aura::{AuraConsensus, BuildAuraConsensusParams, SlotProportion};
use cumulus_client_consensus_common::ParachainConsensus;
use cumulus_client_consensus_common::{
ParachainBlockImport as TParachainBlockImport, ParachainConsensus,
};
use cumulus_client_network::BlockAnnounceValidator;
use cumulus_client_service::{
prepare_node_config, start_collator, start_full_node, StartCollatorParams, StartFullNodeParams,
@@ -51,6 +53,8 @@ type ParachainClient = TFullClient<Block, RuntimeApi, ParachainExecutor>;
type ParachainBackend = TFullBackend<Block>;
type ParachainBlockImport = TParachainBlockImport<Arc<ParachainClient>>;
/// Starts a `ServiceBuilder` for a full service.
///
/// Use this macro if you don't actually need the full service, but just the builder in order to
@@ -64,7 +68,7 @@ pub fn new_partial(
(),
sc_consensus::DefaultImportQueue<Block, ParachainClient>,
sc_transaction_pool::FullPool<Block, ParachainClient>,
(Option<Telemetry>, Option<TelemetryWorkerHandle>),
(ParachainBlockImport, Option<Telemetry>, Option<TelemetryWorkerHandle>),
>,
sc_service::Error,
> {
@@ -109,8 +113,11 @@ pub fn new_partial(
client.clone(),
);
let block_import = ParachainBlockImport::new(client.clone());
let import_queue = build_import_queue(
client.clone(),
block_import.clone(),
config,
telemetry.as_ref().map(|telemetry| telemetry.handle()),
&task_manager,
@@ -124,7 +131,7 @@ pub fn new_partial(
task_manager,
transaction_pool,
select_chain: (),
other: (telemetry, telemetry_worker_handle),
other: (block_import, telemetry, telemetry_worker_handle),
})
}
@@ -163,7 +170,7 @@ async fn start_node_impl(
let parachain_config = prepare_node_config(parachain_config);
let params = new_partial(&parachain_config)?;
let (mut telemetry, telemetry_worker_handle) = params.other;
let (block_import, mut telemetry, telemetry_worker_handle) = params.other;
let client = params.client.clone();
let backend = params.backend.clone();
@@ -255,6 +262,7 @@ async fn start_node_impl(
if validator {
let parachain_consensus = build_consensus(
client.clone(),
block_import,
prometheus_registry.as_ref(),
telemetry.as_ref().map(|t| t.handle()),
&task_manager,
@@ -304,6 +312,7 @@ async fn start_node_impl(
/// Build the import queue for the parachain runtime.
fn build_import_queue(
client: Arc<ParachainClient>,
block_import: ParachainBlockImport,
config: &Configuration,
telemetry: Option<TelemetryHandle>,
task_manager: &TaskManager,
@@ -318,8 +327,8 @@ fn build_import_queue(
_,
_,
>(cumulus_client_consensus_aura::ImportQueueParams {
block_import: client.clone(),
client: client.clone(),
block_import,
client,
create_inherent_data_providers: move |_, _| async move {
let timestamp = sp_timestamp::InherentDataProvider::from_system_time();
@@ -340,6 +349,7 @@ fn build_import_queue(
fn build_consensus(
client: Arc<ParachainClient>,
block_import: ParachainBlockImport,
prometheus_registry: Option<&Registry>,
telemetry: Option<TelemetryHandle>,
task_manager: &TaskManager,
@@ -389,7 +399,7 @@ fn build_consensus(
Ok((slot, timestamp, parachain_inherent))
}
},
block_import: client.clone(),
block_import,
para_client: client,
backoff_authoring_blocks: Option::<()>::None,
sync_oracle,