diff options
| author | Alexandru Scvortov <alexandru@rabbitmq.com> | 2010-06-10 12:45:51 +0100 |
|---|---|---|
| committer | Alexandru Scvortov <alexandru@rabbitmq.com> | 2010-06-10 12:45:51 +0100 |
| commit | 5e209eabc1abdf937d7d4759977f6d6d4b7e3a54 (patch) | |
| tree | e1b22327d77ab4b9ed2f467f72cd7801fb1564e9 | |
| parent | 9bc9ceb9c3ea48d59c9323a1cfe1edc3d3abaae5 (diff) | |
| download | rabbitmq-server-git-5e209eabc1abdf937d7d4759977f6d6d4b7e3a54.tar.gz | |
fixed crash when rabbit:status/0 called after rabbit was stopped
| -rw-r--r-- | src/rabbit.erl | 2 | ||||
| -rw-r--r-- | src/rabbit_mnesia.erl | 25 |
2 files changed, 17 insertions, 10 deletions
diff --git a/src/rabbit.erl b/src/rabbit.erl index 7a2faa68f0..65c02cd2b2 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 20ee5232a1..1d4515ce87 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() -> |
