From 29f4faa7dd9494f6d90de96184a1f297719939d7 Mon Sep 17 00:00:00 2001 From: YoukiLin <1045735402@qq.com> Date: Sat, 16 Mar 2019 18:23:18 +0800 Subject: [PATCH] Add badtcp clause to handle gen_rpc (#2314) --- src/emqx_rpc.erl | 26 +++++++++++++++++++++++--- 1 file changed, 23 insertions(+), 3 deletions(-) diff --git a/src/emqx_rpc.erl b/src/emqx_rpc.erl index e0d82f400..5f8e2d0d6 100644 --- a/src/emqx_rpc.erl +++ b/src/emqx_rpc.erl @@ -21,10 +21,30 @@ -define(RPC, gen_rpc). call(Node, Mod, Fun, Args) -> - ?RPC:call(Node, Mod, Fun, Args). + filter_result(?RPC:call(Node, Mod, Fun, Args)). multicall(Nodes, Mod, Fun, Args) -> - ?RPC:multicall(Nodes, Mod, Fun, Args). + filter_results(?RPC:multicall(Nodes, Mod, Fun, Args)). cast(Node, Mod, Fun, Args) -> - ?RPC:cast(Node, Mod, Fun, Args). + filter_result(?RPC:cast(Node, Mod, Fun, Args)). + +filter_result(Delivery) -> + case Delivery of + {badrpc, Reason} -> {badrpc, Reason}; + {badtcp, Reason} -> {badrpc, Reason}; + Delivery1 -> Delivery1 + end. + +filter_results(Deliverys) -> + filter_results(Deliverys, []). + +filter_results([], Acc) -> + Acc; +filter_results([Delivery | WaitDelivery], Acc) -> + case Delivery of + {badrpc, Reason} -> [{badrpc, Reason} | Acc], filter_results(WaitDelivery, Acc); + {badtcp, Reason} -> [{badrpc, Reason} | Acc], filter_results(WaitDelivery, Acc); + Delivery1 -> [Delivery1 | Acc], filter_results(WaitDelivery, Acc) + end. +