Commit Graph

4 Commits (a959c0ef9be59e63617c8e95d1ac59889d45a8b5)

Author SHA1 Message Date
Pascal Kuthe 38ee845b05 don't overload LS with completion resolve requests
While moving completion resolve to the event system in #9668 we introduced what
is essentially a "DOS attack" on slow LSPs. Completion resolve requests were
made in the render loop and debounced with a timeout. Once the timeout expired
the resolve request was made. The problem is the next frame would immediately
request a new completion resolve request (and mark the old one as obsolete but
because LSP has no notion of cancelation the server would still process it). So
we were in essence sending one completion request to the server every 150ms and
only stopped if the server managed to respond before we rendered a new frame.
This caused overload on slower machines/with slower LS.

In this PR I revamped the resolve handler so that a request is only ever
resolved once. Both by checking if a request is already in-flight and by marking
failed resolve requests as resolved.
6 months ago
Michael Davis cb286b7a5d
Fix rustc warnings about unused 'pub use's (#10011) 6 months ago
Pascal Kuthe 8e592a151f refactor completion and signature help using hooks 9 months ago
Pascal Kuthe 13ed4f6c47 Add hook/event system 9 months ago