From b18de45aaea54480827f593e1caced01c89d7e73 Mon Sep 17 00:00:00 2001 From: Simon MacMullen Date: Tue, 2 Aug 2011 17:13:33 +0100 Subject: Fix list function names, introduce an abstraction. --- src/rabbit_channel.erl | 22 +++++++++------------- src/rabbit_misc.erl | 8 ++++++++ 2 files changed, 17 insertions(+), 13 deletions(-) diff --git a/src/rabbit_channel.erl b/src/rabbit_channel.erl index 9dbef43a..7e40ae57 100644 --- a/src/rabbit_channel.erl +++ b/src/rabbit_channel.erl @@ -22,7 +22,7 @@ -export([start_link/10, do/2, do/3, flush/1, shutdown/1]). -export([send_command/2, deliver/4, flushed/2, confirm/2]). --export([list/0, info_keys/0, info/1, info/2, info_all/0, info_all/1]). +-export([list_local/0, info_keys/0, info/1, info/2, info_all/0, info_all/1]). -export([refresh_config_all/0, emit_stats/1, ready_for_close/1]). -export([force_event_refresh/0]). @@ -85,7 +85,7 @@ -> 'ok'). -spec(flushed/2 :: (pid(), pid()) -> 'ok'). -spec(confirm/2 ::(pid(), [non_neg_integer()]) -> 'ok'). --spec(list/0 :: () -> [pid()]). +-spec(list_local/0 :: () -> [pid()]). -spec(info_keys/0 :: () -> rabbit_types:info_keys()). -spec(info/1 :: (pid()) -> rabbit_types:infos()). -spec(info/2 :: (pid(), rabbit_types:info_keys()) -> rabbit_types:infos()). @@ -130,13 +130,11 @@ flushed(Pid, QPid) -> confirm(Pid, MsgSeqNos) -> gen_server2:cast(Pid, {confirm, MsgSeqNos, self()}). -list() -> +list_local() -> pg_local:get_members(rabbit_channels). -list_all_nodes() -> - [Pid || - Node <- rabbit_mnesia:running_clustered_nodes(), - Pid <- rpc:call(Node, rabbit_channel, list, [])]. +list() -> + rabbit_misc:rpc_list_all_nodes(rabbit_channel, list_local, []). info_keys() -> ?INFO_KEYS. @@ -150,15 +148,14 @@ info(Pid, Items) -> end. info_all() -> - rabbit_misc:filter_exit_map(fun (C) -> info(C) end, list_all_nodes()). + rabbit_misc:filter_exit_map(fun (C) -> info(C) end, list()). info_all(Items) -> - rabbit_misc:filter_exit_map(fun (C) -> info(C, Items) end, - list_all_nodes()). + rabbit_misc:filter_exit_map(fun (C) -> info(C, Items) end, list()). refresh_config_all() -> rabbit_misc:upmap( - fun (C) -> gen_server2:call(C, refresh_config) end, list()), + fun (C) -> gen_server2:call(C, refresh_config) end, list_local()), ok. emit_stats(Pid) -> @@ -168,8 +165,7 @@ ready_for_close(Pid) -> gen_server2:cast(Pid, ready_for_close). force_event_refresh() -> - rabbit_misc:filter_exit_map(fun (C) -> force_event_refresh(C) end, - list_all_nodes()). + rabbit_misc:filter_exit_map(fun (C) -> force_event_refresh(C) end, list()). force_event_refresh(Pid) -> gen_server2:cast(Pid, force_event_refresh). diff --git a/src/rabbit_misc.erl b/src/rabbit_misc.erl index 3bbfb1d7..e9f2cc15 100644 --- a/src/rabbit_misc.erl +++ b/src/rabbit_misc.erl @@ -58,6 +58,7 @@ -export([is_process_alive/1]). -export([pget/2, pget/3, pget_or_die/2]). -export([format_message_queue/2]). +-export([rpc_list_all_nodes/3]). %%---------------------------------------------------------------------------- @@ -207,6 +208,7 @@ -spec(pget/3 :: (term(), [term()], term()) -> term()). -spec(pget_or_die/2 :: (term(), [term()]) -> term() | no_return()). -spec(format_message_queue/2 :: (any(), priority_queue:q()) -> term()). +-spec(rpc_list_all_nodes/3 :: (atom(), atom(), [any()]) -> [any()]). -endif. @@ -942,3 +944,9 @@ format_message_queue_entry(V) when is_tuple(V) -> list_to_tuple([format_message_queue_entry(E) || E <- tuple_to_list(V)]); format_message_queue_entry(_V) -> '_'. + +rpc_list_all_nodes(M, F, A) -> + [Res || Node <- [node() | nodes()], Res <- case rpc:call(Node, M, F, A) of + {badrpc, _} -> []; + R -> R + end]. -- cgit v1.2.1