fix(emqx_exhook): fix some error of indent and dialyzer

This commit is contained in:
lafirest 2022-01-17 17:16:58 +08:00
parent 9a6a8a778b
commit 86af3a9b8f
3 changed files with 31 additions and 35 deletions

View File

@ -32,6 +32,14 @@
-define(BAD_REQUEST, 'BAD_REQUEST'). -define(BAD_REQUEST, 'BAD_REQUEST').
-define(BAD_RPC, 'BAD_RPC'). -define(BAD_RPC, 'BAD_RPC').
-type rpc_result() :: {error, any()}
| any().
-dialyzer([{nowarn_function, [ fill_cluster_server_info/5
, nodes_server_info/5
, fill_server_hooks_info/4
]}]).
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
%% schema %% schema
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
@ -144,7 +152,7 @@ fields(node_metrics) ->
fields(node_status) -> fields(node_status) ->
[ {node, mk(string(), #{})} [ {node, mk(string(), #{})}
, {status, mk(enum([running, waiting, stopped, not_found, error]), #{})} , {status, mk(enum([running, waiting, stopped, error]), #{})}
]; ];
fields(hook_info) -> fields(hook_info) ->
@ -387,6 +395,7 @@ call_cluster(Module, Fun, Args) ->
Nodes = mria_mnesia:running_nodes(), Nodes = mria_mnesia:running_nodes(),
[{Node, rpc_call(Node, Module, Fun, Args)} || Node <- Nodes]. [{Node, rpc_call(Node, Module, Fun, Args)} || Node <- Nodes].
-spec rpc_call(node(), atom(), atom(), list()) -> rpc_result().
rpc_call(Node, Module, Fun, Args) when Node =:= node() -> rpc_call(Node, Module, Fun, Args) when Node =:= node() ->
erlang:apply(Module, Fun, Args); erlang:apply(Module, Fun, Args);

View File

@ -21,13 +21,12 @@
%% API %% API
-export([ init/0, succeed/2, failed/2 -export([ init/0, succeed/2, failed/2
, update/1, new_metrics_info/0, servers_metrics/0 , update/1, new_metrics_info/0, servers_metrics/0
, delete_server/1, server_metrics/1, hooks_metrics/1 , on_server_deleted/1, server_metrics/1, hooks_metrics/1
, metrics_aggregate/1, metrics_aggregate_by_key/2, hooks_metrics_aggregate/1 , metrics_aggregate/1, metrics_aggregate_by_key/2
, metrics_aggregate_by/2 , metrics_aggregate_by/2
]). ]).
-record(metrics, { -record(metrics, { index :: index()
index :: index()
, succeed = 0 :: non_neg_integer() , succeed = 0 :: non_neg_integer()
, failed = 0 :: non_neg_integer() , failed = 0 :: non_neg_integer()
, rate = 0 :: non_neg_integer() , rate = 0 :: non_neg_integer()
@ -69,7 +68,7 @@ new_metric_info() ->
max_rate => 0 max_rate => 0
}. }.
-spec succeed(server_name(), hookpoint()) -> integer(). -spec succeed(server_name(), hookpoint()) -> ok.
succeed(Server, Hook) -> succeed(Server, Hook) ->
inc(Server, Hook, #metrics.succeed, inc(Server, Hook, #metrics.succeed,
#metrics{index = {Server, Hook} #metrics{index = {Server, Hook}
@ -77,7 +76,7 @@ succeed(Server, Hook) ->
,succeed = 1 ,succeed = 1
}). }).
-spec failed(server_name(), hookpoint()) -> integer(). -spec failed(server_name(), hookpoint()) -> ok.
failed(Server, Hook) -> failed(Server, Hook) ->
inc(Server, Hook, #metrics.failed, inc(Server, Hook, #metrics.failed,
#metrics{index = {Server, Hook} #metrics{index = {Server, Hook}
@ -104,8 +103,8 @@ update(Interval) ->
ets:foldl(Fun, true, ?HOOKS_METRICS). ets:foldl(Fun, true, ?HOOKS_METRICS).
-spec delete_server(server_name()) -> true. -spec on_server_deleted(server_name()) -> true.
delete_server(Name) -> on_server_deleted(Name) ->
ets:match_delete(?HOOKS_METRICS, ets:match_delete(?HOOKS_METRICS,
{metrics, {Name, '_'}, '_', '_', '_', '_', '_'}). {metrics, {Name, '_'}, '_', '_', '_', '_', '_'}).
@ -185,30 +184,17 @@ metrics_aggregate_by_key(Key, MetricsL) ->
metrics_aggregate_by(fun(X) -> maps:get(Key, X, new_metrics_info()) end, metrics_aggregate_by(fun(X) -> maps:get(Key, X, new_metrics_info()) end,
MetricsL). MetricsL).
-spec hooks_metrics_aggregate(list(hooks_metrics())) -> hooks_metrics().
hooks_metrics_aggregate([]) ->
#{};
hooks_metrics_aggregate([H | _] = MapL) ->
Hooks = maps:keys(H),
Fold = fun(Hook, Acc) ->
Metrics = metrics_aggregate_by_key(Hook, MapL),
Acc#{Hook => Metrics}
end,
lists:foldl(Fold, #{}, Hooks).
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
%%% Internal functions %%% Internal functions
%%-------------------------------------------------------------------- %%--------------------------------------------------------------------
-spec inc(server_name(), hookpoint(), pos_integer(), #metrics{}) -> integer(). -spec inc(server_name(), hookpoint(), pos_integer(), #metrics{}) -> ok.
inc(Server, Hook, Pos, Default) -> inc(Server, Hook, Pos, Default) ->
Index = {Server, Hook}, Index = {Server, Hook},
ets:update_counter(?HOOKS_METRICS, _ = ets:update_counter(?HOOKS_METRICS,
Index, Index,
[{#metrics.window_rate, 1}, {Pos, 1}], [{#metrics.window_rate, 1}, {Pos, 1}],
Default). Default),
ok.
-spec new_metrics_info() -> metrics_info(). -spec new_metrics_info() -> metrics_info().
new_metrics_info() -> new_metrics_info() ->
@ -231,7 +217,8 @@ metrics_add(#{succeed := S1, failed := F1, rate := R1, max_rate := M1}
, max_rate := M1 + M2 , max_rate := M1 + M2
}. }.
-spec metrics_aggregate_by(fun((any()) -> metrics_info()), list(metrics_info())) -> metrics_info(). -spec metrics_aggregate_by(fun((X) -> metrics_info()), list(X)) -> metrics_info()
when X :: any().
metrics_aggregate_by(_, []) -> metrics_aggregate_by(_, []) ->
new_metric_info(); new_metric_info();

View File

@ -241,7 +241,7 @@ handle_call({update_config, {delete, ToDelete}, _}, _From, State) ->
orders := maps:remove(ToDelete, Orders) orders := maps:remove(ToDelete, Orders)
}, },
emqx_exhook_metrics:delete_server(ToDelete), emqx_exhook_metrics:on_server_deleted(ToDelete),
{reply, ok, State3}; {reply, ok, State3};