diff --git a/Cargo.lock b/Cargo.lock index c5510f3bc38d..b71a6dfc32f2 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -4532,6 +4532,7 @@ dependencies = [ "sc-network-gossip", "sp-api", "sp-blockchain", + "sp-consensus", "sp-core", "sp-keyring", "sp-runtime", diff --git a/collator/src/lib.rs b/collator/src/lib.rs index cfe400051327..070740bf7ff8 100644 --- a/collator/src/lib.rs +++ b/collator/src/lib.rs @@ -76,6 +76,7 @@ use polkadot_service_new::{ use sc_service::SpawnTaskHandle; use sp_core::traits::SpawnNamed; use sp_runtime::traits::BlakeTwo256; +use consensus_common::SyncOracle; const COLLATION_TIMEOUT: Duration = Duration::from_secs(30); @@ -120,7 +121,7 @@ pub trait BuildParachainContext { self, client: polkadot_service::Client, spawner: SP, - network: impl Network + Clone + 'static, + network: impl Network + SyncOracle + Clone + 'static, ) -> Result where SP: SpawnNamed + Clone + Send + Sync + 'static; @@ -391,7 +392,7 @@ where .into()); } - let (task_manager, client, handlers) = polkadot_service::build_full( + let (task_manager, client, handles) = polkadot_service::build_full( config, Some((key.public(), para_id)), None, @@ -402,11 +403,11 @@ where let future = build_collator_service( task_manager.spawn_handle(), - handlers, + handles, client, para_id, key, - build_parachain_context + build_parachain_context, )?; Ok((future, task_manager)) diff --git a/network/Cargo.toml b/network/Cargo.toml index 6685bbb38218..748bc20c097d 100644 --- a/network/Cargo.toml +++ b/network/Cargo.toml @@ -17,6 +17,7 @@ polkadot-erasure-coding = { path = "../erasure-coding" } codec = { package = "parity-scale-codec", version = "1.3.4", default-features = false, features = ["derive"] } sc-network = { git = "https://github.com/paritytech/substrate", branch = "master" } sc-network-gossip = { git = "https://github.com/paritytech/substrate", branch = "master" } +sp-consensus = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-core = { git = "https://github.com/paritytech/substrate", branch = "master" } sp-runtime = { git = "https://github.com/paritytech/substrate", branch = "master" } futures = "0.3.5" diff --git a/network/src/protocol/mod.rs b/network/src/protocol/mod.rs index 6dfef09da8ba..2626a5a3735f 100644 --- a/network/src/protocol/mod.rs +++ b/network/src/protocol/mod.rs @@ -1488,6 +1488,16 @@ impl av_store::ErasureNetworking for Service { } } +impl sp_consensus::SyncOracle for Service where for<'r> &'r N: sp_consensus::SyncOracle { + fn is_major_syncing(&mut self) -> bool { + self.network_service.is_major_syncing() + } + + fn is_offline(&mut self) -> bool { + self.network_service.is_offline() + } +} + /// Errors when interacting with the statement router. #[derive(Debug, derive_more::Display, derive_more::From)] pub enum RouterError {