Stop extensions' servers and message loops before removing their files (#34208)
Fixes an issue that caused Windows to fail when removing extension's directories, as Zed had never stop any related processes. Now: * Zed shuts down and waits until the end when the language servers are shut down * Adds `impl Drop for WasmExtension` where does `self.tx.close_channel();` to stop a receiver loop that holds the "lock" on the extension's work dir. The extension was dropped, but the channel was not closed for some reason. * Does more unregistration to ensure `Arc<WasmExtension>` with the `tx` does not leak further * Tidies up the related errors which had never reported a problematic path before Release Notes: - N/A --------- Co-authored-by: Smit Barmase <heysmitbarmase@gmail.com> Co-authored-by: Smit <smit@zed.dev>
This commit is contained in:
parent
c549b712fd
commit
c6603e4fba
18 changed files with 273 additions and 84 deletions
|
@ -441,11 +441,31 @@ pub fn main() {
|
|||
|
||||
debug_adapter_extension::init(extension_host_proxy.clone(), cx);
|
||||
language::init(cx);
|
||||
language_extension::init(extension_host_proxy.clone(), languages.clone());
|
||||
languages::init(languages.clone(), node_runtime.clone(), cx);
|
||||
let user_store = cx.new(|cx| UserStore::new(client.clone(), cx));
|
||||
let workspace_store = cx.new(|cx| WorkspaceStore::new(client.clone(), cx));
|
||||
|
||||
language_extension::init(
|
||||
language_extension::LspAccess::ViaWorkspaces({
|
||||
let workspace_store = workspace_store.clone();
|
||||
Arc::new(move |cx: &mut App| {
|
||||
workspace_store.update(cx, |workspace_store, cx| {
|
||||
workspace_store
|
||||
.workspaces()
|
||||
.iter()
|
||||
.map(|workspace| {
|
||||
workspace.update(cx, |workspace, _, cx| {
|
||||
workspace.project().read(cx).lsp_store()
|
||||
})
|
||||
})
|
||||
.collect()
|
||||
})
|
||||
})
|
||||
}),
|
||||
extension_host_proxy.clone(),
|
||||
languages.clone(),
|
||||
);
|
||||
|
||||
Client::set_global(client.clone(), cx);
|
||||
|
||||
zed::init(cx);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue