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

View File

@ -54,7 +54,8 @@ sql_check(SQL) ->
eval_sql(Message, 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(_Opts = #{}).