From 741afc4b94427588c628925fef464623d373430f Mon Sep 17 00:00:00 2001 From: David Sherret Date: Tue, 9 Jan 2024 11:36:03 -0500 Subject: fix(lsp): use a dedicated thread for the parent process checker (#21869) Ensures the Deno process is brought down even when the runtime gets hung up on something. Marvin found that the lsp was running without a parent vscode around so this is maybe/probably related. --- cli/lsp/parent_process_checker.rs | 17 +++++++---------- 1 file changed, 7 insertions(+), 10 deletions(-) diff --git a/cli/lsp/parent_process_checker.rs b/cli/lsp/parent_process_checker.rs index 016dfd943..e5b2b2f23 100644 --- a/cli/lsp/parent_process_checker.rs +++ b/cli/lsp/parent_process_checker.rs @@ -1,20 +1,17 @@ // Copyright 2018-2024 the Deno authors. All rights reserved. MIT license. -use deno_core::unsync::spawn; -use tokio::time::sleep; -use tokio::time::Duration; +use std::time::Duration; -/// Starts a task that will check for the existence of the +/// Starts a thread that will check for the existence of the /// provided process id. Once that process no longer exists /// it will terminate the current process. pub fn start(parent_process_id: u32) { - spawn(async move { - loop { - sleep(Duration::from_secs(30)).await; + // use a separate thread in case the runtime gets hung up + std::thread::spawn(move || loop { + std::thread::sleep(Duration::from_secs(10)); - if !is_process_active(parent_process_id) { - std::process::exit(1); - } + if !is_process_active(parent_process_id) { + std::process::exit(1); } }); } -- cgit v1.2.3