summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorVlad Alexandru Ionescu <vlad@rabbitmq.com>2011-02-20 16:37:07 -0600
committerVlad Alexandru Ionescu <vlad@rabbitmq.com>2011-02-20 16:37:07 -0600
commit95f2121cc5e3da61960c06ab95258074a26b531b (patch)
treea5d75de04e8ae61cbeb7a48850790ad9dac0dc00
parent3a09b6284ebe1395de7c02a225f88facc8303073 (diff)
downloadrabbitmq-server-95f2121cc5e3da61960c06ab95258074a26b531b.tar.gz
less wait_for_tables
-rw-r--r--src/rabbit_mnesia.erl7
-rw-r--r--src/rabbit_upgrade.erl1
-rw-r--r--src/rabbit_upgrade_functions.erl5
3 files changed, 8 insertions, 5 deletions
diff --git a/src/rabbit_mnesia.erl b/src/rabbit_mnesia.erl
index eac7dd14..8b8f2f2d 100644
--- a/src/rabbit_mnesia.erl
+++ b/src/rabbit_mnesia.erl
@@ -20,7 +20,7 @@
-export([ensure_mnesia_dir/0, dir/0, status/0, init/0, is_db_empty/0,
cluster/1, force_cluster/1, reset/0, force_reset/0,
is_clustered/0, running_clustered_nodes/0, all_clustered_nodes/0,
- empty_ram_only_tables/0, copy_db/1]).
+ empty_ram_only_tables/0, copy_db/1, wait_for_tables/1]).
-export([table_names/0]).
@@ -54,6 +54,7 @@
-spec(empty_ram_only_tables/0 :: () -> 'ok').
-spec(create_tables/0 :: () -> 'ok').
-spec(copy_db/1 :: (file:filename()) -> rabbit_types:ok_or_error(any())).
+-spec(wait_for_tables/1 :: ([atom()]) -> 'ok').
-endif.
@@ -386,7 +387,6 @@ init_db(ClusterNodes, Force) ->
case {Nodes, mnesia:system_info(use_dir), all_clustered_nodes()} of
{[], true, [_]} ->
%% True single disc node, attempt upgrade
- ok = wait_for_tables(),
case rabbit_upgrade:maybe_upgrade() of
ok -> ok = wait_for_tables(),
ensure_schema_ok();
@@ -490,8 +490,7 @@ copy_db(Destination) ->
mnesia:stop(),
case rabbit_misc:recursive_copy(dir(), Destination) of
ok ->
- rabbit_misc:ensure_ok(mnesia:start(), cannot_start_mnesia),
- ok = wait_for_tables();
+ rabbit_misc:ensure_ok(mnesia:start(), cannot_start_mnesia);
{error, E} ->
{error, E}
end.
diff --git a/src/rabbit_upgrade.erl b/src/rabbit_upgrade.erl
index b0a71523..89acc10c 100644
--- a/src/rabbit_upgrade.erl
+++ b/src/rabbit_upgrade.erl
@@ -98,7 +98,6 @@ vertices(Module, Steps) ->
edges(_Module, Steps) ->
[{Require, StepName} || {StepName, Requires} <- Steps, Require <- Requires].
-
unknown_heads(Heads, G) ->
[H || H <- Heads, digraph:vertex(G, H) =:= false].
diff --git a/src/rabbit_upgrade_functions.erl b/src/rabbit_upgrade_functions.erl
index 36d1f2dc..d6a79590 100644
--- a/src/rabbit_upgrade_functions.erl
+++ b/src/rabbit_upgrade_functions.erl
@@ -49,6 +49,7 @@
%% point.
remove_user_scope() ->
+ rabbit_mnesia:wait_for_tables([rabbit_user_permission]),
transform(
rabbit_user_permission,
fun ({user_permission, UV, {permission, _Scope, Conf, Write, Read}}) ->
@@ -57,6 +58,7 @@ remove_user_scope() ->
[user_vhost, permission]).
hash_passwords() ->
+ rabbit_mnesia:wait_for_tables([rabbit_user]),
transform(
rabbit_user,
fun ({user, Username, Password, IsAdmin}) ->
@@ -66,6 +68,7 @@ hash_passwords() ->
[username, password_hash, is_admin]).
add_ip_to_listener() ->
+ rabbit_mnesia:wait_for_tables([rabbit_listener]),
transform(
rabbit_listener,
fun ({listener, Node, Protocol, Host, Port}) ->
@@ -75,6 +78,7 @@ add_ip_to_listener() ->
internal_exchanges() ->
Tables = [rabbit_exchange, rabbit_durable_exchange],
+ rabbit_mnesia:wait_for_tables(Tables),
AddInternalFun =
fun ({exchange, Name, Type, Durable, AutoDelete, Args}) ->
{exchange, Name, Type, Durable, AutoDelete, false, Args}
@@ -86,6 +90,7 @@ internal_exchanges() ->
ok.
user_to_internal_user() ->
+ rabbit_mnesia:wait_for_tables([rabbit_user]),
transform(
rabbit_user,
fun({user, Username, PasswordHash, IsAdmin}) ->