linux: Fix reload hangs for several minutes (#24882)
Closes #22666 This PR fixes the long wait time to open Zed (2 mins in my case) after reloading on Linux. This bug fix is funny: 1. We were using TCP for Zed instances to talk to each other. Reload was broken here too due to TCP connections not being killed on time. 2. [#11488](https://github.com/zed-industries/zed/pull/11488) PR fixed the TCP connection issue by adding a wait until it gets killed. I suppose at that time, this wait time was small. 3. Later, we changed how Zed talks to each other in [#11585](https://github.com/zed-industries/zed/pull/11585) by using Datagram and removing TCP. The new approach simply uses a `.sock` file and a file descriptor to check if some program is listening to it. 4. TCP check is now unnecessary, and it still wait for a long time (I suppose, TIME_WAIT time, don't quote me on this), even though we don’t use TCP anymore for this. This PR just removes that unnecessary TCP wait. Release Notes: - Fixed issue where reload hangs for several minutes on Linux.
This commit is contained in:
parent
39c9b1f170
commit
5c5caf1ffe
1 changed files with 0 additions and 7 deletions
|
@ -181,19 +181,12 @@ impl<P: LinuxClient + 'static> Platform for P {
|
|||
log::info!("Restarting process, using app path: {:?}", app_path);
|
||||
|
||||
// Script to wait for the current process to exit and then restart the app.
|
||||
// We also wait for possibly open TCP sockets by the process to be closed,
|
||||
// since on Linux it's not guaranteed that a process' resources have been
|
||||
// cleaned up when `kill -0` returns.
|
||||
let script = format!(
|
||||
r#"
|
||||
while kill -0 {pid} 2>/dev/null; do
|
||||
sleep 0.1
|
||||
done
|
||||
|
||||
while lsof -nP -iTCP -a -p {pid} 2>/dev/null; do
|
||||
sleep 0.1
|
||||
done
|
||||
|
||||
{app_path}
|
||||
"#,
|
||||
pid = app_pid,
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue