fix(ls): potential deadlock causing #486

This commit is contained in:
Elijah Potter
2025-01-24 10:47:41 -07:00
parent 24baa04f1a
commit e4251ac231

View File

@@ -289,11 +289,16 @@ impl Backend {
url: &Url,
range: Range,
) -> JsonResult<Vec<CodeActionOrCommand>> {
let (config, mut doc_states) = tokio::join!(self.config.read(), self.doc_state.lock());
let (config_guard, mut doc_states) =
tokio::join!(self.config.read(), self.doc_state.lock());
let Some(doc_state) = doc_states.get_mut(url) else {
return Ok(Vec::new());
};
// Allow writes as soon as possible to avoid deadlocks
let config = config_guard.clone();
drop(config_guard);
let mut lints = doc_state.linter.lint(&doc_state.document);
lints.sort_by_key(|l| l.priority);