diff --git a/node/src/command.rs b/node/src/command.rs index a68a39195..650ddd199 100644 --- a/node/src/command.rs +++ b/node/src/command.rs @@ -134,8 +134,10 @@ pub fn run() -> sc_cli::Result<()> { cmd.run::(config) }, BenchmarkCmd::Block(cmd) => { - let PartialComponents { client, .. } = service::new_partial(&config)?; - cmd.run(client) + // ensure that we keep the task manager alive + let partial = service::new_partial(&config)?; + + cmd.run(partial.client) }, #[cfg(not(feature = "runtime-benchmarks"))] BenchmarkCmd::Storage(_) => Err( @@ -144,38 +146,45 @@ pub fn run() -> sc_cli::Result<()> { ), #[cfg(feature = "runtime-benchmarks")] BenchmarkCmd::Storage(cmd) => { - let PartialComponents { client, backend, .. } = - service::new_partial(&config)?; - let db = backend.expose_db(); - let storage = backend.expose_storage(); + // ensure that we keep the task manager alive + let partial = service::new_partial(&config)?; + let db = partial.backend.expose_db(); + let storage = partial.backend.expose_storage(); - cmd.run(config, client, db, storage) + cmd.run(config, partial.client, db, storage) }, BenchmarkCmd::Overhead(cmd) => { - let PartialComponents { client, .. } = service::new_partial(&config)?; - let ext_builder = RemarkBuilder::new(client.clone()); + // ensure that we keep the task manager alive + let partial = service::new_partial(&config)?; + let ext_builder = RemarkBuilder::new(partial.client.clone()); cmd.run( config, - client, + partial.client, inherent_benchmark_data()?, Vec::new(), &ext_builder, ) }, BenchmarkCmd::Extrinsic(cmd) => { - let PartialComponents { client, .. } = service::new_partial(&config)?; + // ensure that we keep the task manager alive + let partial = service::new_partial(&config)?; // Register the *Remark* and *TKA* builders. let ext_factory = ExtrinsicFactory(vec![ - Box::new(RemarkBuilder::new(client.clone())), + Box::new(RemarkBuilder::new(partial.client.clone())), Box::new(TransferKeepAliveBuilder::new( - client.clone(), + partial.client.clone(), Sr25519Keyring::Alice.to_account_id(), EXISTENTIAL_DEPOSIT, )), ]); - cmd.run(client, inherent_benchmark_data()?, Vec::new(), &ext_factory) + cmd.run( + partial.client, + inherent_benchmark_data()?, + Vec::new(), + &ext_factory, + ) }, BenchmarkCmd::Machine(cmd) => { cmd.run(&config, SUBSTRATE_REFERENCE_HARDWARE.clone())