From e57d9047bba1a8f7ef5402f65b64b15cc6bd32ef Mon Sep 17 00:00:00 2001 From: Jimmy Cao Date: Wed, 26 Jun 2019 22:55:15 +0200 Subject: [PATCH] fix: run blocking function on a different task This avoids freezing the current task if the fn blocks indefinitely --- cli/ops.rs | 7 ++++--- 1 file changed, 4 insertions(+), 3 deletions(-) diff --git a/cli/ops.rs b/cli/ops.rs index 56569c37a5579..bf4016366059a 100644 --- a/cli/ops.rs +++ b/cli/ops.rs @@ -793,9 +793,10 @@ where let result_buf = f()?; Ok(Op::Sync(result_buf)) } else { - Ok(Op::Async(Box::new(tokio_util::poll_fn(move || { - convert_blocking(f) - })))) + Ok(Op::Async(Box::new(futures::sync::oneshot::spawn( + tokio_util::poll_fn(move || convert_blocking(f)), + &tokio_executor::DefaultExecutor::current(), + )))) } }