diff options
author | Matthew Sackman <matthew@rabbitmq.com> | 2011-07-07 12:01:46 +0100 |
---|---|---|
committer | Matthew Sackman <matthew@rabbitmq.com> | 2011-07-07 12:01:46 +0100 |
commit | 6d6fb807e4a6b57dee8a72e650fa550d3ed23a4c (patch) | |
tree | f68db015e8b4da8c445d2b272c42ac0cbcf5115b /src/rabbit_amqqueue_process.erl | |
parent | 1e72197c5720adb868498a119edd78a3444e3198 (diff) | |
download | rabbitmq-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.erl | 28 |
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}). |