From b5dbd15c1016b2fe3fa85087dc98bea9e983c5e3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Silva?= Date: Wed, 23 Oct 2019 22:09:22 +0100 Subject: [PATCH 1/4] node: spawn grandpa voter as essential task --- node/cli/src/service.rs | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) diff --git a/node/cli/src/service.rs b/node/cli/src/service.rs index 983908c07da5e..b5eac6245c901 100644 --- a/node/cli/src/service.rs +++ b/node/cli/src/service.rs @@ -207,7 +207,9 @@ macro_rules! new_full { telemetry_on_connect: Some(service.telemetry_on_connect_stream()), voting_rule: grandpa::VotingRulesBuilder::default().build(), }; - service.spawn_task(Box::new(grandpa::run_grandpa_voter(grandpa_config)?)); + // the GRANDPA voter task is considered infallible, i.e. + // if it fails we take down the service with it. + service.spawn_essential_task(grandpa::run_grandpa_voter(grandpa_config)?); }, (_, true) => { grandpa::setup_disabled_grandpa( From b90c0962900d34405fb22bb4a37b8677a4692feb Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Silva?= Date: Wed, 23 Oct 2019 22:16:09 +0100 Subject: [PATCH 2/4] node: stop babe authoring task on exit --- node/cli/src/service.rs | 3 +++ 1 file changed, 3 insertions(+) diff --git a/node/cli/src/service.rs b/node/cli/src/service.rs index b5eac6245c901..f139a61d271f7 100644 --- a/node/cli/src/service.rs +++ b/node/cli/src/service.rs @@ -109,6 +109,7 @@ macro_rules! new_full_start { /// concrete types instead. macro_rules! new_full { ($config:expr, $with_startup_data: expr) => {{ + use futures::future::Future; use futures::sync::mpsc; use network::DhtEvent; @@ -168,6 +169,7 @@ macro_rules! new_full { }; let babe = babe::start_babe(babe_config)?; + let babe = babe.select(service.on_exit()).then(|_| Ok(())); service.spawn_essential_task(babe); let authority_discovery = authority_discovery::AuthorityDiscovery::new( @@ -175,6 +177,7 @@ macro_rules! new_full { service.network(), dht_event_rx, ); + service.spawn_task(authority_discovery); } From 21ea79bea752276facd760b69c3e339af5ffba2e Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Andr=C3=A9=20Silva?= Date: Wed, 23 Oct 2019 22:17:14 +0100 Subject: [PATCH 3/4] node: remove unnecessary future boxing --- node-template/src/service.rs | 8 ++++---- node/cli/src/service.rs | 4 ++-- 2 files changed, 6 insertions(+), 6 deletions(-) diff --git a/node-template/src/service.rs b/node-template/src/service.rs index 79343558124f9..c46928c10ef76 100644 --- a/node-template/src/service.rs +++ b/node-template/src/service.rs @@ -115,11 +115,11 @@ pub fn new_full(config: Configuration(config: Configuration { // start the lightweight GRANDPA observer - service.spawn_task(Box::new(grandpa::run_grandpa_observer( + service.spawn_task(grandpa::run_grandpa_observer( grandpa_config, grandpa_link, service.network(), service.on_exit(), - )?)); + )?); }, (true, false) => { // start the full GRANDPA voter diff --git a/node/cli/src/service.rs b/node/cli/src/service.rs index f139a61d271f7..526cb90b7086c 100644 --- a/node/cli/src/service.rs +++ b/node/cli/src/service.rs @@ -192,12 +192,12 @@ macro_rules! new_full { match (is_authority, disable_grandpa) { (false, false) => { // start the lightweight GRANDPA observer - service.spawn_task(Box::new(grandpa::run_grandpa_observer( + service.spawn_task(grandpa::run_grandpa_observer( config, grandpa_link, service.network(), service.on_exit(), - )?)); + )?); }, (true, false) => { // start the full GRANDPA voter From 60c57eb6fa09e25af8a4823e22f54abf885508f3 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Bastian=20K=C3=B6cher?= Date: Thu, 24 Oct 2019 09:42:51 +0200 Subject: [PATCH 4/4] Apply suggestions from code review --- node/cli/src/service.rs | 2 -- 1 file changed, 2 deletions(-) diff --git a/node/cli/src/service.rs b/node/cli/src/service.rs index 526cb90b7086c..0f4a098f3d08d 100644 --- a/node/cli/src/service.rs +++ b/node/cli/src/service.rs @@ -109,7 +109,6 @@ macro_rules! new_full_start { /// concrete types instead. macro_rules! new_full { ($config:expr, $with_startup_data: expr) => {{ - use futures::future::Future; use futures::sync::mpsc; use network::DhtEvent; @@ -169,7 +168,6 @@ macro_rules! new_full { }; let babe = babe::start_babe(babe_config)?; - let babe = babe.select(service.on_exit()).then(|_| Ok(())); service.spawn_essential_task(babe); let authority_discovery = authority_discovery::AuthorityDiscovery::new(