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