summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Klishin <michael@novemberain.com>2015-11-16 18:33:32 +0300
committerMichael Klishin <michael@novemberain.com>2015-11-16 18:33:32 +0300
commit8c5ff0aa3e7bd2d5fbe1a2537319ca91688cfc20 (patch)
treea795c809c30ac222627f62143b0dd065a3ce45ca
parentcf2c1732da0c1c01108e1dbff977bd9858273e36 (diff)
parentda5bc96f3a0cad9b41a1735ec101faa4d6351d8b (diff)
downloadrabbitmq-server-git-8c5ff0aa3e7bd2d5fbe1a2537319ca91688cfc20.tar.gz
Merge pull request #425 from rabbitmq/rabbitmq-server-417
makes sures the aggregator process doesn't hang
-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).