chore: add missing traces
This commit is contained in:
parent
f84a996671
commit
cde87bce66
|
@ -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).
|
||||||
|
|
|
@ -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 = #{}).
|
||||||
|
|
Loading…
Reference in New Issue