From e2ff77c9ffeb42b442e720ccb6658aaab3448f59 Mon Sep 17 00:00:00 2001 From: Piotr Figiela <77412592+Draggu@users.noreply.github.com> Date: Mon, 2 Sep 2024 11:09:59 +0200 Subject: [PATCH] LS: Unrecognized LS requests to be cancelled on salsa failures (#6319) --- crates/cairo-lang-language-server/src/lib.rs | 11 ++++++++++- 1 file changed, 10 insertions(+), 1 deletion(-) diff --git a/crates/cairo-lang-language-server/src/lib.rs b/crates/cairo-lang-language-server/src/lib.rs index 4475fd80870..179864d4ec8 100644 --- a/crates/cairo-lang-language-server/src/lib.rs +++ b/crates/cairo-lang-language-server/src/lib.rs @@ -320,7 +320,16 @@ impl Backend { { spawn_blocking(move || { catch_unwind(AssertUnwindSafe(f)).map_err(|err| { - if err.is::<Cancelled>() { + // Salsa is broken and sometimes when cancelled throws regular assert instead of + // [`Cancelled`]. Catch this case too. + if err.is::<Cancelled>() + || err.downcast_ref::<&str>().is_some_and(|msg| { + msg.contains( + "assertion failed: old_memo.revisions.changed_at <= \ + revisions.changed_at", + ) + }) + { debug!("LSP worker thread was cancelled"); LSPError::request_cancelled() } else {