Skip to content

Commit

Permalink
fix(lsp): use a dedicated thread for the parent process checker (deno…
Browse files Browse the repository at this point in the history
…land#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.
  • Loading branch information
dsherret committed Jan 9, 2024
1 parent cd43d2b commit 741afc4
Showing 1 changed file with 7 additions and 10 deletions.
17 changes: 7 additions & 10 deletions cli/lsp/parent_process_checker.rs
Original file line number Diff line number Diff line change
@@ -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);
}
});
}
Expand Down

0 comments on commit 741afc4

Please sign in to comment.