-
Notifications
You must be signed in to change notification settings - Fork 80
Improve handling of output from LSP servers #2163
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Open
asnare
wants to merge
9
commits into
main
Choose a base branch
from
fix/stderr-long-lines
base: main
Could not load branches
Branch not found: {{ refName }}
Loading
Could not load tags
Nothing to show
Loading
Are you sure you want to change the base?
Some commits from the old base branch may be removed from the timeline,
and old review comments may become outdated.
Open
Conversation
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Changes include: - Logging the (critical!) error if something goes wrong during the handling. - Dealing with lines longer than the chunking limit (64KiB). - Tests to exercise this.
Codecov Report❌ Patch coverage is
Additional details and impacted files@@ Coverage Diff @@
## main #2163 +/- ##
==========================================
+ Coverage 65.23% 65.32% +0.08%
==========================================
Files 100 100
Lines 8504 8533 +29
Branches 875 883 +8
==========================================
+ Hits 5548 5574 +26
- Misses 2769 2770 +1
- Partials 187 189 +2 ☔ View full report in Codecov by Sentry. 🚀 New features to boost your workflow:
|
|
✅ 51/51 passed, 11 flaky, 3m55s total Flaky tests:
Running from acceptance #3055 |
Improvements include: - Properly enforce the upper memory limit. - Use [..?] instead of [...] to indicate a prematurely flushed chunk, we don't know if another chunk will arrive. - Zero-copy buffer management.
A large buffer is no longer needed now that we handle such lines properly.
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
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.
Changes
LSP servers use stdin/stdout for the LSP calls, and stderr as a general logging facility. Currently we mirror the stderr output as logs, but due to the implementation details this fails when an individual line received from stderr is longer than 64KiB in size.
Although #2160 contains a hot fix for this problem, this PR improves the handling in a more robust manner:
Relevant implementation details
The primary change here is to handle line-breaking and decoding ourselves rather than relying on the
StreamReader.readline()implementation. (The behaviour of the latter cannot be reliably controlled when a line exceeds the configuredlimit, which defaults to 64K.)Caveats/things to watch out for when reviewing:
Further changes are needed to the test LSP server (
lsp_server.py) that we use for testing, they are out of scope for this PR.Linked issues
Supersedes #2160, closes #2164.
Functionality
databricks labs lakebridge transpileTests