Delay LS shutdown when last client disconnects #7254
Merged
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
Pull Request Description
Rather than closing Language Server immediately, we delay the shutdown until some timeout hits. This gives a chance for new clients to connect without paying the price of the initialization again.
More importantly, during hibernation/restart, the connection between client (IDE) and LS is severed so it appears as if client disconnect. In fact a few moments later IDE would attempt to re-establish the connection on the same port. Without this change, LS shutsdown and further attempts to connect on that particular port will fail.
There are still problems on the IDE-side after waking up from hibernation but it is not related to Language Server.
Important Notes
Partially solves #5197.
Checklist
Please ensure that the following checklist has been satisfied before submitting the PR:
Scala,
Java,
and
Rust
style guides. In case you are using a language not listed above, follow the Rust style guide.
./run ide build
.