fix(ls): release config lock to avoid deadlocks#612
Merged
elijah-potter merged 1 commit intoAutomattic:masterfrom Feb 7, 2025
Merged
fix(ls): release config lock to avoid deadlocks#612elijah-potter merged 1 commit intoAutomattic:masterfrom
elijah-potter merged 1 commit intoAutomattic:masterfrom
Conversation
ee0ace9 to
968095c
Compare
* Release the config lock as quick as possible and use copies for the remaining work. * Delay grabbing the doc lock until as late as possible.
Collaborator
|
I just tried it and it seems this fixes #486. I can't reproduce it anymore in my system when using this build of |
elijah-potter
approved these changes
Feb 7, 2025
Collaborator
elijah-potter
left a comment
There was a problem hiding this comment.
Looks great! Thank you for tracking down the issue 🥳.
tmeijn
pushed a commit
to tmeijn/dotfiles
that referenced
this pull request
Feb 11, 2025
This MR contains the following updates: | Package | Update | Change | |---|---|---| | [Automattic/harper/harper-ls](https://github.com/Automattic/harper) | minor | `v0.19.1` -> `v0.20.0` | MR created with the help of [el-capitano/tools/renovate-bot](https://gitlab.com/el-capitano/tools/renovate-bot). **Proposed changes to behavior should be submitted there as MRs.** --- ### Release Notes <details> <summary>Automattic/harper (Automattic/harper/harper-ls)</summary> ### [`v0.20.0`](https://github.com/Automattic/harper/releases/tag/v0.20.0) [Compare Source](Automattic/harper@v0.19.1...v0.20.0) #### What's Changed - chore: Maintenance Changes by [@​mcecode](https://github.com/mcecode) in Automattic/harper#583 - build: use `just`-native dependency resolution by [@​elijah-potter](https://github.com/elijah-potter) in Automattic/harper#554 - build(deps): bump tree-sitter-dart from 0.0.3 to 0.0.4 by [@​dependabot](https://github.com/dependabot) in Automattic/harper#566 - build(deps): bump serde_json from 1.0.137 to 1.0.138 by [@​dependabot](https://github.com/dependabot) in Automattic/harper#568 - build(deps-dev): bump [@​rollup/plugin-typescript](https://github.com/rollup/plugin-typescript) from 11.1.6 to 12.1.2 in /packages by [@​dependabot](https://github.com/dependabot) in Automattic/harper#569 - feat(web): add link to the Discord server by [@​elijah-potter](https://github.com/elijah-potter) in Automattic/harper#585 - clean up strange character at end-of-line by [@​hippietrail](https://github.com/hippietrail) in Automattic/harper#580 - feat(core): Lint for those who don't like Oxford commas by [@​hippietrail](https://github.com/hippietrail) in Automattic/harper#562 - docs(obsidian): notify people they should use up-to-date Electron by [@​elijah-potter](https://github.com/elijah-potter) in Automattic/harper#586 - build(deps-dev): bump vitest from 2.1.8 to 2.1.9 in /packages by [@​dependabot](https://github.com/dependabot) in Automattic/harper#588 - build(deps-dev): bump [@​vitest/browser](https://github.com/vitest/browser) from 2.1.8 to 2.1.9 in /packages by [@​dependabot](https://github.com/dependabot) in Automattic/harper#591 - fix(core): add `on` to the list of special cases by [@​elijah-potter](https://github.com/elijah-potter) in Automattic/harper#592 - feat(core): start support for hex numbers by [@​hippietrail](https://github.com/hippietrail) in Automattic/harper#553 - feat: change `just addnoun` to have different affixes as per [#​595](Automattic/harper#595) by [@​hippietrail](https://github.com/hippietrail) in Automattic/harper#601 - Phrase fixes by [@​elijah-potter](https://github.com/elijah-potter) in Automattic/harper#589 - dict: add inclusivity by [@​lukasmwerner](https://github.com/lukasmwerner) in Automattic/harper#590 - docs(vscode): revised introductional material by [@​elijah-potter](https://github.com/elijah-potter) in Automattic/harper#602 - docs: missing word in web/author-a-rule by [@​hippietrail](https://github.com/hippietrail) in Automattic/harper#614 - feat: adds a brief helpful comment to each entry describing its function by [@​hippietrail](https://github.com/hippietrail) in Automattic/harper#593 - fix(ls): release config lock to avoid deadlocks by [@​nyonson](https://github.com/nyonson) in Automattic/harper#612 - feat(core): create rule for the possessive version of "you" by [@​elijah-potter](https://github.com/elijah-potter) in Automattic/harper#619 - bench(harper.js): add benchmarks for configuration methods by [@​elijah-potter](https://github.com/elijah-potter) in Automattic/harper#618 - grammar agreement in obsidion plugin comment by [@​hippietrail](https://github.com/hippietrail) in Automattic/harper#622 - feat: clarify message for uncapitalized "I" by [@​hippietrail](https://github.com/hippietrail) in Automattic/harper#625 - build(deps-dev): bump [@​types/node](https://github.com/types/node) from 22.13.0 to 22.13.1 in /packages by [@​dependabot](https://github.com/dependabot) in Automattic/harper#632 - build(deps-dev): bump esbuild from 0.24.2 to 0.25.0 in /packages by [@​dependabot](https://github.com/dependabot) in Automattic/harper#633 - build(deps-dev): bump typescript from 5.6.3 to 5.7.3 in /packages by [@​dependabot](https://github.com/dependabot) in Automattic/harper#631 - build(deps-dev): bump [@​sveltejs/kit](https://github.com/sveltejs/kit) from 2.16.1 to 2.17.1 in /packages by [@​dependabot](https://github.com/dependabot) in Automattic/harper#629 - chore: correct some affix annotations by [@​hippietrail](https://github.com/hippietrail) in Automattic/harper#617 - feat: split triggers in `matcher.rs` into categories with explanations by [@​hippietrail](https://github.com/hippietrail) in Automattic/harper#636 - Cut-and-paste error in "report error" template by [@​hippietrail](https://github.com/hippietrail) in Automattic/harper#623 - bug: reverse correcting "supposed to" to "suppose to" by [@​hippietrail](https://github.com/hippietrail) in Automattic/harper#621 - feat: if spellcheck only has one suggestion mention it directly by [@​hippietrail](https://github.com/hippietrail) in Automattic/harper#626 - fix(obsidian): correctly handle Unicode conversions by [@​elijah-potter](https://github.com/elijah-potter) in Automattic/harper#627 - feat: add `harper-cli forms` and `just getforms` by [@​hippietrail](https://github.com/hippietrail) in Automattic/harper#615 - Closed Compound Matcher Conversions by [@​elijah-potter](https://github.com/elijah-potter) in Automattic/harper#608 - build(deps): bump clap from 4.5.27 to 4.5.28 by [@​dependabot](https://github.com/dependabot) in Automattic/harper#635 - build(deps): bump esbuild from 0.23.1 to 0.25.0 in /packages by [@​dependabot](https://github.com/dependabot) in Automattic/harper#639 - fix(core): make narrow linter specifically for `long and behold` by [@​elijah-potter](https://github.com/elijah-potter) in Automattic/harper#641 - fix(core): currency placement with certain decimal positions by [@​elijah-potter](https://github.com/elijah-potter) in Automattic/harper#604 #### New Contributors - [@​nyonson](https://github.com/nyonson) made their first contribution in Automattic/harper#612 **Full Changelog**: Automattic/harper@v0.19.1...v0.20.0 </details> --- ### Configuration 📅 **Schedule**: Branch creation - At any time (no schedule defined), Automerge - At any time (no schedule defined). 🚦 **Automerge**: Disabled by config. Please merge this manually once you are satisfied. ♻ **Rebasing**: Whenever MR becomes conflicted, or you tick the rebase/retry checkbox. 🔕 **Ignore**: Close this MR and you won't be reminded about this update again. --- - [ ] <!-- rebase-check -->If you want to rebase/retry this MR, check this box --- This MR has been generated by [Renovate Bot](https://github.com/renovatebot/renovate). <!--renovate-debug:eyJjcmVhdGVkSW5WZXIiOiIzOS4xNjQuMSIsInVwZGF0ZWRJblZlciI6IjM5LjE2NC4xIiwidGFyZ2V0QnJhbmNoIjoibWFpbiIsImxhYmVscyI6WyJSZW5vdmF0ZSBCb3QiXX0=-->
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.
I have yet to convince myself exactly where the deadlock(s) is happening, but I suspect it is somewhere here in the
update_documentfunction. I am not sure if the Helix IDE is unique in this case, but it throws a lot of document change events at the LSP as you type, doesn't look like a ton of de-bouncing is happening. So very possible for some concurrent update doc requests. I initially thought there were issues with the order of when the config lock and doc lock are grabbed, but the config lock is a Rwlock, leaving me unable to think of an actual deadlock scenario.Still, this patch shows a great improvement as far as avoiding deadlocks, although I can't be sure it completely fixes it. Not super satisfying.
Two lock updates in the patch, both attempt to lower the time locks are held while other work is being done.
update_documentandpublish_diagnostics.Could maybe help with #486