Skip to content

Commit d88ae66

Browse files
committed
Sync handlers cannot be cancelled
1 parent e2da967 commit d88ae66

File tree

3 files changed

+9
-19
lines changed

3 files changed

+9
-19
lines changed

crates/rust-analyzer/src/dispatch.rs

Lines changed: 6 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -51,10 +51,9 @@ impl<'a> RequestDispatcher<'a> {
5151
let _pctx = stdx::panic_context::enter(panic_context);
5252
f(self.global_state, params)
5353
};
54-
match result_to_response::<R>(req.id.clone(), result) {
55-
Ok(response) => self.global_state.respond(response),
56-
Err(_) => self.global_state.task_pool.handle.send_retry(req),
57-
};
54+
if let Ok(response) = result_to_response::<R>(req.id.clone(), result) {
55+
self.global_state.respond(response);
56+
}
5857

5958
self
6059
}
@@ -80,10 +79,9 @@ impl<'a> RequestDispatcher<'a> {
8079
f(global_state_snapshot, params)
8180
});
8281

83-
match thread_result_to_response::<R>(req.id.clone(), result) {
84-
Ok(response) => self.global_state.respond(response),
85-
Err(_) => self.global_state.task_pool.handle.send_retry(req),
86-
};
82+
if let Ok(response) = thread_result_to_response::<R>(req.id.clone(), result) {
83+
self.global_state.respond(response);
84+
}
8785

8886
self
8987
}

crates/rust-analyzer/src/main_loop.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -173,13 +173,13 @@ impl GlobalState {
173173
msg.ok().map(Event::Lsp),
174174

175175
recv(self.task_pool.receiver) -> task =>
176-
task.ok().map(Event::Task),
176+
Some(Event::Task(task.unwrap())),
177177

178178
recv(self.loader.receiver) -> task =>
179-
task.ok().map(Event::Vfs),
179+
Some(Event::Vfs(task.unwrap())),
180180

181181
recv(self.flycheck_receiver) -> task =>
182-
task.ok().map(Event::Flycheck),
182+
Some(Event::Flycheck(task.unwrap())),
183183
}
184184
}
185185

crates/rust-analyzer/src/task_pool.rs

Lines changed: 0 additions & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -2,8 +2,6 @@
22
//! properly.
33
use crossbeam_channel::Sender;
44

5-
use crate::main_loop::Task;
6-
75
pub(crate) struct TaskPool<T> {
86
sender: Sender<T>,
97
inner: threadpool::ThreadPool,
@@ -46,9 +44,3 @@ impl<T> Drop for TaskPool<T> {
4644
self.inner.join()
4745
}
4846
}
49-
50-
impl TaskPool<Task> {
51-
pub(crate) fn send_retry(&self, req: lsp_server::Request) {
52-
let _ = self.sender.send(Task::Retry(req));
53-
}
54-
}

0 commit comments

Comments
 (0)