summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorAlvaro Videla <videlalvaro@gmail.com>2015-11-16 12:59:52 +0100
committerAlvaro Videla <videlalvaro@gmail.com>2015-11-16 12:59:52 +0100
commitda5bc96f3a0cad9b41a1735ec101faa4d6351d8b (patch)
tree680377a0da96d415fe24213a0ed8a8037d370429 /src
parentf553e08ba40de18725b3315346669db5667b228e (diff)
downloadrabbitmq-server-git-da5bc96f3a0cad9b41a1735ec101faa4d6351d8b.tar.gz
makes sures the aggregator process doesn't hang
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_control_main.erl16
1 files changed, 14 insertions, 2 deletions
diff --git a/src/rabbit_control_main.erl b/src/rabbit_control_main.erl
index 2799d510d0..5d061252d0 100644
--- a/src/rabbit_control_main.erl
+++ b/src/rabbit_control_main.erl
@@ -769,8 +769,20 @@ call(Node, {Mod, Fun, Args}, InfoKeys, ToBinUtf8, Timeout) ->
true -> lists:map(fun list_to_binary_utf8/1, Args);
false -> Args
end,
- spawn_link(rabbit_cli, rpc_call, [Node, Mod, Fun, Args0, Ref = make_ref(),
- Pid = self(), Timeout]),
+ Ref = make_ref(),
+ Pid = self(),
+ spawn_link(
+ fun () ->
+ case rabbit_cli:rpc_call(Node, Mod, Fun, Args0,
+ Ref, Pid, Timeout) of
+ {error, _} = Error ->
+ Pid ! {error, Error};
+ {bad_argument, _} = Error ->
+ Pid ! {error, Error};
+ _ ->
+ ok
+ end
+ end),
rabbit_control_misc:wait_for_info_messages(
Pid, Ref, InfoKeys, fun display_info_message/2, Timeout).