Update tokio to 0.2 again and remove TaskExecutors (#786)

* upgrade tokio again

* Remove WrappedExecutor

* switch to spawn_blocking
This commit is contained in:
Ashley
2020-01-29 12:13:47 +01:00
committed by GitHub
parent aa86197ec9
commit 04eae615b5
14 changed files with 63 additions and 134 deletions
+13 -48
View File
@@ -1384,15 +1384,6 @@ dependencies = [
"pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]]
name = "futures-timer"
version = "1.0.3"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)",
"pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]] [[package]]
name = "futures-timer" name = "futures-timer"
version = "2.0.2" version = "2.0.2"
@@ -1423,7 +1414,6 @@ name = "futures-util-preview"
version = "0.3.0-alpha.19" version = "0.3.0-alpha.19"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [ dependencies = [
"futures-channel-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)",
"futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", "futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)",
"futures-sink-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)", "futures-sink-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)",
"pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)", "pin-utils 0.1.0-alpha.4 (registry+https://github.com/rust-lang/crates.io-index)",
@@ -1548,7 +1538,7 @@ dependencies = [
"parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)", "parking_lot 0.9.0 (registry+https://github.com/rust-lang/crates.io-index)",
"serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.102 (registry+https://github.com/rust-lang/crates.io-index)",
"serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.41 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]] [[package]]
@@ -1582,7 +1572,7 @@ dependencies = [
"indexmap 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "indexmap 1.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio-util 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", "tokio-util 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
@@ -1785,7 +1775,7 @@ dependencies = [
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"pin-project 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "pin-project 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)",
"time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"tower-service 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "tower-service 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
"want 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)", "want 0.3.0 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
@@ -3714,7 +3704,7 @@ dependencies = [
"sp-consensus 0.8.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sp-consensus 0.8.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)",
"sp-core 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sp-core 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)",
"sp-runtime 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sp-runtime 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 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]] [[package]]
@@ -3722,7 +3712,6 @@ name = "polkadot-cli"
version = "0.7.19" version = "0.7.19"
dependencies = [ dependencies = [
"browser-utils 0.8.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "browser-utils 0.8.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)",
"futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
"futures 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"polkadot-service 0.7.19", "polkadot-service 0.7.19",
@@ -3736,7 +3725,7 @@ dependencies = [
"sp-core 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sp-core 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)",
"sp-runtime 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sp-runtime 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)",
"structopt 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", "structopt 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
"wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)", "wasm-bindgen 0.2.58 (registry+https://github.com/rust-lang/crates.io-index)",
"wasm-bindgen-futures 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "wasm-bindgen-futures 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
@@ -3746,7 +3735,7 @@ name = "polkadot-collator"
version = "0.7.19" version = "0.7.19"
dependencies = [ dependencies = [
"futures 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
"futures-timer 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)", "futures-timer 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "parity-scale-codec 1.1.2 (registry+https://github.com/rust-lang/crates.io-index)",
"polkadot-cli 0.7.19", "polkadot-cli 0.7.19",
@@ -3763,7 +3752,7 @@ dependencies = [
"sp-core 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sp-core 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)",
"sp-keyring 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sp-keyring 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)",
"sp-runtime 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sp-runtime 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)",
"tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]] [[package]]
@@ -3971,7 +3960,6 @@ name = "polkadot-service"
version = "0.7.19" version = "0.7.19"
dependencies = [ dependencies = [
"frame-system-rpc-runtime-api 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "frame-system-rpc-runtime-api 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)",
"futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
"futures 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
"hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "hex-literal 0.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"kusama-runtime 0.7.19", "kusama-runtime 0.7.19",
@@ -4062,8 +4050,7 @@ dependencies = [
"sp-timestamp 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sp-timestamp 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)",
"sp-transaction-pool 2.0.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sp-transaction-pool 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)", "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 0.2.10 (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]] [[package]]
@@ -4701,7 +4688,7 @@ dependencies = [
"sp-state-machine 0.8.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)", "sp-state-machine 0.8.0 (git+https://github.com/paritytech/substrate?branch=polkadot-master)",
"structopt 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)", "structopt 0.3.7 (registry+https://github.com/rust-lang/crates.io-index)",
"time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)", "time 0.1.42 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]] [[package]]
@@ -6372,12 +6359,13 @@ dependencies = [
[[package]] [[package]]
name = "tokio" name = "tokio"
version = "0.2.4" version = "0.2.10"
source = "registry+https://github.com/rust-lang/crates.io-index" source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [ dependencies = [
"bytes 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)", "bytes 0.5.3 (registry+https://github.com/rust-lang/crates.io-index)",
"fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)", "fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
"memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)", "memchr 2.2.1 (registry+https://github.com/rust-lang/crates.io-index)",
"num_cpus 1.11.1 (registry+https://github.com/rust-lang/crates.io-index)",
"pin-project-lite 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "pin-project-lite 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
@@ -6419,16 +6407,6 @@ dependencies = [
"futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]]
name = "tokio-executor"
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]] [[package]]
name = "tokio-fs" name = "tokio-fs"
version = "0.1.6" version = "0.1.6"
@@ -6489,16 +6467,6 @@ dependencies = [
"futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)", "futures 0.1.29 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]]
name = "tokio-sync"
version = "0.2.0-alpha.6"
source = "registry+https://github.com/rust-lang/crates.io-index"
dependencies = [
"fnv 1.0.6 (registry+https://github.com/rust-lang/crates.io-index)",
"futures-core-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)",
"futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)",
]
[[package]] [[package]]
name = "tokio-tcp" name = "tokio-tcp"
version = "0.1.3" version = "0.1.3"
@@ -6580,7 +6548,7 @@ dependencies = [
"futures-sink 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", "futures-sink 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)",
"log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.8 (registry+https://github.com/rust-lang/crates.io-index)",
"pin-project-lite 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", "pin-project-lite 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)",
"tokio 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)", "tokio 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)",
] ]
[[package]] [[package]]
@@ -7377,7 +7345,6 @@ dependencies = [
"checksum futures-sink-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "86f148ef6b69f75bb610d4f9a2336d4fc88c4b5b67129d1a340dd0fd362efeec" "checksum futures-sink-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "86f148ef6b69f75bb610d4f9a2336d4fc88c4b5b67129d1a340dd0fd362efeec"
"checksum futures-task 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0bae52d6b29cf440e298856fec3965ee6fa71b06aa7495178615953fd669e5f9" "checksum futures-task 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "0bae52d6b29cf440e298856fec3965ee6fa71b06aa7495178615953fd669e5f9"
"checksum futures-timer 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "878f1d2fc31355fa02ed2372e741b0c17e58373341e6a122569b4623a14a7d33" "checksum futures-timer 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "878f1d2fc31355fa02ed2372e741b0c17e58373341e6a122569b4623a14a7d33"
"checksum futures-timer 1.0.3 (registry+https://github.com/rust-lang/crates.io-index)" = "7946248e9429ff093345d3e8fdf4eb0f9b2d79091611c9c14f744971a6f8be45"
"checksum futures-timer 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a1de7508b218029b0f01662ed8f61b1c964b3ae99d6f25462d0f55a595109df6" "checksum futures-timer 2.0.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a1de7508b218029b0f01662ed8f61b1c964b3ae99d6f25462d0f55a595109df6"
"checksum futures-util 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c0d66274fb76985d3c62c886d1da7ac4c0903a8c9f754e8fe0f35a6a6cc39e76" "checksum futures-util 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "c0d66274fb76985d3c62c886d1da7ac4c0903a8c9f754e8fe0f35a6a6cc39e76"
"checksum futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "5ce968633c17e5f97936bd2797b6e38fb56cf16a7422319f7ec2e30d3c470e8d" "checksum futures-util-preview 0.3.0-alpha.19 (registry+https://github.com/rust-lang/crates.io-index)" = "5ce968633c17e5f97936bd2797b6e38fb56cf16a7422319f7ec2e30d3c470e8d"
@@ -7770,18 +7737,16 @@ dependencies = [
"checksum tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d8a021c69bb74a44ccedb824a046447e2c84a01df9e5c20779750acb38e11b2" "checksum tiny-keccak 1.5.0 (registry+https://github.com/rust-lang/crates.io-index)" = "1d8a021c69bb74a44ccedb824a046447e2c84a01df9e5c20779750acb38e11b2"
"checksum tiny-keccak 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2953ca5148619bc99695c1274cb54c5275bbb913c6adad87e72eaf8db9787f69" "checksum tiny-keccak 2.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "2953ca5148619bc99695c1274cb54c5275bbb913c6adad87e72eaf8db9787f69"
"checksum tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)" = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6" "checksum tokio 0.1.22 (registry+https://github.com/rust-lang/crates.io-index)" = "5a09c0b5bb588872ab2f09afa13ee6e9dac11e10a0ec9e8e3ba39a5a5d530af6"
"checksum tokio 0.2.4 (registry+https://github.com/rust-lang/crates.io-index)" = "bcced6bb623d4bff3739c176c415f13c418f426395c169c9c3cd9a492c715b16" "checksum tokio 0.2.10 (registry+https://github.com/rust-lang/crates.io-index)" = "c1fc73332507b971a5010664991a441b5ee0de92017f5a0e8b00fd684573045b"
"checksum tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46" "checksum tokio-buf 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "8fb220f46c53859a4b7ec083e41dec9778ff0b1851c0942b211edb89e0ccdc46"
"checksum tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5c501eceaf96f0e1793cf26beb63da3d11c738c4a943fdf3746d81d64684c39f" "checksum tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5c501eceaf96f0e1793cf26beb63da3d11c738c4a943fdf3746d81d64684c39f"
"checksum tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "d16217cad7f1b840c5a97dfb3c43b0c871fef423a6e8d2118c604e843662a443" "checksum tokio-current-thread 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "d16217cad7f1b840c5a97dfb3c43b0c871fef423a6e8d2118c604e843662a443"
"checksum tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f27ee0e6db01c5f0b2973824547ce7e637b2ed79b891a9677b0de9bd532b6ac" "checksum tokio-executor 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)" = "0f27ee0e6db01c5f0b2973824547ce7e637b2ed79b891a9677b0de9bd532b6ac"
"checksum tokio-executor 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "9ee9ceecf69145923834ea73f32ba40c790fd877b74a7817dd0b089f1eb9c7c8"
"checksum tokio-fs 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "3fe6dc22b08d6993916647d108a1a7d15b9cd29c4f4496c62b92c45b5041b7af" "checksum tokio-fs 0.1.6 (registry+https://github.com/rust-lang/crates.io-index)" = "3fe6dc22b08d6993916647d108a1a7d15b9cd29c4f4496c62b92c45b5041b7af"
"checksum tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5090db468dad16e1a7a54c8c67280c5e4b544f3d3e018f0b913b400261f85926" "checksum tokio-io 0.1.12 (registry+https://github.com/rust-lang/crates.io-index)" = "5090db468dad16e1a7a54c8c67280c5e4b544f3d3e018f0b913b400261f85926"
"checksum tokio-reactor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "c56391be9805bc80163151c0b9e5164ee64f4b0200962c346fea12773158f22d" "checksum tokio-reactor 0.1.10 (registry+https://github.com/rust-lang/crates.io-index)" = "c56391be9805bc80163151c0b9e5164ee64f4b0200962c346fea12773158f22d"
"checksum tokio-rustls 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1df2fa53ac211c136832f530ccb081af9af891af22d685a9493e232c7a359bc2" "checksum tokio-rustls 0.10.2 (registry+https://github.com/rust-lang/crates.io-index)" = "1df2fa53ac211c136832f530ccb081af9af891af22d685a9493e232c7a359bc2"
"checksum tokio-sync 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "d06554cce1ae4a50f42fba8023918afa931413aded705b560e29600ccf7c6d76" "checksum tokio-sync 0.1.7 (registry+https://github.com/rust-lang/crates.io-index)" = "d06554cce1ae4a50f42fba8023918afa931413aded705b560e29600ccf7c6d76"
"checksum tokio-sync 0.2.0-alpha.6 (registry+https://github.com/rust-lang/crates.io-index)" = "4f1aaeb685540f7407ea0e27f1c9757d258c7c6bf4e3eb19da6fc59b747239d2"
"checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119" "checksum tokio-tcp 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "1d14b10654be682ac43efee27401d792507e30fd8d26389e1da3b185de2e4119"
"checksum tokio-threadpool 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "2bd2c6a3885302581f4401c82af70d792bb9df1700e7437b0aeb4ada94d5388c" "checksum tokio-threadpool 0.1.16 (registry+https://github.com/rust-lang/crates.io-index)" = "2bd2c6a3885302581f4401c82af70d792bb9df1700e7437b0aeb4ada94d5388c"
"checksum tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "f2106812d500ed25a4f38235b9cae8f78a09edf43203e16e59c3b769a342a60e" "checksum tokio-timer 0.2.11 (registry+https://github.com/rust-lang/crates.io-index)" = "f2106812d500ed25a4f38235b9cae8f78a09edf43203e16e59c3b769a342a60e"
+1 -1
View File
@@ -12,7 +12,7 @@ parking_lot = "0.9.0"
derive_more = "0.99" derive_more = "0.99"
log = "0.4.8" log = "0.4.8"
futures = "0.3.1" futures = "0.3.1"
tokio = { version = "0.2.4", features = ["rt-core"] } tokio = { version = "0.2.10", features = ["rt-core"] }
exit-future = "0.2.0" exit-future = "0.2.0"
codec = { package = "parity-scale-codec", version = "1.1.0", features = ["derive"] } codec = { package = "parity-scale-codec", version = "1.1.0", features = ["derive"] }
sc-network = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } sc-network = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" }
+2 -5
View File
@@ -58,9 +58,6 @@ use worker::{
use store::{Store as InnerStore}; use store::{Store as InnerStore};
/// Abstraction over an executor that lets you spawn tasks in the background.
pub(crate) type TaskExecutor = Arc<dyn Spawn + Send + Sync>;
const LOG_TARGET: &str = "availability"; const LOG_TARGET: &str = "availability";
/// Configuration for the availability store. /// Configuration for the availability store.
@@ -197,7 +194,7 @@ impl Store {
&self, &self,
wrapped_block_import: I, wrapped_block_import: I,
client: Arc<P>, client: Arc<P>,
thread_pool: TaskExecutor, spawner: impl Spawn,
keystore: KeyStorePtr, keystore: KeyStorePtr,
) -> ClientResult<AvailabilityBlockImport<I, P>> ) -> ClientResult<AvailabilityBlockImport<I, P>>
where where
@@ -213,7 +210,7 @@ impl Store {
self.inner.clone(), self.inner.clone(),
client, client,
wrapped_block_import, wrapped_block_import,
thread_pool, spawner,
keystore, keystore,
to_worker, to_worker,
); );
+4 -4
View File
@@ -37,12 +37,12 @@ use polkadot_primitives::parachain::{
CandidateReceipt, ParachainHost, ValidatorId, CandidateReceipt, ParachainHost, ValidatorId,
ValidatorPair, AvailableMessages, BlockData, ErasureChunk, ValidatorPair, AvailableMessages, BlockData, ErasureChunk,
}; };
use futures::{prelude::*, future::select, channel::{mpsc, oneshot}, task::SpawnExt}; use futures::{prelude::*, future::select, channel::{mpsc, oneshot}, task::{Spawn, SpawnExt}};
use keystore::KeyStorePtr; use keystore::KeyStorePtr;
use tokio::runtime::{Handle, Runtime as LocalRuntime}; use tokio::runtime::{Handle, Runtime as LocalRuntime};
use crate::{LOG_TARGET, Data, TaskExecutor, ProvideGossipMessages, erasure_coding_topic}; use crate::{LOG_TARGET, Data, ProvideGossipMessages, erasure_coding_topic};
use crate::store::Store; use crate::store::Store;
/// Errors that may occur. /// Errors that may occur.
@@ -747,7 +747,7 @@ impl<I, P> AvailabilityBlockImport<I, P> {
availability_store: Store, availability_store: Store,
client: Arc<P>, client: Arc<P>,
block_import: I, block_import: I,
thread_pool: TaskExecutor, spawner: impl Spawn,
keystore: KeyStorePtr, keystore: KeyStorePtr,
to_worker: mpsc::UnboundedSender<WorkerMsg>, to_worker: mpsc::UnboundedSender<WorkerMsg>,
) -> Self ) -> Self
@@ -771,7 +771,7 @@ impl<I, P> AvailabilityBlockImport<I, P> {
exit.clone() exit.clone()
).map(drop); ).map(drop);
if let Err(_) = thread_pool.spawn(Box::new(prune_available)) { if let Err(_) = spawner.spawn(prune_available) {
error!(target: LOG_TARGET, "Failed to spawn availability pruning task"); error!(target: LOG_TARGET, "Failed to spawn availability pruning task");
exit_signal = None; exit_signal = None;
} }
+1 -2
View File
@@ -11,7 +11,6 @@ crate-type = ["cdylib", "rlib"]
[dependencies] [dependencies]
log = "0.4.8" log = "0.4.8"
futures = { version = "0.3.1", features = ["compat"] } futures = { version = "0.3.1", features = ["compat"] }
futures01 = { package = "futures", version = "0.1.29" }
structopt = "=0.3.7" structopt = "=0.3.7"
sc-cli = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } sc-cli = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" }
sp-api = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } sp-api = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" }
@@ -23,7 +22,7 @@ sc-client-db = { git = "https://github.com/paritytech/substrate", branch = "polk
sc-executor = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" } sc-executor = { git = "https://github.com/paritytech/substrate", branch = "polkadot-master" }
service = { package = "polkadot-service", path = "../service", default-features = false } service = { package = "polkadot-service", path = "../service", default-features = false }
tokio = { version = "0.1.22", optional = true } tokio = { version = "0.2.10", features = ["rt-threaded"], optional = true }
wasm-bindgen = { version = "0.2.57", optional = true } wasm-bindgen = { version = "0.2.57", optional = true }
wasm-bindgen-futures = { version = "0.4.7", optional = true } wasm-bindgen-futures = { version = "0.4.7", optional = true }
+11 -25
View File
@@ -24,9 +24,7 @@ mod chain_spec;
mod browser; mod browser;
use chain_spec::ChainSpec; use chain_spec::ChainSpec;
use futures::{ use futures::{Future, future::{select, Either}, channel::oneshot};
Future, FutureExt, TryFutureExt, future::select, channel::oneshot, compat::Compat,
};
#[cfg(feature = "cli")] #[cfg(feature = "cli")]
use tokio::runtime::Runtime; use tokio::runtime::Runtime;
use log::info; use log::info;
@@ -35,7 +33,7 @@ use sp_api::ConstructRuntimeApi;
pub use service::{ pub use service::{
AbstractService, CustomConfiguration, ProvideRuntimeApi, CoreApi, ParachainHost, IsKusama, AbstractService, CustomConfiguration, ProvideRuntimeApi, CoreApi, ParachainHost, IsKusama,
WrappedExecutor, Block, self, RuntimeApiCollection, TFullClient Block, self, RuntimeApiCollection, TFullClient
}; };
pub use sc_cli::{VersionInfo, IntoExit, NoCustom, SharedParams}; pub use sc_cli::{VersionInfo, IntoExit, NoCustom, SharedParams};
@@ -172,8 +170,8 @@ where
config.custom.authority_discovery_enabled = custom_args.authority_discovery_enabled; config.custom.authority_discovery_enabled = custom_args.authority_discovery_enabled;
let runtime = Runtime::new().map_err(|e| format!("{:?}", e))?; let runtime = Runtime::new().map_err(|e| format!("{:?}", e))?;
config.tasks_executor = { config.tasks_executor = {
let runtime_handle = runtime.executor(); let runtime_handle = runtime.handle().clone();
Some(Box::new(move |fut| { runtime_handle.spawn(Compat::new(fut.map(Ok))); })) Some(Box::new(move |fut| { runtime_handle.spawn(fut); }))
}; };
match config.roles { match config.roles {
service::Roles::LIGHT => service::Roles::LIGHT =>
@@ -221,34 +219,22 @@ pub fn run_until_exit(
) -> error::Result<()> { ) -> error::Result<()> {
let (exit_send, exit) = oneshot::channel(); let (exit_send, exit) = oneshot::channel();
let executor = runtime.executor();
let informant = sc_cli::informant::build(&service); let informant = sc_cli::informant::build(&service);
let future = select(exit, informant)
.map(|_| Ok(()))
.compat();
executor.spawn(future); let handle = runtime.spawn(select(exit, informant));
// we eagerly drop the service so that the internal exit future is fired, // we eagerly drop the service so that the internal exit future is fired,
// but we need to keep holding a reference to the global telemetry guard // but we need to keep holding a reference to the global telemetry guard
let _telemetry = service.telemetry(); let _telemetry = service.telemetry();
let service_res = { let service_res = runtime.block_on(select(service, e));
let service = service
.map_err(|err| error::Error::Service(err));
let select = select(service, e)
.map(|_| Ok(()))
.compat();
runtime.block_on(select)
};
let _ = exit_send.send(()); let _ = exit_send.send(());
use futures01::Future; runtime.block_on(handle);
// TODO [andre]: timeout this future substrate/#1318
let _ = runtime.shutdown_on_idle().wait();
service_res match service_res {
Either::Left((res, _)) => res.map_err(error::Error::Service),
Either::Right((_, _)) => Ok(())
}
} }
+2 -2
View File
@@ -21,8 +21,8 @@ polkadot-network = { path = "../network" }
polkadot-validation = { path = "../validation" } polkadot-validation = { path = "../validation" }
polkadot-service = { path = "../service" } polkadot-service = { path = "../service" }
log = "0.4.8" log = "0.4.8"
tokio = "0.1.22" tokio = "0.2.10"
futures-timer = "1.0" futures-timer = "2.0"
codec = { package = "parity-scale-codec", version = "1.1.0" } codec = { package = "parity-scale-codec", version = "1.1.0" }
[dev-dependencies] [dev-dependencies]
+4 -4
View File
@@ -62,7 +62,7 @@ use polkadot_primitives::{
} }
}; };
use polkadot_cli::{ use polkadot_cli::{
ProvideRuntimeApi, AbstractService, ParachainHost, IsKusama, WrappedExecutor, ProvideRuntimeApi, AbstractService, ParachainHost, IsKusama,
service::{self, Roles, SelectChain} service::{self, Roles, SelectChain}
}; };
use polkadot_network::validation::{LeafWorkParams, ValidationNetwork}; use polkadot_network::validation::{LeafWorkParams, ValidationNetwork};
@@ -308,7 +308,7 @@ fn run_collator_node<S, E, P, Extrinsic>(
Extrinsic: service::Codec + Send + Sync + 'static, Extrinsic: service::Codec + Send + Sync + 'static,
{ {
let runtime = tokio::runtime::Runtime::new().map_err(|e| format!("{:?}", e))?; let runtime = tokio::runtime::Runtime::new().map_err(|e| format!("{:?}", e))?;
let spawner = WrappedExecutor(service.spawn_task_handle()); let spawner = service.spawn_task_handle();
let client = service.client(); let client = service.client();
let network = service.network(); let network = service.network();
@@ -427,7 +427,7 @@ fn run_collator_node<S, E, P, Extrinsic>(
); );
let exit = inner_exit_2.clone(); let exit = inner_exit_2.clone();
tokio::spawn(future::select(res.boxed(), exit).map(drop).map(|_| Ok(())).compat()); tokio::spawn(future::select(res.boxed(), exit));
}); });
} }
future::ok(()) future::ok(())
@@ -450,7 +450,7 @@ fn run_collator_node<S, E, P, Extrinsic>(
inner_exit.clone() inner_exit.clone()
).map(drop); ).map(drop);
tokio::spawn(future.map(|_| Ok(())).compat()); tokio::spawn(future);
} }
}.boxed(); }.boxed();
+7 -9
View File
@@ -42,13 +42,11 @@ use std::collections::HashMap;
use std::sync::Arc; use std::sync::Arc;
use std::pin::Pin; use std::pin::Pin;
use std::task::{Poll, Context}; use std::task::{Poll, Context};
use futures::{prelude::*, channel::mpsc, future::{select, Either}}; use futures::{prelude::*, channel::mpsc, future::{select, Either}, task::Spawn};
use codec::Encode; use codec::Encode;
use super::{TestContext, TestChainContext}; use super::{TestContext, TestChainContext};
type TaskExecutor = Arc<dyn futures::task::Spawn + Send + Sync>;
#[derive(Clone, Copy)] #[derive(Clone, Copy)]
struct NeverExit; struct NeverExit;
@@ -321,19 +319,19 @@ impl ParachainHost<Block> for RuntimeApi {
} }
} }
type TestValidationNetwork = crate::validation::ValidationNetwork< type TestValidationNetwork<SP> = crate::validation::ValidationNetwork<
TestApi, TestApi,
NeverExit, NeverExit,
TaskExecutor, SP,
>; >;
struct Built { struct Built<SP> {
gossip: Pin<Box<dyn Future<Output = ()>>>, gossip: Pin<Box<dyn Future<Output = ()>>>,
api_handle: Arc<Mutex<ApiData>>, api_handle: Arc<Mutex<ApiData>>,
networks: Vec<TestValidationNetwork>, networks: Vec<TestValidationNetwork<SP>>,
} }
fn build_network(n: usize, executor: TaskExecutor) -> Built { fn build_network<SP: Spawn + Clone>(n: usize, spawner: SP) -> Built<SP> {
let (gossip_router, gossip_handle) = make_gossip(); let (gossip_router, gossip_handle) = make_gossip();
let api_handle = Arc::new(Mutex::new(Default::default())); let api_handle = Arc::new(Mutex::new(Default::default()));
let runtime_api = Arc::new(TestApi { data: api_handle.clone() }); let runtime_api = Arc::new(TestApi { data: api_handle.clone() });
@@ -353,7 +351,7 @@ fn build_network(n: usize, executor: TaskExecutor) -> Built {
message_val, message_val,
NeverExit, NeverExit,
runtime_api.clone(), runtime_api.clone(),
executor.clone(), spawner.clone(),
) )
}); });
-1
View File
@@ -10,7 +10,6 @@ serde = { version = "1.0.102", features = ["derive"] }
lazy_static = "1.4.0" lazy_static = "1.4.0"
log = "0.4.8" log = "0.4.8"
futures = "0.3.1" futures = "0.3.1"
futures01 = { package = "futures", version = "0.1.29" }
slog = "2.5.2" slog = "2.5.2"
hex-literal = "0.2.1" hex-literal = "0.2.1"
av_store = { package = "polkadot-availability-store", path = "../availability-store" } av_store = { package = "polkadot-availability-store", path = "../availability-store" }
+4 -20
View File
@@ -18,11 +18,7 @@
pub mod chain_spec; pub mod chain_spec;
use futures::{ use futures::{FutureExt, compat::Future01CompatExt};
FutureExt, TryFutureExt,
task::{Spawn, SpawnError, FutureObj},
compat::Future01CompatExt,
};
use sc_client::LongestChain; use sc_client::LongestChain;
use std::sync::Arc; use std::sync::Arc;
use std::time::Duration; use std::time::Duration;
@@ -57,18 +53,6 @@ pub use codec::Codec;
pub use polkadot_runtime; pub use polkadot_runtime;
pub use kusama_runtime; pub use kusama_runtime;
/// Wrap a futures01 executor as a futures03 spawn.
#[derive(Clone)]
pub struct WrappedExecutor<T>(pub T);
impl<T> Spawn for WrappedExecutor<T>
where T: futures01::future::Executor<Box<dyn futures01::Future<Item=(),Error=()> + Send + 'static>>
{
fn spawn_obj(&self, future: FutureObj<'static, ()>) -> Result<(), SpawnError> {
self.0.execute(Box::new(future.map(Ok).compat()))
.map_err(|_| SpawnError::shutdown())
}
}
/// Polkadot-specific configuration. /// Polkadot-specific configuration.
pub struct CustomConfiguration { pub struct CustomConfiguration {
/// Set to `Some` with a collator `CollatorId` and desired parachain /// Set to `Some` with a collator `CollatorId` and desired parachain
@@ -402,14 +386,14 @@ pub fn new_full<Runtime, Dispatch, Extrinsic>(config: Configuration)
gossip_validator, gossip_validator,
service.on_exit(), service.on_exit(),
service.client(), service.client(),
WrappedExecutor(service.spawn_task_handle()), service.spawn_task_handle(),
); );
let (validation_service_handle, validation_service) = consensus::ServiceBuilder { let (validation_service_handle, validation_service) = consensus::ServiceBuilder {
client: client.clone(), client: client.clone(),
network: validation_network.clone(), network: validation_network.clone(),
collators: validation_network, collators: validation_network,
task_executor: Arc::new(WrappedExecutor(service.spawn_task_handle())), spawner: service.spawn_task_handle(),
availability_store: availability_store.clone(), availability_store: availability_store.clone(),
select_chain: select_chain.clone(), select_chain: select_chain.clone(),
keystore: service.keystore(), keystore: service.keystore(),
@@ -433,7 +417,7 @@ pub fn new_full<Runtime, Dispatch, Extrinsic>(config: Configuration)
let block_import = availability_store.block_import( let block_import = availability_store.block_import(
block_import, block_import,
client.clone(), client.clone(),
Arc::new(WrappedExecutor(service.spawn_task_handle())), service.spawn_task_handle(),
service.keystore(), service.keystore(),
)?; )?;
+1 -2
View File
@@ -8,11 +8,10 @@ edition = "2018"
futures = "0.3.1" futures = "0.3.1"
futures-timer = "2.0" futures-timer = "2.0"
parking_lot = "0.9.0" parking_lot = "0.9.0"
tokio = { version = "0.2.4", features = ["rt-core"] } tokio = { version = "0.2.10", features = ["rt-core", "blocking"] }
derive_more = "0.14.1" derive_more = "0.14.1"
log = "0.4.8" log = "0.4.8"
exit-future = "0.2.0" 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"] } codec = { package = "parity-scale-codec", version = "1.1.0", default-features = false, features = ["derive"] }
availability_store = { package = "polkadot-availability-store", path = "../availability-store" } availability_store = { package = "polkadot-availability-store", path = "../availability-store" }
parachain = { package = "polkadot-parachain", path = "../parachain" } parachain = { package = "polkadot-parachain", path = "../parachain" }
+2 -2
View File
@@ -222,11 +222,11 @@ impl<Client, TxPool, Backend> consensus::Proposer<Block> for Proposer<Client, Tx
Delay::new(enough_candidates).await; Delay::new(enough_candidates).await;
tokio_executor::blocking::run(move || { tokio::task::spawn_blocking(move || {
let proposed_candidates = data.table.proposed_set(); let proposed_candidates = data.table.proposed_set();
data.propose_with(proposed_candidates) data.propose_with(proposed_candidates)
}) })
.await .await?
}.boxed() }.boxed()
} }
} }
@@ -118,7 +118,7 @@ fn interval(duration: Duration) -> impl Stream<Item=()> + Send + Unpin {
} }
/// A builder for the validation service. /// A builder for the validation service.
pub struct ServiceBuilder<C, N, P, SC> { pub struct ServiceBuilder<C, N, P, SC, SP> {
/// The underlying blockchain client. /// The underlying blockchain client.
pub client: Arc<P>, pub client: Arc<P>,
/// A handle to the network object used to communicate. /// A handle to the network object used to communicate.
@@ -126,7 +126,7 @@ pub struct ServiceBuilder<C, N, P, SC> {
/// A handle to the collator pool we are using. /// A handle to the collator pool we are using.
pub collators: C, pub collators: C,
/// A handle to a background executor. /// A handle to a background executor.
pub task_executor: TaskExecutor, pub spawner: SP,
/// A handle to the availability store. /// A handle to the availability store.
pub availability_store: AvailabilityStore, pub availability_store: AvailabilityStore,
/// A chain selector for determining active leaves in the block-DAG. /// A chain selector for determining active leaves in the block-DAG.
@@ -137,7 +137,7 @@ pub struct ServiceBuilder<C, N, P, SC> {
pub max_block_data_size: Option<u64>, pub max_block_data_size: Option<u64>,
} }
impl<C, N, P, SC> ServiceBuilder<C, N, P, SC> where impl<C, N, P, SC, SP> ServiceBuilder<C, N, P, SC, SP> where
C: Collators + Send + Sync + Unpin + 'static, C: Collators + Send + Sync + Unpin + 'static,
C::Collation: Send + Unpin + 'static, C::Collation: Send + Unpin + 'static,
P: BlockchainEvents<Block> + BlockBody<Block>, P: BlockchainEvents<Block> + BlockBody<Block>,
@@ -150,6 +150,7 @@ impl<C, N, P, SC> ServiceBuilder<C, N, P, SC> where
N::TableRouter: Send + 'static, N::TableRouter: Send + 'static,
N::BuildTableRouter: Send + Unpin + 'static, N::BuildTableRouter: Send + Unpin + 'static,
SC: SelectChain<Block> + 'static, SC: SelectChain<Block> + 'static,
SP: Spawn + Send + 'static,
// Rust bug: https://github.com/rust-lang/rust/issues/24159 // Rust bug: https://github.com/rust-lang/rust/issues/24159
sp_api::StateBackendFor<P, Block>: sp_api::StateBackend<HasherFor<Block>>, sp_api::StateBackendFor<P, Block>: sp_api::StateBackend<HasherFor<Block>>,
{ {
@@ -171,7 +172,7 @@ impl<C, N, P, SC> ServiceBuilder<C, N, P, SC> where
client: self.client.clone(), client: self.client.clone(),
network: self.network, network: self.network,
collators: self.collators, collators: self.collators,
handle: self.task_executor, spawner: self.spawner,
availability_store: self.availability_store, availability_store: self.availability_store,
live_instances: HashMap::new(), live_instances: HashMap::new(),
}; };
@@ -247,15 +248,15 @@ fn signing_key(validators: &[ValidatorId], keystore: &KeyStorePtr) -> Option<Arc
} }
/// Constructs parachain-agreement instances. /// Constructs parachain-agreement instances.
pub(crate) struct ParachainValidationInstances<C, N, P> { pub(crate) struct ParachainValidationInstances<C, N, P, SP> {
/// The client instance. /// The client instance.
client: Arc<P>, client: Arc<P>,
/// The backing network handle. /// The backing network handle.
network: N, network: N,
/// Parachain collators. /// Parachain collators.
collators: C, collators: C,
/// handle to remote task executor /// handle to spawner
handle: TaskExecutor, spawner: SP,
/// Store for extrinsic data. /// Store for extrinsic data.
availability_store: AvailabilityStore, availability_store: AvailabilityStore,
/// Live agreements. Maps relay chain parent hashes to attestation /// Live agreements. Maps relay chain parent hashes to attestation
@@ -263,7 +264,7 @@ pub(crate) struct ParachainValidationInstances<C, N, P> {
live_instances: HashMap<Hash, Arc<ValidationInstanceHandle>>, live_instances: HashMap<Hash, Arc<ValidationInstanceHandle>>,
} }
impl<C, N, P> ParachainValidationInstances<C, N, P> where impl<C, N, P, SP> ParachainValidationInstances<C, N, P, SP> where
C: Collators + Send + Unpin + 'static, C: Collators + Send + Unpin + 'static,
N: Network, N: Network,
P: ProvideRuntimeApi<Block> + HeaderBackend<Block> + BlockBody<Block> + Send + Sync + 'static, P: ProvideRuntimeApi<Block> + HeaderBackend<Block> + BlockBody<Block> + Send + Sync + 'static,
@@ -271,6 +272,7 @@ impl<C, N, P> ParachainValidationInstances<C, N, P> where
C::Collation: Send + Unpin + 'static, C::Collation: Send + Unpin + 'static,
N::TableRouter: Send + 'static, N::TableRouter: Send + 'static,
N::BuildTableRouter: Unpin + Send + 'static, N::BuildTableRouter: Unpin + Send + 'static,
SP: Spawn + Send + 'static,
// Rust bug: https://github.com/rust-lang/rust/issues/24159 // Rust bug: https://github.com/rust-lang/rust/issues/24159
sp_api::StateBackendFor<P, Block>: sp_api::StateBackend<HasherFor<Block>>, sp_api::StateBackendFor<P, Block>: sp_api::StateBackend<HasherFor<Block>>,
{ {
@@ -448,7 +450,7 @@ impl<C, N, P> ParachainValidationInstances<C, N, P> where
let cancellable_work = select(exit, router).map(drop); let cancellable_work = select(exit, router).map(drop);
// spawn onto thread pool. // spawn onto thread pool.
if self.handle.spawn(cancellable_work).is_err() { if self.spawner.spawn(cancellable_work).is_err() {
error!("Failed to spawn cancellable work task"); error!("Failed to spawn cancellable work task");
} }
} }