chore: add missing traces

This commit is contained in:
Thales Macedo Garitezi 2024-03-18 13:07:13 -03:00
parent f84a996671
commit cde87bce66
2 changed files with 63 additions and 16 deletions

View File

@ -39,7 +39,7 @@
%% Internal functions; exported for tests %% Internal functions; exported for tests
-export([ -export([
evaluate_sql_check/2 evaluate_sql_check/3
]). ]).
%%------------------------------------------------------------------------------ %%------------------------------------------------------------------------------
@ -210,11 +210,15 @@ parse_sql_check(SQL) ->
%% Internal functions %% Internal functions
%%------------------------------------------------------------------------------ %%------------------------------------------------------------------------------
evaluate_sql_check(Check, Message) -> evaluate_sql_check(Check, Validation, Message) ->
#{ #{
fields := Fields, fields := Fields,
conditions := Conditions conditions := Conditions
} = Check, } = Check,
#{
name := Name,
log_failure_at := FailureLogLevel
} = Validation,
{Data, _} = emqx_rule_events:eventmsg_publish(Message), {Data, _} = emqx_rule_events:eventmsg_publish(Message),
try emqx_rule_runtime:evaluate_select(Fields, Data, Conditions) of try emqx_rule_runtime:evaluate_select(Fields, Data, Conditions) of
{ok, _} -> {ok, _} ->
@ -222,16 +226,38 @@ evaluate_sql_check(Check, Message) ->
false -> false ->
false false
catch catch
throw:_Reason -> throw:Reason ->
%% TODO: log? ?TRACE(
FailureLogLevel,
?TRACE_TAG,
"validation_sql_check_throw",
#{
validation => Name,
reason => Reason
}
),
false; false;
_Class:_Error:_Stacktrace -> Class:Error:Stacktrace ->
%% TODO: log? ?TRACE(
FailureLogLevel,
?TRACE_TAG,
"validation_sql_check_failure",
#{
validation => Name,
kind => Class,
reason => Error,
stacktrace => Stacktrace
}
),
false false
end. end.
evaluate_schema_check(Check, #message{payload = Data}) -> evaluate_schema_check(Check, Validation, #message{payload = Data}) ->
#{schema := SerdeName} = Check, #{schema := SerdeName} = Check,
#{
name := Name,
log_failure_at := FailureLogLevel
} = Validation,
ExtraArgs = ExtraArgs =
case Check of case Check of
#{type := protobuf, message_name := MessageName} -> #{type := protobuf, message_name := MessageName} ->
@ -243,9 +269,29 @@ evaluate_schema_check(Check, #message{payload = Data}) ->
emqx_schema_registry_serde:handle_rule_function(schema_check, [SerdeName, Data | ExtraArgs]) emqx_schema_registry_serde:handle_rule_function(schema_check, [SerdeName, Data | ExtraArgs])
catch catch
error:{serde_not_found, _} -> error:{serde_not_found, _} ->
?TRACE(
FailureLogLevel,
?TRACE_TAG,
"validation_schema_check_schema_not_found",
#{
validation => Name,
schema_name => SerdeName
}
),
false; false;
_Class:_Error:_Stacktrace -> Class:Error:Stacktrace ->
%% TODO: log? ?TRACE(
FailureLogLevel,
?TRACE_TAG,
"validation_schema_check_failure",
#{
validation => Name,
schema_name => SerdeName,
kind => Class,
reason => Error,
stacktrace => Stacktrace
}
),
false false
end. end.
@ -356,7 +402,7 @@ run_validation(#{strategy := all_pass} = Validation, Message) ->
failure_action := FailureAction failure_action := FailureAction
} = Validation, } = Validation,
Fun = fun(Check, Acc) -> Fun = fun(Check, Acc) ->
case run_check(Check, Message) of case run_check(Check, Validation, Message) of
true -> {cont, Acc}; true -> {cont, Acc};
false -> {halt, FailureAction} false -> {halt, FailureAction}
end end
@ -367,14 +413,14 @@ run_validation(#{strategy := any_pass} = Validation, Message) ->
checks := Checks, checks := Checks,
failure_action := FailureAction failure_action := FailureAction
} = Validation, } = Validation,
case lists:any(fun(C) -> run_check(C, Message) end, Checks) of case lists:any(fun(C) -> run_check(C, Validation, Message) end, Checks) of
true -> true ->
ok; ok;
false -> false ->
FailureAction FailureAction
end. end.
run_check(#{type := sql} = Check, Message) -> run_check(#{type := sql} = Check, Validation, Message) ->
evaluate_sql_check(Check, Message); evaluate_sql_check(Check, Validation, Message);
run_check(Check, Message) -> run_check(Check, Validation, Message) ->
evaluate_schema_check(Check, Message). evaluate_schema_check(Check, Validation, Message).

View File

@ -54,7 +54,8 @@ sql_check(SQL) ->
eval_sql(Message, SQL) -> eval_sql(Message, SQL) ->
{ok, Check} = emqx_message_validation:parse_sql_check(SQL), {ok, Check} = emqx_message_validation:parse_sql_check(SQL),
emqx_message_validation:evaluate_sql_check(Check, Message). Validation = #{log_failure_at => warning, name => <<"validation">>},
emqx_message_validation:evaluate_sql_check(Check, Validation, Message).
message() -> message() ->
message(_Opts = #{}). message(_Opts = #{}).