From f6a0fef5cf6aa06e1b03e70e9a190a0239a262f8 Mon Sep 17 00:00:00 2001 From: Kyle Kelley Date: Mon, 5 Aug 2024 13:48:15 -0700 Subject: [PATCH] repl: Address simple fixes (#15828) Release Notes: - Added logging in debug mode of raw kernel output from REPL. - Fixed REPL kernels not being shut down completely on close of Editor --- crates/repl/src/kernels.rs | 3 ++- crates/repl/src/session.rs | 6 ++---- 2 files changed, 4 insertions(+), 5 deletions(-) diff --git a/crates/repl/src/kernels.rs b/crates/repl/src/kernels.rs index 359d16fcab..3868d41baa 100644 --- a/crates/repl/src/kernels.rs +++ b/crates/repl/src/kernels.rs @@ -225,6 +225,7 @@ impl RunningKernel { .current_dir(&working_directory) .stdout(std::process::Stdio::piped()) .stderr(std::process::Stdio::piped()) + .stdin(std::process::Stdio::piped()) .kill_on_drop(true) .spawn() .context("failed to start the kernel process")?; @@ -329,8 +330,8 @@ impl RunningKernel { impl Drop for RunningKernel { fn drop(&mut self) { std::fs::remove_file(&self.connection_path).ok(); - self.request_tx.close_channel(); + self.process.kill().ok(); } } diff --git a/crates/repl/src/session.rs b/crates/repl/src/session.rs index 5ca54c0eba..4fb981d85c 100644 --- a/crates/repl/src/session.rs +++ b/crates/repl/src/session.rs @@ -220,8 +220,6 @@ impl Session { match kernel { Ok((mut kernel, mut messages_rx)) => { this.update(&mut cx, |session, cx| { - // At this point we can create a new kind of kernel that has the process and our long running background tasks - let stderr = kernel.process.stderr.take(); cx.spawn(|_session, mut _cx| async move { @@ -236,7 +234,7 @@ impl Session { }) .detach(); - let stdout = kernel.process.stderr.take(); + let stdout = kernel.process.stdout.take(); cx.spawn(|_session, mut _cx| async move { if let None = stdout { @@ -314,7 +312,7 @@ impl Session { } }); - // todo!(kyle): send kernelinforequest once our shell channel read/writes are split + // todo!(@rgbkrk): send kernelinforequest once our shell channel read/writes are split // cx.spawn(|this, mut cx| async move { // cx.background_executor() // .timer(Duration::from_millis(120))