From 0f5b63daf51a2e8557b4ef139ca67e18ddd65035 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Silva?= Date: Wed, 28 Aug 2019 16:08:18 +0100 Subject: [PATCH 1/2] node: use plain vec for tasks_to_spawn --- node/cli/src/service.rs | 20 +++++++++----------- 1 file changed, 9 insertions(+), 11 deletions(-) diff --git a/node/cli/src/service.rs b/node/cli/src/service.rs index c47e764c4294e..32d11995a107a 100644 --- a/node/cli/src/service.rs +++ b/node/cli/src/service.rs @@ -46,7 +46,7 @@ macro_rules! new_full_start { ($config:expr) => {{ let mut import_setup = None; let inherent_data_providers = inherents::InherentDataProviders::new(); - let mut tasks_to_spawn = None; + let mut tasks_to_spawn = Vec::new(); let builder = substrate_service::ServiceBuilder::new_full::< node_primitives::Block, node_runtime::RuntimeApi, node_executor::Executor @@ -79,7 +79,7 @@ macro_rules! new_full_start { )?; import_setup = Some((babe_block_import.clone(), link_half, babe_link)); - tasks_to_spawn = Some(vec![Box::new(pruning_task)]); + tasks_to_spawn.push(Box::new(pruning_task)); Ok(import_queue) })? @@ -92,7 +92,7 @@ macro_rules! new_full_start { ); io })?; - + (builder, import_setup, inherent_data_providers, tasks_to_spawn) }} } @@ -117,14 +117,12 @@ macro_rules! new_full { .expect("Link Half and Block Import are present for Full Services or setup failed before. qed"); // spawn any futures that were created in the previous setup steps - if let Some(tasks) = tasks_to_spawn.take() { - for task in tasks { - service.spawn_task( - task.select(service.on_exit()) - .map(|_| ()) - .map_err(|_| ()) - ); - } + for task in tasks_to_spawn.drain(..) { + service.spawn_task( + task.select(service.on_exit()) + .map(|_| ()) + .map_err(|_| ()) + ); } if service.config().roles.is_authority() { From 23814768fc4a812418ddac8d33bdd0aaa5569c70 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Silva?= Date: Wed, 28 Aug 2019 16:08:44 +0100 Subject: [PATCH 2/2] node: spawn background tasks in light client setup --- node/cli/src/service.rs | 23 +++++++++++++++++++---- 1 file changed, 19 insertions(+), 4 deletions(-) diff --git a/node/cli/src/service.rs b/node/cli/src/service.rs index 32d11995a107a..40f287445f776 100644 --- a/node/cli/src/service.rs +++ b/node/cli/src/service.rs @@ -205,9 +205,12 @@ pub fn new_full(config: Configuration(config: Configuration) -> Result { + use futures::Future; + let inherent_data_providers = InherentDataProviders::new(); + let mut tasks_to_spawn = Vec::new(); - ServiceBuilder::new_light::(config)? + let service = ServiceBuilder::new_light::(config)? .with_select_chain(|_config, client| { #[allow(deprecated)] Ok(LongestChain::new(client.backend().clone())) @@ -229,8 +232,7 @@ pub fn new_light(config: Configuration(config: Configuration(config: Configuration