summaryrefslogtreecommitdiff
path: root/src/rabbit_amqqueue_process.erl
diff options
context:
space:
mode:
authorMatthew Sackman <matthew@rabbitmq.com>2011-07-07 12:01:46 +0100
committerMatthew Sackman <matthew@rabbitmq.com>2011-07-07 12:01:46 +0100
commit6d6fb807e4a6b57dee8a72e650fa550d3ed23a4c (patch)
treef68db015e8b4da8c445d2b272c42ac0cbcf5115b /src/rabbit_amqqueue_process.erl
parent1e72197c5720adb868498a119edd78a3444e3198 (diff)
downloadrabbitmq-server-6d6fb807e4a6b57dee8a72e650fa550d3ed23a4c.tar.gz
Support querying slaves for their status
Diffstat (limited to 'src/rabbit_amqqueue_process.erl')
-rw-r--r--src/rabbit_amqqueue_process.erl28
1 files changed, 20 insertions, 8 deletions
diff --git a/src/rabbit_amqqueue_process.erl b/src/rabbit_amqqueue_process.erl
index e388ccf2..cb8a485e 100644
--- a/src/rabbit_amqqueue_process.erl
+++ b/src/rabbit_amqqueue_process.erl
@@ -74,8 +74,8 @@
messages,
consumers,
memory,
- backing_queue_status,
- slave_pids
+ slaves,
+ backing_queue_status
]).
-define(CREATION_EVENT_KEYS,
@@ -802,14 +802,26 @@ i(consumers, State) ->
i(memory, _) ->
{memory, M} = process_info(self(), memory),
M;
-i(backing_queue_status, #q{backing_queue_state = BQS, backing_queue = BQ}) ->
- BQ:status(BQS);
-i(slave_pids, #q{q = #amqqueue{name = Name}}) ->
- {ok, #amqqueue{slave_pids = SPids}} = rabbit_amqqueue:lookup(Name),
- SPids;
i(mirror_nodes, #q{q = #amqqueue{name = Name}}) ->
{ok, #amqqueue{mirror_nodes = MNodes}} = rabbit_amqqueue:lookup(Name),
- MNodes;
+ case MNodes of
+ undefined -> '';
+ _ -> MNodes
+ end;
+i(slaves, #q{q = #amqqueue{name = Name}}) ->
+ {ok, #amqqueue{mirror_nodes = MNodes,
+ slave_pids = SPids}} = rabbit_amqqueue:lookup(Name),
+ case MNodes of
+ undefined ->
+ '';
+ _ ->
+ {Results, _Bad} =
+ delegate:invoke(
+ SPids, fun (Pid) -> rabbit_mirror_queue_slave:info(Pid) end),
+ [Result || {_Pid, Result} <- Results]
+ end;
+i(backing_queue_status, #q{backing_queue_state = BQS, backing_queue = BQ}) ->
+ BQ:status(BQS);
i(Item, _) ->
throw({bad_argument, Item}).