summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2011-08-02 17:13:33 +0100
committerSimon MacMullen <simon@rabbitmq.com>2011-08-02 17:13:33 +0100
commitb18de45aaea54480827f593e1caced01c89d7e73 (patch)
treeb7a776c2e7d65cf392e10df3d2e87e722409982f
parent55c360d7b4fad37b5fd80b50b2352083c9f9d5c4 (diff)
downloadrabbitmq-server-b18de45aaea54480827f593e1caced01c89d7e73.tar.gz
Fix list function names, introduce an abstraction.
-rw-r--r--src/rabbit_channel.erl22
-rw-r--r--src/rabbit_misc.erl8
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].