diff --git a/apps/emqx_opentelemetry/src/emqx_otel.erl b/apps/emqx_opentelemetry/src/emqx_otel.erl index 0b0e16cab..a9d9af0ea 100644 --- a/apps/emqx_opentelemetry/src/emqx_otel.erl +++ b/apps/emqx_opentelemetry/src/emqx_otel.erl @@ -17,7 +17,7 @@ -module(emqx_otel). -include_lib("emqx/include/logger.hrl"). --export([start_link/1]). +-export([start_link/1, cleanup/0]). -export([get_cluster_gauge/1, get_stats_gauge/1, get_vm_gauge/1, get_metric_counter/1]). -export([init/1, handle_continue/2, handle_call/3, handle_cast/2, handle_info/2, terminate/2]). @@ -25,7 +25,6 @@ start_link(Conf) -> gen_server:start_link({local, ?MODULE}, ?MODULE, Conf, []). init(Conf) -> - erlang:process_flag(trap_exit, true), {ok, #{}, {continue, {setup, Conf}}}. handle_continue({setup, Conf}, State) -> @@ -42,7 +41,6 @@ handle_info(_Msg, State) -> {noreply, State}. terminate(_Reason, _State) -> - cleanup(), ok. setup(Conf = #{enable := true}) -> diff --git a/apps/emqx_opentelemetry/src/emqx_otel_sup.erl b/apps/emqx_opentelemetry/src/emqx_otel_sup.erl index 2240cca03..6d04a0c2e 100644 --- a/apps/emqx_opentelemetry/src/emqx_otel_sup.erl +++ b/apps/emqx_opentelemetry/src/emqx_otel_sup.erl @@ -42,6 +42,7 @@ start_otel(Conf) -> -spec stop_otel() -> ok | {error, term()}. stop_otel() -> + ok = emqx_otel:cleanup(), case supervisor:terminate_child(?MODULE, ?WORKER) of ok -> supervisor:delete_child(?MODULE, ?WORKER); {error, not_found} -> ok;