diff options
author | Matthew Sackman <matthew@lshift.net> | 2009-10-29 13:54:11 +0000 |
---|---|---|
committer | Matthew Sackman <matthew@lshift.net> | 2009-10-29 13:54:11 +0000 |
commit | 5cff5d8bf0cdd8475043dcb53a12ab2e52e66da3 (patch) | |
tree | 60d59652f88ea6e9406e0e91c541032066858418 | |
parent | 932e608a4db2c30c283b46a5dab4233f1a85901b (diff) | |
download | rabbitmq-server-5cff5d8bf0cdd8475043dcb53a12ab2e52e66da3.tar.gz |
placation of Matthias - more sensible rabbit_mnesia API
-rw-r--r-- | src/rabbit.erl | 5 | ||||
-rw-r--r-- | src/rabbit_mnesia.erl | 40 |
2 files changed, 22 insertions, 23 deletions
diff --git a/src/rabbit.erl b/src/rabbit.erl index 1db85f4e..c66a44a7 100644 --- a/src/rabbit.erl +++ b/src/rabbit.erl @@ -210,7 +210,10 @@ start(normal, []) -> stop(_State) -> terminated_ok = error_logger:delete_report_handler(rabbit_error_logger), ok = rabbit_alarm:stop(), - ok = rabbit_mnesia:maybe_empty_ram_only_tables(), + ok = case rabbit_mnesia:is_clustered() of + true -> ok; + false -> rabbit_mnesia:empty_ram_only_tables() + end, ok. %--------------------------------------------------------------------------- diff --git a/src/rabbit_mnesia.erl b/src/rabbit_mnesia.erl index 03054ece..749038db 100644 --- a/src/rabbit_mnesia.erl +++ b/src/rabbit_mnesia.erl @@ -32,7 +32,8 @@ -module(rabbit_mnesia). -export([ensure_mnesia_dir/0, dir/0, status/0, init/0, is_db_empty/0, - cluster/1, reset/0, force_reset/0, maybe_empty_ram_only_tables/0]). + cluster/1, reset/0, force_reset/0, is_clustered/0, + empty_ram_only_tables/0]). -export([table_names/0]). @@ -54,7 +55,8 @@ -spec(cluster/1 :: ([erlang_node()]) -> 'ok'). -spec(reset/0 :: () -> 'ok'). -spec(force_reset/0 :: () -> 'ok'). --spec(maybe_empty_ram_only_tables/0 :: () -> 'ok'). +-spec(is_clustered/0 :: () -> boolean()). +-spec(empty_ram_only_tables/0 :: () -> 'ok'). -spec(create_tables/0 :: () -> 'ok'). -endif. @@ -99,11 +101,20 @@ cluster(ClusterNodes) -> reset() -> reset(false). force_reset() -> reset(true). -maybe_empty_ram_only_tables() -> - case is_clustered() of - true -> ok; - false -> empty_ram_only_tables() - end. +is_clustered() -> + RunningNodes = mnesia:system_info(running_db_nodes), + [node()] /= RunningNodes andalso [] /= RunningNodes. + +empty_ram_only_tables() -> + Node = node(), + lists:foreach( + fun (TabName) -> + case lists:member(Node, mnesia:table_info(TabName, ram_copies)) of + true -> {atomic, ok} = mnesia:clear_table(TabName); + false -> ok + end + end, table_names()), + ok. %%-------------------------------------------------------------------- @@ -440,18 +451,3 @@ leave_cluster(Nodes, RunningNodes) -> false -> throw({error, {no_running_cluster_nodes, Nodes, RunningNodes}}) end. - -is_clustered() -> - RunningNodes = mnesia:system_info(running_db_nodes), - [node()] /= RunningNodes andalso [] /= RunningNodes. - -empty_ram_only_tables() -> - Node = node(), - lists:foreach( - fun (TabName) -> - case lists:member(Node, mnesia:table_info(TabName, ram_copies)) of - true -> {atomic, ok} = mnesia:clear_table(TabName); - false -> ok - end - end, table_names()), - ok. |