1
0
Fork 0
mirror of https://github.com/denoland/deno.git synced 2024-11-21 15:04:11 -05:00

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.
This commit is contained in:
David Sherret 2024-01-09 11:36:03 -05:00 committed by GitHub
parent cd43d2b877
commit 741afc4b94
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23

View file

@ -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);
}
});
}