summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorAlexandru Scvortov <alexandru@rabbitmq.com>2010-06-10 12:45:51 +0100
committerAlexandru Scvortov <alexandru@rabbitmq.com>2010-06-10 12:45:51 +0100
commit94d1329300e919634ab858f15bf77aa0a72c0cf4 (patch)
treee1b22327d77ab4b9ed2f467f72cd7801fb1564e9
parent755c4ad125938778eac7b5013f85dd010b5c38f3 (diff)
downloadrabbitmq-server-94d1329300e919634ab858f15bf77aa0a72c0cf4.tar.gz
fixed crash when rabbit:status/0 called after rabbit was stopped
-rw-r--r--src/rabbit.erl2
-rw-r--r--src/rabbit_mnesia.erl25
2 files changed, 17 insertions, 10 deletions
diff --git a/src/rabbit.erl b/src/rabbit.erl
index 7a2faa68..65c02cd2 100644
--- a/src/rabbit.erl
+++ b/src/rabbit.erl
@@ -185,7 +185,7 @@
-type(log_location() :: 'tty' | 'undefined' | string()).
-type(file_suffix() :: binary()).
--type(node_type() :: disc_only | disc | ram).
+-type(node_type() :: disc_only | disc | ram | unknown).
-spec(prepare/0 :: () -> 'ok').
-spec(start/0 :: () -> 'ok').
diff --git a/src/rabbit_mnesia.erl b/src/rabbit_mnesia.erl
index 20ee5232..1d4515ce 100644
--- a/src/rabbit_mnesia.erl
+++ b/src/rabbit_mnesia.erl
@@ -47,7 +47,7 @@
-ifdef(use_specs).
--type(node_type() :: disc_only | disc | ram).
+-type(node_type() :: disc_only | disc | ram | unknown).
-spec(status/0 :: () -> [{'nodes', [{node_type(), [erlang_node()]}]} |
{'running_nodes', [erlang_node()]}]).
@@ -67,14 +67,21 @@
%%----------------------------------------------------------------------------
status() ->
- [{nodes, [{Key, Nodes} ||
- {Key, CopyType} <- [{disc_only, disc_only_copies},
- {disc, disc_copies},
- {ram, ram_copies}],
- begin
- Nodes = mnesia:table_info(schema, CopyType),
- Nodes =/= []
- end]},
+ [{nodes, try [{Key, Nodes} ||
+ {Key, CopyType} <- [{disc_only, disc_only_copies},
+ {disc, disc_copies},
+ {ram, ram_copies}],
+ begin
+ Nodes = mnesia:table_info(schema, CopyType),
+ Nodes =/= []
+ end]
+ catch
+ exit:{aborted, _Reason} ->
+ case mnesia:system_info(db_nodes) of
+ [] -> [];
+ Nodes -> [{unknown, Nodes}]
+ end
+ end},
{running_nodes, mnesia:system_info(running_db_nodes)}].
init() ->