Merge branch 'master' into rabbitmq-management-499-followup
This commit is contained in:
commit
1eef0d2e2c
|
|
@ -112,7 +112,7 @@ invoke(Pids, Name, FunOrMFA) when is_list(Pids) ->
|
|||
%% infinity, and thus there is no process spawned in order to do
|
||||
%% the sending. Thus calls can't overtake preceding calls/casts.
|
||||
{Replies, BadNodes} =
|
||||
case orddict:fetch_keys(Grouped) of
|
||||
case maps:keys(Grouped) of
|
||||
[] -> {[], []};
|
||||
RemoteNodes -> gen_server2:multi_call(
|
||||
RemoteNodes, delegate(self(), Name, RemoteNodes),
|
||||
|
|
@ -120,7 +120,7 @@ invoke(Pids, Name, FunOrMFA) when is_list(Pids) ->
|
|||
end,
|
||||
BadPids = [{Pid, {exit, {nodedown, BadNode}, []}} ||
|
||||
BadNode <- BadNodes,
|
||||
Pid <- orddict:fetch(BadNode, Grouped)],
|
||||
Pid <- maps:get(BadNode, Grouped)],
|
||||
ResultsNoNode = lists:append([safe_invoke(LocalPids, FunOrMFA) |
|
||||
[Results || {_Node, Results} <- Replies]]),
|
||||
lists:foldl(
|
||||
|
|
@ -159,7 +159,7 @@ invoke_no_result(Pid, FunOrMFA) when is_pid(Pid) ->
|
|||
RemoteNode = node(Pid),
|
||||
gen_server2:abcast([RemoteNode], delegate(self(), ?DEFAULT_NAME, [RemoteNode]),
|
||||
{invoke, FunOrMFA,
|
||||
orddict:from_list([{RemoteNode, [Pid]}])}),
|
||||
maps:from_list([{RemoteNode, [Pid]}])}),
|
||||
ok;
|
||||
invoke_no_result([], _FunOrMFA) -> %% optimisation
|
||||
ok;
|
||||
|
|
@ -170,11 +170,11 @@ invoke_no_result([Pid], FunOrMFA) ->
|
|||
RemoteNode = node(Pid),
|
||||
gen_server2:abcast([RemoteNode], delegate(self(), ?DEFAULT_NAME, [RemoteNode]),
|
||||
{invoke, FunOrMFA,
|
||||
orddict:from_list([{RemoteNode, [Pid]}])}),
|
||||
maps:from_list([{RemoteNode, [Pid]}])}),
|
||||
ok;
|
||||
invoke_no_result(Pids, FunOrMFA) when is_list(Pids) ->
|
||||
{LocalPids, Grouped} = group_pids_by_node(Pids),
|
||||
case orddict:fetch_keys(Grouped) of
|
||||
case maps:keys(Grouped) of
|
||||
[] -> ok;
|
||||
RemoteNodes -> gen_server2:abcast(
|
||||
RemoteNodes, delegate(self(), ?DEFAULT_NAME, RemoteNodes),
|
||||
|
|
@ -192,9 +192,9 @@ group_pids_by_node(Pids) ->
|
|||
{[Pid | Local], Remote};
|
||||
(Pid, {Local, Remote}) ->
|
||||
{Local,
|
||||
orddict:update(
|
||||
maps:update_with(
|
||||
node(Pid), fun (List) -> [Pid | List] end, [Pid], Remote)}
|
||||
end, {[], orddict:new()}, Pids).
|
||||
end, {[], maps:new()}, Pids).
|
||||
|
||||
delegate_name(Name, Hash) ->
|
||||
list_to_atom(Name ++ integer_to_list(Hash)).
|
||||
|
|
@ -228,7 +228,7 @@ init([Name]) ->
|
|||
{backoff, ?HIBERNATE_AFTER_MIN, ?HIBERNATE_AFTER_MIN, ?DESIRED_HIBERNATE}}.
|
||||
|
||||
handle_call({invoke, FunOrMFA, Grouped}, _From, State = #state{node = Node}) ->
|
||||
{reply, safe_invoke(orddict:fetch(Node, Grouped), FunOrMFA), State,
|
||||
{reply, safe_invoke(maps:get(Node, Grouped), FunOrMFA), State,
|
||||
hibernate}.
|
||||
|
||||
handle_cast({monitor, MonitoringPid, Pid},
|
||||
|
|
@ -260,7 +260,7 @@ handle_cast({demonitor, MonitoringPid, Pid},
|
|||
{noreply, State#state{monitors = Monitors1}, hibernate};
|
||||
|
||||
handle_cast({invoke, FunOrMFA, Grouped}, State = #state{node = Node}) ->
|
||||
_ = safe_invoke(orddict:fetch(Node, Grouped), FunOrMFA),
|
||||
_ = safe_invoke(maps:get(Node, Grouped), FunOrMFA),
|
||||
{noreply, State, hibernate}.
|
||||
|
||||
handle_info({'DOWN', Ref, process, Pid, Info},
|
||||
|
|
|
|||
|
|
@ -57,7 +57,7 @@
|
|||
pid_change_node/2, node_to_fake_pid/1]).
|
||||
-export([version_compare/2, version_compare/3]).
|
||||
-export([version_minor_equivalent/2]).
|
||||
-export([dict_cons/3, orddict_cons/3, gb_trees_cons/3]).
|
||||
-export([dict_cons/3, orddict_cons/3, maps_cons/3, gb_trees_cons/3]).
|
||||
-export([gb_trees_fold/3, gb_trees_foreach/2]).
|
||||
-export([all_module_attributes/1, build_acyclic_graph/3]).
|
||||
-export([const/1]).
|
||||
|
|
@ -788,6 +788,9 @@ dict_cons(Key, Value, Dict) ->
|
|||
orddict_cons(Key, Value, Dict) ->
|
||||
orddict:update(Key, fun (List) -> [Value | List] end, [Value], Dict).
|
||||
|
||||
maps_cons(Key, Value, Map) ->
|
||||
maps:update_with(Key, fun (List) -> [Value | List] end, [Value], Map).
|
||||
|
||||
gb_trees_cons(Key, Value, Tree) ->
|
||||
case gb_trees:lookup(Key, Tree) of
|
||||
{value, Values} -> gb_trees:update(Key, [Value | Values], Tree);
|
||||
|
|
@ -942,12 +945,13 @@ format_message_queue(_Opt, MQ) ->
|
|||
case Len > 100 of
|
||||
false -> priority_queue:to_list(MQ);
|
||||
true -> {summary,
|
||||
orddict:to_list(
|
||||
maps:to_list(
|
||||
lists:foldl(
|
||||
fun ({P, V}, Counts) ->
|
||||
orddict:update_counter(
|
||||
{P, format_message_queue_entry(V)}, 1, Counts)
|
||||
end, orddict:new(), priority_queue:to_list(MQ)))}
|
||||
maps:update_with(
|
||||
{P, format_message_queue_entry(V)},
|
||||
fun(Old) -> Old + 1 end, 1, Counts)
|
||||
end, maps:new(), priority_queue:to_list(MQ)))}
|
||||
end}.
|
||||
|
||||
format_message_queue_entry(V) when is_atom(V) ->
|
||||
|
|
|
|||
Loading…
Reference in New Issue