diff --git a/collator/src/lib.rs b/collator/src/lib.rs index 300ebeb723f8..7e4d44c0d9f3 100644 --- a/collator/src/lib.rs +++ b/collator/src/lib.rs @@ -441,7 +441,7 @@ mod tests { fn check_send(_: T) {} let cli = Cli::from_iter(&["-dev"]); - let task_executor = Arc::new(|_| unimplemented!()); + let task_executor = Arc::new(|_, _| unimplemented!()); let config = cli.create_configuration(&cli.run.base, task_executor).unwrap(); check_send(start_collator( diff --git a/network/test/src/block_import.rs b/network/test/src/block_import.rs index 2b61898e41e2..eaab561dec87 100644 --- a/network/test/src/block_import.rs +++ b/network/test/src/block_import.rs @@ -91,7 +91,11 @@ fn async_import_queue_drops() { // Perform this test multiple times since it exhibits non-deterministic behavior. for _ in 0..100 { let verifier = PassThroughVerifier(true); - let queue = BasicQueue::new(verifier, Box::new(polkadot_test_runtime_client::new()), None, None); + + let threads_pool = futures::executor::ThreadPool::new().unwrap(); + let spawner = |future| threads_pool.spawn_ok(future); + + let queue = BasicQueue::new(verifier, Box::new(polkadot_test_runtime_client::new()), None, None, spawner); drop(queue); } } diff --git a/network/test/src/lib.rs b/network/test/src/lib.rs index bd824f1441b9..1f3482be4487 100644 --- a/network/test/src/lib.rs +++ b/network/test/src/lib.rs @@ -570,11 +570,15 @@ pub trait TestNetFactory: Sized { ); let verifier = VerifierAdapter::new(Arc::new(Mutex::new(Box::new(verifier) as Box<_>))); + let threads_pool = futures::executor::ThreadPool::new().unwrap(); + let spawner = |future| threads_pool.spawn_ok(future); + let import_queue = Box::new(BasicQueue::new( verifier.clone(), Box::new(block_import.clone()), justification_import, finality_proof_import, + spawner, )); let listen_addr = build_multiaddr![Memory(rand::random::())]; @@ -645,11 +649,15 @@ pub trait TestNetFactory: Sized { ); let verifier = VerifierAdapter::new(Arc::new(Mutex::new(Box::new(verifier) as Box<_>))); + let threads_pool = futures::executor::ThreadPool::new().unwrap(); + let spawner = |future| threads_pool.spawn_ok(future); + let import_queue = Box::new(BasicQueue::new( verifier.clone(), Box::new(block_import.clone()), justification_import, finality_proof_import, + spawner, )); let listen_addr = build_multiaddr![Memory(rand::random::())]; diff --git a/service/src/lib.rs b/service/src/lib.rs index a138e76bb761..05a5d35402d2 100644 --- a/service/src/lib.rs +++ b/service/src/lib.rs @@ -163,7 +163,7 @@ macro_rules! new_full_start { let pool = sc_transaction_pool::BasicPool::new(config, std::sync::Arc::new(pool_api), prometheus_registry); Ok(pool) })? - .with_import_queue(|config, client, mut select_chain, _| { + .with_import_queue(|config, client, mut select_chain, _, spawn_task_handle| { let select_chain = select_chain.take() .ok_or_else(|| service::Error::SelectChainRequired)?; @@ -189,6 +189,7 @@ macro_rules! new_full_start { client.clone(), )?; + let spawner = |future| spawn_task_handle.spawn_blocking("import-queue-worker", future); let import_queue = babe::import_queue( babe_link.clone(), block_import.clone(), @@ -196,6 +197,7 @@ macro_rules! new_full_start { None, client, inherent_data_providers.clone(), + spawner, )?; import_setup = Some((block_import, grandpa_link, babe_link)); @@ -508,7 +510,7 @@ macro_rules! new_light { ); Ok(pool) })? - .with_import_queue_and_fprb(|_config, client, backend, fetcher, _select_chain, _| { + .with_import_queue_and_fprb(|_config, client, backend, fetcher, _select_chain, _, spawn_task_handle| { let fetch_checker = fetcher .map(|fetcher| fetcher.checker().clone()) .ok_or_else(|| "Trying to start light import queue without active fetch checker")?; @@ -526,6 +528,7 @@ macro_rules! new_light { client.clone(), )?; + let spawner = |future| spawn_task_handle.spawn_blocking("importe-queue-worker", future); // FIXME: pruning task isn't started since light client doesn't do `AuthoritySetup`. let import_queue = babe::import_queue( babe_link, @@ -534,6 +537,7 @@ macro_rules! new_light { Some(Box::new(finality_proof_import)), client, inherent_data_providers.clone(), + spawner, )?; Ok((import_queue, finality_proof_request_builder))