From 2f826a5057639b3b226801b7a0ce03485ada4af6 Mon Sep 17 00:00:00 2001 From: Adam Spofford Date: Mon, 13 Jan 2025 08:17:32 -0800 Subject: [PATCH] start replica and pocketic in their own process groups --- src/dfx/src/actors/pocketic.rs | 5 +++++ src/dfx/src/actors/pocketic_proxy.rs | 5 +++++ src/dfx/src/actors/replica.rs | 6 +++++- 3 files changed, 15 insertions(+), 1 deletion(-) diff --git a/src/dfx/src/actors/pocketic.rs b/src/dfx/src/actors/pocketic.rs index 57968cb0a8..ae2c4bd7ce 100644 --- a/src/dfx/src/actors/pocketic.rs +++ b/src/dfx/src/actors/pocketic.rs @@ -244,6 +244,11 @@ fn pocketic_start_thread( } cmd.stdout(std::process::Stdio::inherit()); cmd.stderr(std::process::Stdio::inherit()); + #[cfg(unix)] + { + use std::os::unix::process::CommandExt; + cmd.process_group(0); + } let _ = std::fs::remove_file(&config.port_file); let last_start = std::time::Instant::now(); debug!(logger, "Starting PocketIC..."); diff --git a/src/dfx/src/actors/pocketic_proxy.rs b/src/dfx/src/actors/pocketic_proxy.rs index 8d5cc16526..b2e4fd3803 100644 --- a/src/dfx/src/actors/pocketic_proxy.rs +++ b/src/dfx/src/actors/pocketic_proxy.rs @@ -260,6 +260,11 @@ fn pocketic_proxy_start_thread( cmd.args(["--port-file".as_ref(), pocketic_proxy_port_path.as_os_str()]); cmd.stdout(std::process::Stdio::inherit()); cmd.stderr(std::process::Stdio::inherit()); + #[cfg(unix)] + { + use std::os::unix::process::CommandExt; + cmd.process_group(0); + } let _ = std::fs::remove_file(&pocketic_proxy_port_path); let last_start = std::time::Instant::now(); debug!(logger, "Starting pocket-ic gateway..."); diff --git a/src/dfx/src/actors/replica.rs b/src/dfx/src/actors/replica.rs index 37141af5bd..a5e96994e7 100644 --- a/src/dfx/src/actors/replica.rs +++ b/src/dfx/src/actors/replica.rs @@ -373,7 +373,11 @@ fn replica_start_thread( cmd.stdout(std::process::Stdio::inherit()); cmd.stderr(std::process::Stdio::inherit()); - + #[cfg(unix)] + { + use std::os::unix::process::CommandExt; + cmd.process_group(0); + } loop { if let Some(port_path) = write_port_to.as_ref() { let _ = std::fs::remove_file(port_path);