fix(emqx_rpc): Add types and remove impossible clauses

This commit is contained in:
k32 2022-01-07 11:10:55 +01:00
parent 2307040bec
commit de89f7b253
2 changed files with 24 additions and 6 deletions

View File

@ -27,6 +27,12 @@
, multicall/5
]).
-export_type([ badrpc/0
, call_result/0
, cast_result/0
, multicall_result/0
]).
-compile({inline,
[ rpc_node/1
, rpc_nodes/1
@ -34,23 +40,37 @@
-define(DefaultClientNum, 1).
-type badrpc() :: {badrpc, term()} | {badtcp, term()}.
-type call_result() :: term() | badrpc().
-type cast_result() :: true.
-type multicall_result() :: {_Results :: [term()], _BadNodes :: [node()]}.
-spec call(node(), module(), atom(), list()) -> call_result().
call(Node, Mod, Fun, Args) ->
filter_result(gen_rpc:call(rpc_node(Node), Mod, Fun, Args)).
-spec call(term(), node(), module(), atom(), list()) -> call_result().
call(Key, Node, Mod, Fun, Args) ->
filter_result(gen_rpc:call(rpc_node({Key, Node}), Mod, Fun, Args)).
-spec multicall([node()], module(), atom(), list()) -> multicall_result().
multicall(Nodes, Mod, Fun, Args) ->
filter_result(gen_rpc:multicall(rpc_nodes(Nodes), Mod, Fun, Args)).
gen_rpc:multicall(rpc_nodes(Nodes), Mod, Fun, Args).
-spec multicall(term(), [node()], module(), atom(), list()) -> multicall_result().
multicall(Key, Nodes, Mod, Fun, Args) ->
filter_result(gen_rpc:multicall(rpc_nodes([{Key, Node} || Node <- Nodes]), Mod, Fun, Args)).
gen_rpc:multicall(rpc_nodes([{Key, Node} || Node <- Nodes]), Mod, Fun, Args).
-spec cast(node(), module(), atom(), list()) -> cast_result().
cast(Node, Mod, Fun, Args) ->
filter_result(gen_rpc:cast(rpc_node(Node), Mod, Fun, Args)).
gen_rpc:cast(rpc_node(Node), Mod, Fun, Args).
-spec cast(term(), node(), module(), atom(), list()) -> cast_result().
cast(Key, Node, Mod, Fun, Args) ->
filter_result(gen_rpc:cast(rpc_node({Key, Node}), Mod, Fun, Args)).
gen_rpc:cast(rpc_node({Key, Node}), Mod, Fun, Args).
rpc_node(Node) when is_atom(Node) ->
{Node, rand:uniform(max_client_num())};

View File

@ -60,7 +60,6 @@ prop_nodes() ->
begin
Nodes = punch(Nodes0),
case emqx_rpc:multicall(Nodes, erlang, system_time, []) of
{badrpc, _Reason} -> true;
{RealResults, RealBadNodes}
when is_list(RealResults);
is_list(RealBadNodes) ->
@ -74,7 +73,6 @@ prop_nodes_with_key() ->
begin
Nodes = punch(Nodes0),
case emqx_rpc:multicall(Key, Nodes, erlang, system_time, []) of
{badrpc, _Reason} -> true;
{RealResults, RealBadNodes}
when is_list(RealResults);
is_list(RealBadNodes) ->