Skip to content

[Enhancement] Improve cancellation support in LSP server #215

@mattmasson

Description

@mattmasson

Feature

  • Handlers should return ResponseError on cancellation
  • Ensure all LSP operations are passing through cancellation tokens
  • Cancellation occurrence should be traced but should not be considered an error

Example of runSafeAsync implementation -
https://github.com/microsoft/vscode/blob/aa31bfc9fd1746626b3efe86f41b9c172d5f4d23/extensions/css-language-features/server/src/utils/runner.ts#L21

Other implementation examples can be found in the vscode tree:
https://github.com/microsoft/vscode/tree/aa31bfc9fd1746626b3efe86f41b9c172d5f4d23/extensions/css-language-features/server/src

Implementation / Validation Notes

We should ensure that operations such as documentSymbols, diagnostics, and semantic tokens are only run once for a given document. A new request should automatically cancel the previous request. A quick scan of other LSP implementations indicates that this should be handled for us automatically by the LSP framework - we shouldn't need explicit handling / debouncing.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions