Conversation
RyanCavanaugh
approved these changes
Feb 27, 2026
Member
writeLoop is a |
Member
Author
IIUC it blocks on writing to the buffered channel before cancellation hits, and then stays blocked. |
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
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.
From these logs, a formatting test was deadlocking:
Trace
Basically this was due to a combination of:
The formatting request in the test returns many edits, and for each edit fourslash will apply it and send a
textDocument/didChangenotification to the server. The server will then send back many logging messages for these, such that, depending on the ordering in which things happen:writeLoopgets blocked on writing to the output, because it is full.MessageRoutersees the context is cancelled and exits.writeLoopto exit.This PR fixes that by having
MessageRouterdrain the output reader messages when the context is cancelled.I think the other formatting test we had disabled a month ago was failing for a similar reason.
I also can't think of a way to test all this right now.