zed/crates
Thorsten Ball 5a7b8f7fe3
linux: Fix restarting by waiting for sockets to be closed (#11488)
This fixes a race-condition that showed up when trying to restart
Nightly/Preview/...

When running with these release channels, Zed tries to ensure that
there's only one instance of Zed running.

It does that by listening on a TCP socket to which other instances can
connect on start. If the other instance receives a message, it knows
that another Zed instance is running and exits.

On Linux, though, we ran into a race condition:

1. `kill -0`, which checks whether a process is still running, returns
an error, signalling that the old Zed process has exited
2. BUT: the process was still listening on the TCP port.

It seems like that on Linux, process resources aren't guaranteed to be
cleaned up as soon as signal handling stops working for a process.

The fix is to wait until the process is no longer listening on any TCP
sockets.

There's a slight downside to this: GPUI processes that never listen on
any TCP sockets now have to pay the cost of an additional `lsof` call
when restarting. We do think that it's a reasonable tradeoff for now
though, since the other options (extending the platform interface to
provide callbacks, sharing the listening port in the framework, ...)
seem wider-reaching only to fix a very local bug.



Release Notes:

- N/A

Co-authored-by: Bennet <bennetbo@gmx.de>
2024-05-07 15:46:41 +02:00
..
activity_indicator open new buffer (#11203) 2024-04-30 16:09:43 -06:00
anthropic Supermaven (#10788) 2024-05-03 12:50:42 -07:00
assets New revision of the Assistant Panel (#10870) 2024-04-23 16:23:26 -07:00
assistant windows: Support all OpenType font features (#10756) 2024-04-26 13:58:12 -07:00
assistant2 Centralize project context provided to the assistant (#11471) 2024-05-06 17:01:50 -07:00
assistant_tooling Centralize project context provided to the assistant (#11471) 2024-05-06 17:01:50 -07:00
audio Introduce InlineCompletionProvider (#9777) 2024-03-26 13:28:06 +01:00
auto_update Enable first version of auto-updates on Linux (#11348) 2024-05-03 16:43:28 +02:00
breadcrumbs Break typography styles out of StyledExt (#11013) 2024-04-25 17:42:53 -04:00
call Rename RemoteProject -> DevServerProject (#11301) 2024-05-02 11:00:08 -06:00
channel remote projects per user (#10594) 2024-04-23 15:33:09 -06:00
cli Allow cli to accept --dev-server-token (#10944) 2024-04-24 13:15:19 -06:00
client Rust 1.78 (#11314) 2024-05-05 15:02:50 +02:00
clock Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
collab Add a registry for GitHostingProviders (#11470) 2024-05-06 21:24:48 -04:00
collab_ui Fix Collab context menu dismissal (#11414) 2024-05-06 13:51:02 -07:00
collections gpui: Add SVG rendering to img element and generic asset cache (#9931) 2024-03-29 17:09:49 -07:00
color Fix hex_to_hsla inside the color crate (#9412) 2024-03-15 16:58:46 -04:00
command_palette preview tabs: Allow replacing preview tab when using code navigation (#10730) 2024-04-29 20:47:01 +02:00
command_palette_hooks Introduce InlineCompletionProvider (#9777) 2024-03-26 13:28:06 +01:00
copilot Make border methods always require an explicit width (#11450) 2024-05-06 13:22:47 -04:00
db Clean up whitespace (#10755) 2024-04-23 13:31:21 -04:00
dev_server_projects remoting: Edit dev server (#11344) 2024-05-06 12:58:11 +02:00
diagnostics preview tabs: Allow replacing preview tab when using code navigation (#10730) 2024-04-29 20:47:01 +02:00
editor editor: Move runnables querying to background thread (#11487) 2024-05-07 15:31:07 +02:00
extension Compile and instantiate wasm modules on a background thread (#11270) 2024-05-01 14:34:54 -07:00
extension_api Improve extension API documentation (#10322) 2024-04-09 10:38:29 -04:00
extension_cli Add git blame (#8889) 2024-03-28 18:32:11 +01:00
extensions_ui Make border methods always require an explicit width (#11450) 2024-05-06 13:22:47 -04:00
feature_flags WIP: remoting (#10085) 2024-04-11 15:36:35 -06:00
feedback Make border methods always require an explicit width (#11450) 2024-05-06 13:22:47 -04:00
file_finder new path picker (#11015) 2024-04-26 13:25:25 -06:00
file_icons gpui: Fix Global trait (#11187) 2024-04-29 16:37:37 -04:00
fs Add a registry for GitHostingProviders (#11470) 2024-05-06 21:24:48 -04:00
fsevent Retain run loop (#11241) 2024-04-30 23:31:59 -06:00
fuzzy Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
git Add a registry for GitHostingProviders (#11470) 2024-05-06 21:24:48 -04:00
git_hosting_providers Add a registry for GitHostingProviders (#11470) 2024-05-06 21:24:48 -04:00
go_to_line Allow to toggle git hunk diffs (#11080) 2024-05-01 22:47:36 +03:00
google_ai Supermaven (#10788) 2024-05-03 12:50:42 -07:00
gpui linux: Fix restarting by waiting for sockets to be closed (#11488) 2024-05-07 15:46:41 +02:00
gpui_macros Adjust names of negated style methods (#11453) 2024-05-06 13:56:25 -04:00
headless Rename RemoteProject -> DevServerProject (#11301) 2024-05-02 11:00:08 -06:00
image_viewer Merge ElementContext into WindowContext (#10979) 2024-04-25 12:54:39 +02:00
inline_completion_button Supermaven (#10788) 2024-05-03 12:50:42 -07:00
install_cli Fix flickering (#9012) 2024-03-11 10:45:57 +01:00
journal Add the ability for extensions to provide language settings (#10296) 2024-04-08 19:17:12 -04:00
language Use lowercased language name as language id fallback (#11412) 2024-05-05 22:27:18 +03:00
language_selector Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
language_tools Supermaven (#10788) 2024-05-03 12:50:42 -07:00
languages editor: Move runnables querying to background thread (#11487) 2024-05-07 15:31:07 +02:00
live_kit_client Hoist nanoid to workspace-level (#11029) 2024-04-25 22:37:40 -04:00
live_kit_server Rust 1.78 (#11314) 2024-05-05 15:02:50 +02:00
lsp lsp: More information in error if server fails to start (#11343) 2024-05-03 13:23:52 +02:00
markdown_preview markdown preview: Break up list items into individual blocks (#10852) 2024-04-26 21:34:45 +02:00
media Revert "Revert "Revert dependency updates in #9836 (#10089)"" 2024-04-02 13:12:38 -06:00
menu Fix the linux keymap (#9829) 2024-03-26 16:10:09 -07:00
multi_buffer Add support for detecting tests in source files, and implement it for Rust (#11195) 2024-05-05 16:32:48 +02:00
node_runtime Allow extensions to define more of the methods in the LspAdapter trait (#9554) 2024-03-20 12:47:04 -07:00
notifications Fix mention notifications are not updated after message change and not removed after a message is deleted (#9847) 2024-04-02 20:40:00 -06:00
open_ai New revision of the Assistant Panel (#10870) 2024-04-23 16:23:26 -07:00
outline Allow to toggle git hunk diffs (#11080) 2024-05-01 22:47:36 +03:00
picker new path picker (#11015) 2024-04-26 13:25:25 -06:00
prettier Fix prettier-plugin-organize-imports plugin removes used imports (#9598) 2024-03-21 08:23:15 +01:00
project tasks: Prefer worktree tasks to global tasks in tag selection (#11427) 2024-05-06 16:53:48 +02:00
project_panel project panel: Allow confirming prompt with keyboard (#11346) 2024-05-03 15:15:39 +02:00
project_symbols Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
quick_action_bar Do not show tooltip for editor controls if clicked (#10679) 2024-04-17 13:20:47 +02:00
recent_projects Make border methods always require an explicit width (#11450) 2024-05-06 13:22:47 -04:00
refineable Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
release_channel Tie the Zed application ID to the release channel (#11335) 2024-05-03 10:48:35 +02:00
rich_text New revision of the Assistant Panel (#10870) 2024-04-23 16:23:26 -07:00
rope Revert "Revert "language: Remove buffer fingerprinting (#9007)"" (#9671) 2024-04-12 18:40:35 +02:00
rpc remoting: Edit dev server (#11344) 2024-05-06 12:58:11 +02:00
search Rust 1.78 (#11314) 2024-05-05 15:02:50 +02:00
semantic_index Centralize project context provided to the assistant (#11471) 2024-05-06 17:01:50 -07:00
semantic_version Extract SemanticVersion into its own crate (#9956) 2024-03-29 12:11:57 -04:00
settings Don't log JSON parse errors with no settings (#11459) 2024-05-06 14:55:44 -06:00
snippet Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
sqlez Rename RemoteProject -> DevServerProject (#11301) 2024-05-02 11:00:08 -06:00
sqlez_macros Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00
story Make border methods always require an explicit width (#11450) 2024-05-06 13:22:47 -04:00
storybook assistant2: Add ChatNotice component (#11262) 2024-05-01 14:51:28 -04:00
sum_tree Update docstring for SumTree (#10927) 2024-04-24 14:01:10 +02:00
supermaven Clean up some stray todos (#11380) 2024-05-03 16:17:56 -07:00
supermaven_api Supermaven (#10788) 2024-05-03 12:50:42 -07:00
tab_switcher Add preview tabs (#9125) 2024-04-11 23:09:12 +02:00
task tasks: Prefer worktree tasks to global tasks in tag selection (#11427) 2024-05-06 16:53:48 +02:00
tasks_ui Add support for detecting tests in source files, and implement it for Rust (#11195) 2024-05-05 16:32:48 +02:00
telemetry_events Hang diagnostics (#11190) 2024-04-29 17:13:28 -07:00
terminal Don't iterate over all system processes (#11281) 2024-05-01 20:08:56 -06:00
terminal_view Disallow adding folders to projects and opening the terminal in remote projects (#11261) 2024-05-01 16:04:59 -06:00
text Use Rope instead of String for buffer diff base (#11300) 2024-05-03 11:18:43 +03:00
theme Adjust names of negated style methods (#11453) 2024-05-06 13:56:25 -04:00
theme_importer Rust 1.78 (#11314) 2024-05-05 15:02:50 +02:00
theme_selector Add support for applying theme after extension is installed (#9529) 2024-03-20 11:13:58 -04:00
time_format Inline git blame (#10398) 2024-04-15 14:21:52 +02:00
ui Adjust names of negated style methods (#11453) 2024-05-06 13:56:25 -04:00
ui_text_field Make border methods always require an explicit width (#11450) 2024-05-06 13:22:47 -04:00
util Add a registry for GitHostingProviders (#11470) 2024-05-06 21:24:48 -04:00
vcs_menu fs: Move Repository trait into git crate (#10768) 2024-04-19 11:57:17 +02:00
vim Fix backwards mouse selection in vim mode (#11329) 2024-05-03 10:29:30 -06:00
welcome Supermaven (#10788) 2024-05-03 12:50:42 -07:00
workspace Add col/row resize cursor styles (#11406) 2024-05-06 14:22:56 -07:00
worktree Windows: Fix canonicalize return UNC path (#11083) 2024-05-06 18:25:21 -07:00
zed Add a registry for GitHostingProviders (#11470) 2024-05-06 21:24:48 -04:00
zed_actions Move Clippy configuration to the workspace level (#8891) 2024-03-05 12:01:17 -05:00