diff --git a/apps/emqx_exhook/src/emqx_exhook_mngr.erl b/apps/emqx_exhook/src/emqx_exhook_mngr.erl index 8c15fc330..1a6e10bf0 100644 --- a/apps/emqx_exhook/src/emqx_exhook_mngr.erl +++ b/apps/emqx_exhook/src/emqx_exhook_mngr.erl @@ -195,8 +195,10 @@ handle_info(_Info, State) -> terminate(_Reason, State = #state{running = Running}) -> _ = maps:fold(fun(Name, _, AccIn) -> - {ok, NAccIn} = do_unload_server(Name, AccIn), - NAccIn + case do_unload_server(Name, AccIn) of + {ok, NAccIn} -> NAccIn; + _ -> AccIn + end end, State, Running), _ = unload_exhooks(), ok. diff --git a/apps/emqx_exhook/src/emqx_exhook_server.erl b/apps/emqx_exhook/src/emqx_exhook_server.erl index 94ac4df61..924e5d7ba 100644 --- a/apps/emqx_exhook/src/emqx_exhook_server.erl +++ b/apps/emqx_exhook/src/emqx_exhook_server.erl @@ -73,17 +73,13 @@ -export_type([server/0]). --type options() :: #{ url := uri_string:uri_string() - , ssl => map() - }. - -dialyzer({nowarn_function, [inc_metrics/2]}). %%-------------------------------------------------------------------- %% Load/Unload APIs %%-------------------------------------------------------------------- --spec load(binary(), options(), map()) -> {ok, server()} | {error, term()} . +-spec load(binary(), map(), map()) -> {ok, server()} | {error, term()} . load(Name, Opts0, ReqOpts) -> {SvrAddr, ClientOpts} = channel_opts(Opts0), case emqx_exhook_sup:start_grpc_client_channel( @@ -268,7 +264,7 @@ match_topic_filter(_, []) -> match_topic_filter(TopicName, TopicFilter) -> lists:any(fun(F) -> emqx_topic:match(TopicName, F) end, TopicFilter). --spec do_call(string(), atom(), map(), map()) -> {ok, map()} | {error, term()}. +-spec do_call(binary(), atom(), map(), map()) -> {ok, map()} | {error, term()}. do_call(ChannName, Fun, Req, ReqOpts) -> Options = ReqOpts#{channel => ChannName}, ?LOG(debug, "Call ~0p:~0p(~0p, ~0p)", [?PB_CLIENT_MOD, Fun, Req, Options]), diff --git a/apps/emqx_exhook/src/emqx_exhook_sup.erl b/apps/emqx_exhook/src/emqx_exhook_sup.erl index ba92e3f96..32f8fa472 100644 --- a/apps/emqx_exhook/src/emqx_exhook_sup.erl +++ b/apps/emqx_exhook/src/emqx_exhook_sup.erl @@ -65,13 +65,13 @@ env(Key, Def) -> %%-------------------------------------------------------------------- -spec start_grpc_client_channel( - string(), + binary(), uri_string:uri_string(), grpc_client:options()) -> {ok, pid()} | {error, term()}. start_grpc_client_channel(Name, SvrAddr, Options) -> grpc_client_sup:create_channel_pool(Name, SvrAddr, Options). --spec stop_grpc_client_channel(string()) -> ok. +-spec stop_grpc_client_channel(binary()) -> ok. stop_grpc_client_channel(Name) -> %% Avoid crash due to hot-upgrade had unloaded %% grpc application