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

View File

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

View File

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

View File

@ -8,9 +8,9 @@
-behaviour(supervisor). -behaviour(supervisor).
-export([ start_link/0 -export([ start_link/0
, start_child/1 , ensure_child_started/1
, start_child/2 , ensure_child_started/2
, stop_child/1 , ensure_child_stopped/1
]). ]).
-export([init/1]). -export([init/1]).
@ -26,19 +26,24 @@
start_link() -> start_link() ->
supervisor:start_link({local, ?MODULE}, ?MODULE, []). supervisor:start_link({local, ?MODULE}, ?MODULE, []).
-spec start_child(supervisor:child_spec()) -> ok. -spec ensure_child_started(supervisor:child_spec()) -> ok.
start_child(ChildSpec) when is_map(ChildSpec) -> ensure_child_started(ChildSpec) when is_map(ChildSpec) ->
assert_started(supervisor:start_child(?MODULE, ChildSpec)). assert_started(supervisor:start_child(?MODULE, ChildSpec)).
-spec start_child(atom(), map()) -> ok. -spec ensure_child_started(atom(), map()) -> ok.
start_child(Mod, Opts) when is_atom(Mod) andalso is_map(Opts) -> ensure_child_started(Mod, Opts) when is_atom(Mod) andalso is_map(Opts) ->
assert_started(supervisor:start_child(?MODULE, ?CHILD(Mod, Opts))). assert_started(supervisor:start_child(?MODULE, ?CHILD(Mod, Opts))).
-spec(stop_child(any()) -> ok | {error, term()}). %% @doc Stop the child worker process.
stop_child(ChildId) -> -spec ensure_child_stopped(any()) -> ok.
ensure_child_stopped(ChildId) ->
case supervisor:terminate_child(?MODULE, ChildId) of case supervisor:terminate_child(?MODULE, ChildId) of
ok -> supervisor:delete_child(?MODULE, ChildId); ok ->
Error -> Error %% 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. end.
init([]) -> init([]) ->