diff --git a/Cargo.lock b/Cargo.lock index c96f0b2d5e479..5be970e54affe 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -3826,6 +3826,7 @@ dependencies = [ "sp-transaction-pool-api 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sp-trie 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "tokio 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-executor 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -6076,6 +6077,8 @@ version = "0.2.0-alpha.6" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ "futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", + "lazy_static 1.4.0 (registry+https://github.com/rust-lang/crates.io-index)", + "tokio-sync 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] diff --git a/validation/Cargo.toml b/validation/Cargo.toml index de4417fa757c9..b2affaa5cf47a 100644 --- a/validation/Cargo.toml +++ b/validation/Cargo.toml @@ -12,6 +12,7 @@ tokio = { version = "0.2.4", features = ["rt-core", "blocking"] } derive_more = "0.14.1" log = "0.4.8" exit-future = "0.2.0" +tokio-executor = { version = "0.2.0-alpha.6", features = ["blocking"] } codec = { package = "parity-scale-codec", version = "1.1.0", default-features = false, features = ["derive"] } availability_store = { package = "polkadot-availability-store", path = "../availability-store" } parachain = { package = "polkadot-parachain", path = "../parachain" } diff --git a/validation/src/lib.rs b/validation/src/lib.rs index 23cf1de6b2ae8..b779ccbc9851f 100644 --- a/validation/src/lib.rs +++ b/validation/src/lib.rs @@ -747,7 +747,7 @@ enum CreateProposalState { /// Represents the state when we switch from pending to fired. Switching, /// Block proposing has fired. - Fired(tokio::task::JoinHandle>), + Fired(tokio_executor::blocking::Blocking>), } /// Inner data of the create proposal. @@ -893,22 +893,18 @@ impl Future for CreateProposal where thus Switching will never be reachable here; qed" ), CreateProposalState::Fired(mut future) => { - let ret = Pin::new(&mut future) - .poll(cx) - .map(|res| res.map_err(Error::Join).and_then(|res| res)); + let ret = Pin::new(&mut future).poll(cx); self.state = CreateProposalState::Fired(future); return ret }, }; // 2. propose - let mut future = tokio::task::spawn_blocking(move || { + let mut future = tokio_executor::blocking::run(move || { let proposed_candidates = data.table.proposed_set(); data.propose_with(proposed_candidates) }); - let polled = Pin::new(&mut future) - .poll(cx) - .map(|res| res.map_err(Error::Join).and_then(|res| res)); + let polled = Pin::new(&mut future).poll(cx); self.state = CreateProposalState::Fired(future); polled