Skip to content

Commit 5ff43c5

Browse files
committed
improve sanity checks
1 parent ddf6dca commit 5ff43c5

File tree

2 files changed

+18
-6
lines changed

2 files changed

+18
-6
lines changed

apps/language_server/lib/language_server/providers/hover.ex

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -23,6 +23,13 @@ defmodule ElixirLS.LanguageServer.Providers.Hover do
2323
}
2424
rescue
2525
e ->
26+
if match?({_, _}, docs) do
27+
Logger.error("Sanity check failed. ElixirLS needs to restart.")
28+
29+
Process.sleep(2000)
30+
System.halt(1)
31+
end
32+
2633
raise "#{inspect(e.__struct__)}\n#{inspect(__STACKTRACE__)}\nline:\n#{Enum.at(lines, line - 1)}\nchar: #{character}\n#{inspect(docs)}"
2734
end
2835
end

apps/language_server/lib/language_server/server.ex

Lines changed: 11 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -208,7 +208,7 @@ defmodule ElixirLS.LanguageServer.Server do
208208
{:error, type, msg, send_telemetry} ->
209209
JsonRpc.respond_with_error(id, type, msg)
210210

211-
do_sanity_check()
211+
do_sanity_check(msg || to_string(type))
212212

213213
if send_telemetry do
214214
JsonRpc.telemetry(
@@ -427,7 +427,7 @@ defmodule ElixirLS.LanguageServer.Server do
427427
error_msg = Exception.format_exit(reason)
428428
JsonRpc.respond_with_error(id, :internal_error, error_msg)
429429

430-
do_sanity_check()
430+
do_sanity_check(error_msg)
431431

432432
JsonRpc.telemetry(
433433
"lsp_request_error",
@@ -788,7 +788,7 @@ defmodule ElixirLS.LanguageServer.Server do
788788
"retry" => false
789789
})
790790

791-
do_sanity_check()
791+
do_sanity_check(error_msg)
792792

793793
JsonRpc.telemetry(
794794
"lsp_request_error",
@@ -855,7 +855,7 @@ defmodule ElixirLS.LanguageServer.Server do
855855
{:error, type, msg, send_telemetry, state} ->
856856
JsonRpc.respond_with_error(id, type, msg)
857857

858-
do_sanity_check()
858+
do_sanity_check(msg)
859859

860860
if send_telemetry do
861861
JsonRpc.telemetry(
@@ -901,7 +901,7 @@ defmodule ElixirLS.LanguageServer.Server do
901901
error_msg = Exception.format(kind, payload, stacktrace)
902902
JsonRpc.respond_with_error(id, :internal_error, error_msg)
903903

904-
do_sanity_check()
904+
do_sanity_check(error_msg)
905905

906906
JsonRpc.telemetry(
907907
"lsp_request_error",
@@ -2244,8 +2244,12 @@ defmodule ElixirLS.LanguageServer.Server do
22442244
end
22452245
end
22462246

2247-
def do_sanity_check() do
2247+
def do_sanity_check(message \\ nil) do
22482248
try do
2249+
if message != nil and String.contains?(message, "UndefinedFunctionError") do
2250+
raise "sanity check failed"
2251+
end
2252+
22492253
unless :persistent_term.get(:language_server_test_mode, false) do
22502254
unless function_exported?(ElixirSense, :module_info, 1) and
22512255
:persistent_term.get(:language_server_lib_dir) ==
@@ -2262,6 +2266,7 @@ defmodule ElixirLS.LanguageServer.Server do
22622266
rescue
22632267
_ ->
22642268
Logger.error("Sanity check failed. ElixirLS needs to restart.")
2269+
IO.warn("sanity")
22652270

22662271
Process.sleep(2000)
22672272
System.halt(1)

0 commit comments

Comments
 (0)