From c72036e9cfb18b92ff2df372d117c0c32a5a7bf6 Mon Sep 17 00:00:00 2001 From: Simon MacMullen Date: Thu, 4 Jul 2013 17:03:21 +0100 Subject: More sensible API for partitions, do not return errors. --- src/rabbit_autoheal.erl | 3 +-- src/rabbit_mnesia.erl | 3 +-- src/rabbit_node_monitor.erl | 11 ++++++++--- 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}. -- cgit v1.2.1