diff --git a/apps/emqx/src/emqx_trace/emqx_trace.erl b/apps/emqx/src/emqx_trace/emqx_trace.erl index 47e1d01b1..3e8f36890 100644 --- a/apps/emqx/src/emqx_trace/emqx_trace.erl +++ b/apps/emqx/src/emqx_trace/emqx_trace.erl @@ -405,7 +405,14 @@ code_change(_, State, _Extra) -> {ok, State}. insert_new_trace(Trace) -> - transaction(fun emqx_trace_dl:insert_new_trace/1, [Trace]). + case transaction(fun emqx_trace_dl:insert_new_trace/1, [Trace]) of + {error, _} = Error -> + Error; + Res -> + %% We call this to ensure the trace is active when we return + check(), + Res + end. update_trace(Traces) -> Now = now_second(), diff --git a/apps/emqx_rule_engine/test/emqx_rule_engine_api_rule_apply_SUITE.erl b/apps/emqx_rule_engine/test/emqx_rule_engine_api_rule_apply_SUITE.erl index 52fa1a2e5..6a2547697 100644 --- a/apps/emqx_rule_engine/test/emqx_rule_engine_api_rule_apply_SUITE.erl +++ b/apps/emqx_rule_engine/test/emqx_rule_engine_api_rule_apply_SUITE.erl @@ -117,10 +117,7 @@ basic_apply_rule_test_helper(Config, TraceType, StopAfterRender) -> <<"context">> => Context, <<"stop_action_after_template_rendering">> => StopAfterRender }, - emqx_trace:check(), - ok = emqx_trace_handler_SUITE:filesync(TraceName, TraceType), Now = erlang:system_time(second) - 10, - {ok, _} = file:read_file(emqx_trace:log_file(TraceName, Now)), ?assertMatch({ok, _}, call_apply_rule_api(RuleId, Params)), ?retry( _Interval0 = 200, @@ -239,8 +236,6 @@ t_apply_rule_test_batch_separation_stop_after_render(_Config) -> SQL ), create_trace(Name, ruleid, RuleID), - emqx_trace:check(), - ok = emqx_trace_handler_SUITE:filesync(Name, ruleid), Now = erlang:system_time(second) - 10, %% Stop ParmsStopAfterRender = apply_rule_parms(true, Name),