summaryrefslogtreecommitdiff
path: root/src/rexi/src/rexi.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/rexi/src/rexi.erl')
-rw-r--r--src/rexi/src/rexi.erl23
1 files changed, 16 insertions, 7 deletions
diff --git a/src/rexi/src/rexi.erl b/src/rexi/src/rexi.erl
index 21e2b5388..712e4c3c3 100644
--- a/src/rexi/src/rexi.erl
+++ b/src/rexi/src/rexi.erl
@@ -80,13 +80,22 @@ kill(Node, Ref) ->
%% No rexi_EXIT message will be sent.
-spec kill_all([{node(), reference()}]) -> ok.
kill_all(NodeRefs) when is_list(NodeRefs) ->
- PerNodeMap = lists:foldl(fun({Node, Ref}, Acc) ->
- maps:update_with(Node, fun(Refs) -> [Ref | Refs] end, [Ref], Acc)
- end, #{}, NodeRefs),
- maps:map(fun(Node, Refs) ->
- rexi_utils:send(rexi_utils:server_pid(Node), cast_msg({kill_all, Refs}))
- end, PerNodeMap),
- ok.
+ lists:foreach(fun({Node, Ref}) -> kill(Node, Ref) end, NodeRefs).
+
+%% Upgrade clause. Since kill_all is a new message, nodes in a mixed
+%% cluster won't know how to process it. In that case, opt to send the older
+%% kill message. In a future release, once all the nodes know how to handle
+%% kill_all, switch to using this implemention
+%%
+%% kill_all(NodeRefs) when is_list(NodeRefs) ->
+%% PerNodeMap = lists:foldl(fun({Node, Ref}, Acc) ->
+%% maps:update_with(Node, fun(Refs) -> [Ref | Refs] end, [Ref], Acc)
+%% end, #{}, NodeRefs),
+%% maps:map(fun(Node, Refs) ->
+%% rexi_utils:send(rexi_utils:server_pid(Node), cast_msg({kill_all, Refs}))
+%% end, PerNodeMap),
+%% ok.
+
%% @equiv async_server_call(Server, self(), Request)
-spec async_server_call(pid() | {atom(),node()}, any()) -> reference().