refactor: statsd supervisor API no need to return error

Also to make dialyzer happy
This commit is contained in:
Zaiming (Stone) Shi 2021-12-31 12:27:25 +01:00
parent 2bfc5b1241
commit 071b03b29c
4 changed files with 21 additions and 16 deletions

View File

@ -308,7 +308,7 @@ download_trace_log(get, #{bindings := #{name := Name}}) ->
%% TODO use file replace file_binary.(delete file after send is not ready now).
{ok, Binary} = file:read_file(ZipFile),
ZipName = filename:basename(ZipFile),
file:delete(ZipFile),
_ = file:delete(ZipFile),
Headers = #{
<<"content-type">> => <<"application/x-zip">>,
<<"content-disposition">> => iolist_to_binary("attachment; filename=" ++ ZipName)

View File

@ -61,10 +61,10 @@ statsd(put, #{body := Body}) ->
{ok, #{raw_config := NewConfig, config := Config}} ->
case maps:get(<<"enable">>, Body) of
true ->
_ = emqx_statsd_sup:stop_child(?APP),
_ = emqx_statsd_sup:start_child(?APP, maps:get(config, Config));
ok = emqx_statsd_sup:ensure_child_stopped(?APP),
ok = emqx_statsd_sup:ensure_child_started(?APP, maps:get(config, Config));
false ->
_ = emqx_statsd_sup:stop_child(?APP)
ok = emqx_statsd_sup:ensure_child_stopped(?APP)
end,
{200, NewConfig};
{error, Reason} ->

View File

@ -34,7 +34,7 @@ stop(_) ->
maybe_enable_statsd() ->
case emqx_conf:get([statsd, enable], false) of
true ->
emqx_statsd_sup:start_child(?APP, emqx_conf:get([statsd], #{}));
emqx_statsd_sup:ensure_child_started(?APP, emqx_conf:get([statsd], #{}));
false ->
ok
end.

View File

@ -8,9 +8,9 @@
-behaviour(supervisor).
-export([ start_link/0
, start_child/1
, start_child/2
, stop_child/1
, ensure_child_started/1
, ensure_child_started/2
, ensure_child_stopped/1
]).
-export([init/1]).
@ -26,19 +26,24 @@
start_link() ->
supervisor:start_link({local, ?MODULE}, ?MODULE, []).
-spec start_child(supervisor:child_spec()) -> ok.
start_child(ChildSpec) when is_map(ChildSpec) ->
-spec ensure_child_started(supervisor:child_spec()) -> ok.
ensure_child_started(ChildSpec) when is_map(ChildSpec) ->
assert_started(supervisor:start_child(?MODULE, ChildSpec)).
-spec start_child(atom(), map()) -> ok.
start_child(Mod, Opts) when is_atom(Mod) andalso is_map(Opts) ->
-spec ensure_child_started(atom(), map()) -> ok.
ensure_child_started(Mod, Opts) when is_atom(Mod) andalso is_map(Opts) ->
assert_started(supervisor:start_child(?MODULE, ?CHILD(Mod, Opts))).
-spec(stop_child(any()) -> ok | {error, term()}).
stop_child(ChildId) ->
%% @doc Stop the child worker process.
-spec ensure_child_stopped(any()) -> ok.
ensure_child_stopped(ChildId) ->
case supervisor:terminate_child(?MODULE, ChildId) of
ok -> supervisor:delete_child(?MODULE, ChildId);
Error -> Error
ok ->
%% with terminate_child/2 returned 'ok', it's not possible
%% for supervisor:delete_child/2 to return {error, Reason}
ok = supervisor:delete_child(?MODULE, ChildId);
{error, not_found} ->
ok
end.
init([]) ->