diff --git a/core/service/src/lib.rs b/core/service/src/lib.rs index 917b3d74828d4..4108af3a1ace6 100644 --- a/core/service/src/lib.rs +++ b/core/service/src/lib.rs @@ -105,7 +105,6 @@ pub struct Service { signal: Option, /// Configuration of this Service pub config: FactoryFullConfiguration, - proposer: Arc, Components::TransactionPoolApi>>, _rpc_http: Option, _rpc_ws: Option>, // WsServer is not `Sync`, but the service needs to be. _telemetry: Option, @@ -249,13 +248,6 @@ impl Service task_executor.clone(), transaction_pool.clone() )?; - let proposer = Arc::new(ProposerFactory { - client: client.clone(), - transaction_pool: transaction_pool.clone(), - offline: Arc::new(RwLock::new(OfflineTracker::new())), - force_delay: 0 // FIXME: allow this to be configured - }); - // Telemetry let telemetry = match config.telemetry_url.clone() { Some(url) => { @@ -290,7 +282,6 @@ impl Service signal: Some(signal), keystore: keystore, config, - proposer, exit, _rpc_http: rpc_http, _rpc_ws: rpc_ws.map(Mutex::new), @@ -318,13 +309,6 @@ impl Service where Components: components::Components { self.client.clone() } - /// Get shared proposer instance - pub fn proposer(&self) - -> Arc, Components::TransactionPoolApi>> - { - self.proposer.clone() - } - /// Get shared network instance. pub fn network(&self) -> Arc> { self.network.as_ref().expect("self.network always Some").clone() diff --git a/node/cli/Cargo.toml b/node/cli/Cargo.toml index 4777af39bfc69..8ad41a263cb46 100644 --- a/node/cli/Cargo.toml +++ b/node/cli/Cargo.toml @@ -24,6 +24,7 @@ substrate-service = { path = "../../core/service" } substrate-transaction-pool = { path = "../../core/transaction-pool" } substrate-network = { path = "../../core/network" } substrate-consensus-aura = { path = "../../core/consensus/aura" } +substrate-consensus-common = { path = "../../core/consensus/common" } substrate-finality-grandpa = { path = "../../core/finality-grandpa" } sr-primitives = { path = "../../core/sr-primitives" } node-executor = { path = "../executor" } diff --git a/node/cli/src/lib.rs b/node/cli/src/lib.rs index 89e6c2fb3ee05..8d240face3ce5 100644 --- a/node/cli/src/lib.rs +++ b/node/cli/src/lib.rs @@ -33,6 +33,7 @@ extern crate substrate_transaction_pool as transaction_pool; #[macro_use] extern crate substrate_network as network; extern crate substrate_consensus_aura as consensus; +extern crate substrate_consensus_common as consensus_common; extern crate substrate_client as client; extern crate substrate_finality_grandpa as grandpa; extern crate node_primitives; @@ -44,6 +45,7 @@ extern crate substrate_keystore; #[macro_use] extern crate log; extern crate structopt; +extern crate parking_lot; pub use cli::error; pub mod chain_spec; diff --git a/node/cli/src/service.rs b/node/cli/src/service.rs index 1a4df71946b16..6035677f85057 100644 --- a/node/cli/src/service.rs +++ b/node/cli/src/service.rs @@ -28,9 +28,11 @@ use substrate_service::{ }; use node_executor; use consensus::{import_queue, start_aura, Config as AuraConfig, AuraImportQueue, NothingExtra}; +use consensus_common::offline_tracker::OfflineTracker; use primitives::ed25519::Pair; use client; use std::time::Duration; +use parking_lot::RwLock; use grandpa; const AURA_SLOT_DURATION: u64 = 6; @@ -99,6 +101,12 @@ construct_service_factory! { } if !service.config.custom.grandpa_authority_only { info!("Using authority key {}", key.public()); + let proposer = Arc::new(substrate_service::ProposerFactory { + client: service.client(), + transaction_pool: service.transaction_pool(), + offline: Arc::new(RwLock::new(OfflineTracker::new())), + force_delay: 0 // FIXME: allow this to be configured https://github.com/paritytech/substrate/issues/1170 + }); executor.spawn(start_aura( AuraConfig { local_key: Some(key), @@ -106,7 +114,7 @@ construct_service_factory! { }, service.client(), block_import.clone(), - service.proposer(), + proposer, service.network(), )); }