summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2013-07-04 17:03:21 +0100
committerSimon MacMullen <simon@rabbitmq.com>2013-07-04 17:03:21 +0100
commitc72036e9cfb18b92ff2df372d117c0c32a5a7bf6 (patch)
tree9fc756eb1a11f78d10aad3d3e6b702cd6663d81e
parentedafeaec89aee0851db0dc56423fef5ed94cdf74 (diff)
downloadrabbitmq-server-bug25651.tar.gz
More sensible API for partitions, do not return errors.bug25651
-rw-r--r--src/rabbit_autoheal.erl3
-rw-r--r--src/rabbit_mnesia.erl3
-rw-r--r--src/rabbit_node_monitor.erl11
3 files changed, 10 insertions, 7 deletions
diff --git a/src/rabbit_autoheal.erl b/src/rabbit_autoheal.erl
index f903677b..6cbfcce3 100644
--- a/src/rabbit_autoheal.erl
+++ b/src/rabbit_autoheal.erl
@@ -181,8 +181,7 @@ partition_value(Partition) ->
all_partitions(PartitionedWith) ->
Nodes = rabbit_mnesia:cluster_nodes(all),
Partitions = [{node(), PartitionedWith} |
- [rpc:call(Node, rabbit_node_monitor, partitions, [])
- || Node <- Nodes -- [node()]]],
+ rabbit_node_monitor:partitions(Nodes -- [node()])],
all_partitions(Partitions, [Nodes]).
all_partitions([], Partitions) ->
diff --git a/src/rabbit_mnesia.erl b/src/rabbit_mnesia.erl
index 75a257f0..7e37c858 100644
--- a/src/rabbit_mnesia.erl
+++ b/src/rabbit_mnesia.erl
@@ -341,8 +341,7 @@ status() ->
end.
mnesia_partitions(Nodes) ->
- {Replies, _BadNodes} = rpc:multicall(
- Nodes, rabbit_node_monitor, partitions, []),
+ Replies = rabbit_node_monitor:partitions(Nodes),
[Reply || Reply = {_, R} <- Replies, R =/= []].
is_running() -> mnesia:system_info(is_running) =:= yes.
diff --git a/src/rabbit_node_monitor.erl b/src/rabbit_node_monitor.erl
index 7fcd1f99..1cafb50f 100644
--- a/src/rabbit_node_monitor.erl
+++ b/src/rabbit_node_monitor.erl
@@ -24,7 +24,7 @@
write_cluster_status/1, read_cluster_status/0,
update_cluster_status/0, reset_cluster_status/0]).
-export([notify_node_up/0, notify_joined_cluster/0, notify_left_cluster/1]).
--export([partitions/0, subscribe/1]).
+-export([partitions/0, partitions/1, subscribe/1]).
%% gen_server callbacks
-export([init/1, handle_call/3, handle_cast/2, handle_info/2, terminate/2,
@@ -57,7 +57,8 @@
-spec(notify_joined_cluster/0 :: () -> 'ok').
-spec(notify_left_cluster/1 :: (node()) -> 'ok').
--spec(partitions/0 :: () -> {node(), [node()]}).
+-spec(partitions/0 :: () -> [node()]).
+-spec(partitions/1 :: ([node()]) -> [{node(), [node()]}]).
-spec(subscribe/1 :: (pid()) -> 'ok').
-spec(all_rabbit_nodes_up/0 :: () -> boolean()).
@@ -187,6 +188,10 @@ notify_left_cluster(Node) ->
partitions() ->
gen_server:call(?SERVER, partitions, infinity).
+partitions(Nodes) ->
+ {Replies, _} = gen_server:multi_call(Nodes, ?SERVER, partitions, infinity),
+ Replies.
+
subscribe(Pid) ->
gen_server:cast(?SERVER, {subscribe, Pid}).
@@ -208,7 +213,7 @@ init([]) ->
autoheal = rabbit_autoheal:init()}}.
handle_call(partitions, _From, State = #state{partitions = Partitions}) ->
- {reply, {node(), Partitions}, State};
+ {reply, Partitions, State};
handle_call(_Request, _From, State) ->
{noreply, State}.