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_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
%%--------------------------------------------------------------------
@ -144,7 +152,7 @@ fields(node_metrics) ->
fields(node_status) ->
[ {node, mk(string(), #{})}
, {status, mk(enum([running, waiting, stopped, not_found, error]), #{})}
, {status, mk(enum([running, waiting, stopped, error]), #{})}
];
fields(hook_info) ->
@ -387,6 +395,7 @@ call_cluster(Module, Fun, Args) ->
Nodes = mria_mnesia:running_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() ->
erlang:apply(Module, Fun, Args);

View File

@ -21,13 +21,12 @@
%% API
-export([ init/0, succeed/2, failed/2
, update/1, new_metrics_info/0, servers_metrics/0
, delete_server/1, server_metrics/1, hooks_metrics/1
, metrics_aggregate/1, metrics_aggregate_by_key/2, hooks_metrics_aggregate/1
, on_server_deleted/1, server_metrics/1, hooks_metrics/1
, metrics_aggregate/1, metrics_aggregate_by_key/2
, metrics_aggregate_by/2
]).
-record(metrics, {
index :: index()
-record(metrics, { index :: index()
, succeed = 0 :: non_neg_integer()
, failed = 0 :: non_neg_integer()
, rate = 0 :: non_neg_integer()
@ -69,7 +68,7 @@ new_metric_info() ->
max_rate => 0
}.
-spec succeed(server_name(), hookpoint()) -> integer().
-spec succeed(server_name(), hookpoint()) -> ok.
succeed(Server, Hook) ->
inc(Server, Hook, #metrics.succeed,
#metrics{index = {Server, Hook}
@ -77,7 +76,7 @@ succeed(Server, Hook) ->
,succeed = 1
}).
-spec failed(server_name(), hookpoint()) -> integer().
-spec failed(server_name(), hookpoint()) -> ok.
failed(Server, Hook) ->
inc(Server, Hook, #metrics.failed,
#metrics{index = {Server, Hook}
@ -104,8 +103,8 @@ update(Interval) ->
ets:foldl(Fun, true, ?HOOKS_METRICS).
-spec delete_server(server_name()) -> true.
delete_server(Name) ->
-spec on_server_deleted(server_name()) -> true.
on_server_deleted(Name) ->
ets:match_delete(?HOOKS_METRICS,
{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,
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
%%--------------------------------------------------------------------
-spec inc(server_name(), hookpoint(), pos_integer(), #metrics{}) -> integer().
-spec inc(server_name(), hookpoint(), pos_integer(), #metrics{}) -> ok.
inc(Server, Hook, Pos, Default) ->
Index = {Server, Hook},
ets:update_counter(?HOOKS_METRICS,
_ = ets:update_counter(?HOOKS_METRICS,
Index,
[{#metrics.window_rate, 1}, {Pos, 1}],
Default).
Default),
ok.
-spec new_metrics_info() -> metrics_info().
new_metrics_info() ->
@ -231,7 +217,8 @@ metrics_add(#{succeed := S1, failed := F1, rate := R1, max_rate := M1}
, 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(_, []) ->
new_metric_info();

View File

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