diff --git a/src/agent/rustjail/src/process.rs b/src/agent/rustjail/src/process.rs index cdecae1308..0e7fe73efd 100644 --- a/src/agent/rustjail/src/process.rs +++ b/src/agent/rustjail/src/process.rs @@ -161,7 +161,7 @@ impl Process { pub fn notify_term_close(&mut self) { let notify = self.term_exit_notifier.clone(); - notify.notify_waiters(); + notify.notify_one(); } pub fn close_stdin(&mut self) { diff --git a/src/agent/src/rpc.rs b/src/agent/src/rpc.rs index 8299ed34b6..988cce5b76 100644 --- a/src/agent/src/rpc.rs +++ b/src/agent/src/rpc.rs @@ -595,16 +595,15 @@ impl AgentService { let cid = req.container_id; let eid = req.exec_id; - let term_exit_notifier; + let mut term_exit_notifier = Arc::new(tokio::sync::Notify::new()); let reader = { let s = self.sandbox.clone(); let mut sandbox = s.lock().await; let p = sandbox.find_container_process(cid.as_str(), eid.as_str())?; - term_exit_notifier = p.term_exit_notifier.clone(); - if p.term_master.is_some() { + term_exit_notifier = p.term_exit_notifier.clone(); p.get_reader(StreamType::TermMaster) } else if stdout { if p.parent_stdout.is_some() {