1%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
2%%% ktn_rpc: functions useful for RPC mechanisms
3%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%%
4-module(ktn_rpc).
5
6-export(
7  [ multicall/3
8  ]).
9
10%% @doc runs rpc:multicall(M, F, A) and emits warnigns for errors,
11%%      but returns 'ok'.
12-spec multicall(module(), atom(), [term()]) ->
13  ok.
14multicall(M, F, A) ->
15  {Results, BadNodes} = rpc:multicall(M, F, A),
16  Errors = [Error || {badrpc, Error} <- Results],
17  case {Errors, BadNodes} of
18    {[], []}       -> ok;
19    {[], BadNodes} ->
20        {error, {bad_nodes, [{mfa, {M, F, A}}, {nodes, BadNodes}]}};
21    {Errors, _}    -> {error, {unknown, [{mfa, {M, F, A}}, {errors, Errors}]}}
22  end.
23