Skip to content

Commit 7386303

Browse files
committed
add terminate handlers in a few more places
1 parent 7006f41 commit 7386303

File tree

8 files changed

+169
-5
lines changed

8 files changed

+169
-5
lines changed

apps/elixir_ls_debugger/lib/debugger/breakpoint_condition.ex

Lines changed: 28 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,34 @@ defmodule ElixirLS.Debugger.BreakpointCondition do
6464
}}
6565
end
6666

67+
@impl GenServer
68+
def terminate(reason, _state) do
69+
case reason do
70+
:normal ->
71+
:ok
72+
73+
:shutdown ->
74+
:ok
75+
76+
{:shutdown, _} ->
77+
:ok
78+
79+
other ->
80+
Output.telemetry(
81+
"dap_server_error",
82+
%{
83+
"elixir_ls.dap_process" => inspect(__MODULE__),
84+
"elixir_ls.dap_server_error" => inspect(other)
85+
},
86+
%{}
87+
)
88+
89+
Output.debugger_important("Terminating #{__MODULE__}: #{Exception.format_exit(reason)}")
90+
end
91+
92+
:ok
93+
end
94+
6795
@impl GenServer
6896
def handle_call(
6997
{:register_condition, key, condition, log_message, hit_count},

apps/elixir_ls_debugger/lib/debugger/server.ex

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -199,12 +199,13 @@ defmodule ElixirLS.Debugger.Server do
199199
Output.telemetry(
200200
"dap_server_error",
201201
%{
202+
"elixir_ls.dap_process" => inspect(__MODULE__),
202203
"elixir_ls.dap_server_error" => inspect(other)
203204
},
204205
%{}
205206
)
206207

207-
Output.debugger_important("Terminating: #{Exception.format_exit(reason)}")
208+
Output.debugger_important("Terminating #{__MODULE__}: #{Exception.format_exit(reason)}")
208209
System.stop(1)
209210
end
210211

apps/language_server/lib/language_server/dialyzer.ex

Lines changed: 23 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -190,8 +190,29 @@ defmodule ElixirLS.LanguageServer.Dialyzer do
190190

191191
@impl GenServer
192192
def terminate(reason, _state) do
193-
if reason != :normal do
194-
JsonRpc.show_message(
193+
case reason do
194+
:normal ->
195+
:ok
196+
197+
:shutdown ->
198+
:ok
199+
200+
{:shutdown, _} ->
201+
:ok
202+
203+
other ->
204+
JsonRpc.telemetry(
205+
"lsp_server_error",
206+
%{
207+
"elixir_ls.lsp_process" => inspect(__MODULE__),
208+
"elixir_ls.lsp_server_error" => inspect(other)
209+
},
210+
%{}
211+
)
212+
213+
Logger.info("Terminating #{__MODULE__}: #{Exception.format_exit(reason)}")
214+
215+
JsonRpc.show_message(
195216
:error,
196217
"ElixirLS Dialyzer had an error. If this happens repeatedly, set " <>
197218
"\"elixirLS.dialyzerEnabled\" to false in settings.json to disable it"

apps/language_server/lib/language_server/ex_unit_test_tracer.ex

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,8 @@
11
defmodule ElixirLS.LanguageServer.ExUnitTestTracer do
22
use GenServer
33
alias ElixirLS.LanguageServer.Build
4+
alias ElixirLS.LanguageServer.JsonRpc
5+
require Logger
46

57
@tables ~w(tests)a
68

@@ -36,6 +38,34 @@ defmodule ElixirLS.LanguageServer.ExUnitTestTracer do
3638
{:ok, %{}}
3739
end
3840

41+
@impl GenServer
42+
def terminate(reason, _state) do
43+
case reason do
44+
:normal ->
45+
:ok
46+
47+
:shutdown ->
48+
:ok
49+
50+
{:shutdown, _} ->
51+
:ok
52+
53+
other ->
54+
JsonRpc.telemetry(
55+
"lsp_server_error",
56+
%{
57+
"elixir_ls.lsp_process" => inspect(__MODULE__),
58+
"elixir_ls.lsp_server_error" => inspect(other)
59+
},
60+
%{}
61+
)
62+
63+
Logger.info("Terminating #{__MODULE__}: #{Exception.format_exit(reason)}")
64+
end
65+
66+
:ok
67+
end
68+
3969
@impl true
4070
def handle_call({:get_tests, path}, _from, state) do
4171
:ets.delete_all_objects(table_name(:tests))

apps/language_server/lib/language_server/mix_project.ex

Lines changed: 30 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -5,6 +5,8 @@ defmodule ElixirLS.LanguageServer.MixProject do
55
popped
66
"""
77
use GenServer
8+
alias ElixirLS.LanguageServer.JsonRpc
9+
require Logger
810

911
def start_link(args) do
1012
GenServer.start_link(__MODULE__, args, name: __MODULE__)
@@ -133,6 +135,34 @@ defmodule ElixirLS.LanguageServer.MixProject do
133135
{:ok, nil}
134136
end
135137

138+
@impl GenServer
139+
def terminate(reason, _state) do
140+
case reason do
141+
:normal ->
142+
:ok
143+
144+
:shutdown ->
145+
:ok
146+
147+
{:shutdown, _} ->
148+
:ok
149+
150+
other ->
151+
JsonRpc.telemetry(
152+
"lsp_server_error",
153+
%{
154+
"elixir_ls.lsp_process" => inspect(__MODULE__),
155+
"elixir_ls.lsp_server_error" => inspect(other)
156+
},
157+
%{}
158+
)
159+
160+
Logger.info("Terminating #{__MODULE__}: #{Exception.format_exit(reason)}")
161+
end
162+
163+
:ok
164+
end
165+
136166
@impl GenServer
137167
def handle_call({:get, key}, _from, state) do
138168
{:reply, Map.fetch!(state, key), state}

apps/language_server/lib/language_server/providers/workspace_symbols.ex

Lines changed: 29 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -9,6 +9,7 @@ defmodule ElixirLS.LanguageServer.Providers.WorkspaceSymbols do
99
alias ElixirLS.LanguageServer.ErlangSourceFile
1010
alias ElixirLS.LanguageServer.SourceFile
1111
alias ElixirLS.LanguageServer.Providers.SymbolUtils
12+
alias ElixirLS.LanguageServer.JsonRpc
1213
require Logger
1314

1415
@arity_suffix_regex ~r/\/\d+$/u
@@ -99,6 +100,34 @@ defmodule ElixirLS.LanguageServer.Providers.WorkspaceSymbols do
99100
}}
100101
end
101102

103+
@impl GenServer
104+
def terminate(reason, _state) do
105+
case reason do
106+
:normal ->
107+
:ok
108+
109+
:shutdown ->
110+
:ok
111+
112+
{:shutdown, _} ->
113+
:ok
114+
115+
other ->
116+
JsonRpc.telemetry(
117+
"lsp_server_error",
118+
%{
119+
"elixir_ls.lsp_process" => inspect(__MODULE__),
120+
"elixir_ls.lsp_server_error" => inspect(other)
121+
},
122+
%{}
123+
)
124+
125+
Logger.info("Terminating #{__MODULE__}: #{Exception.format_exit(reason)}")
126+
end
127+
128+
:ok
129+
end
130+
102131
@impl GenServer
103132
def handle_call({:query, query}, from, state) do
104133
{:ok, _pid} =

apps/language_server/lib/language_server/server.ex

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -145,12 +145,13 @@ defmodule ElixirLS.LanguageServer.Server do
145145
JsonRpc.telemetry(
146146
"lsp_server_error",
147147
%{
148+
"elixir_ls.lsp_process" => inspect(__MODULE__),
148149
"elixir_ls.lsp_server_error" => inspect(other)
149150
},
150151
%{}
151152
)
152153

153-
Logger.info("Terminating: #{Exception.format_exit(reason)}")
154+
Logger.info("Terminating #{__MODULE__}: #{Exception.format_exit(reason)}")
154155
System.stop(1)
155156
end
156157

apps/language_server/lib/language_server/tracer.ex

Lines changed: 25 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,7 @@ defmodule ElixirLS.LanguageServer.Tracer do
22
@moduledoc """
33
"""
44
use GenServer
5+
alias ElixirLS.LanguageServer.JsonRpc
56
require Logger
67

78
@version 3
@@ -104,8 +105,31 @@ defmodule ElixirLS.LanguageServer.Tracer do
104105
end
105106

106107
@impl true
107-
def terminate(_reason, state) do
108+
def terminate(reason, state) do
108109
maybe_close_tables(state)
110+
111+
case reason do
112+
:normal ->
113+
:ok
114+
115+
:shutdown ->
116+
:ok
117+
118+
{:shutdown, _} ->
119+
:ok
120+
121+
other ->
122+
JsonRpc.telemetry(
123+
"lsp_server_error",
124+
%{
125+
"elixir_ls.lsp_process" => inspect(__MODULE__),
126+
"elixir_ls.lsp_server_error" => inspect(other)
127+
},
128+
%{}
129+
)
130+
131+
Logger.info("Terminating #{__MODULE__}: #{Exception.format_exit(reason)}")
132+
end
109133
end
110134

111135
defp maybe_close_tables(%{project_dir: nil}), do: :ok

0 commit comments

Comments
 (0)