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
This commit is contained in:
Kyle Kelley 2024-08-05 13:48:15 -07:00 committed by GitHub
parent ab1fabef68
commit f6a0fef5cf
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
2 changed files with 4 additions and 5 deletions

View file

@ -225,6 +225,7 @@ impl RunningKernel {
.current_dir(&working_directory) .current_dir(&working_directory)
.stdout(std::process::Stdio::piped()) .stdout(std::process::Stdio::piped())
.stderr(std::process::Stdio::piped()) .stderr(std::process::Stdio::piped())
.stdin(std::process::Stdio::piped())
.kill_on_drop(true) .kill_on_drop(true)
.spawn() .spawn()
.context("failed to start the kernel process")?; .context("failed to start the kernel process")?;
@ -329,8 +330,8 @@ impl RunningKernel {
impl Drop for RunningKernel { impl Drop for RunningKernel {
fn drop(&mut self) { fn drop(&mut self) {
std::fs::remove_file(&self.connection_path).ok(); std::fs::remove_file(&self.connection_path).ok();
self.request_tx.close_channel(); self.request_tx.close_channel();
self.process.kill().ok();
} }
} }

View file

@ -220,8 +220,6 @@ impl Session {
match kernel { match kernel {
Ok((mut kernel, mut messages_rx)) => { Ok((mut kernel, mut messages_rx)) => {
this.update(&mut cx, |session, cx| { 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(); let stderr = kernel.process.stderr.take();
cx.spawn(|_session, mut _cx| async move { cx.spawn(|_session, mut _cx| async move {
@ -236,7 +234,7 @@ impl Session {
}) })
.detach(); .detach();
let stdout = kernel.process.stderr.take(); let stdout = kernel.process.stdout.take();
cx.spawn(|_session, mut _cx| async move { cx.spawn(|_session, mut _cx| async move {
if let None = stdout { 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.spawn(|this, mut cx| async move {
// cx.background_executor() // cx.background_executor()
// .timer(Duration::from_millis(120)) // .timer(Duration::from_millis(120))