summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rabbit_mnesia.erl9
-rw-r--r--src/rabbit_upgrade.erl19
-rw-r--r--src/rabbit_upgrade_functions.erl8
3 files changed, 17 insertions, 19 deletions
diff --git a/src/rabbit_mnesia.erl b/src/rabbit_mnesia.erl
index 997b12d429..26fda4e902 100644
--- a/src/rabbit_mnesia.erl
+++ b/src/rabbit_mnesia.erl
@@ -492,14 +492,7 @@ move_db() ->
ok.
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();
- {error, E} ->
- {error, E}
- end.
+ rabbit_misc:recursive_copy(dir(), Destination).
create_tables() ->
lists:foreach(fun ({Tab, TabDef}) ->
diff --git a/src/rabbit_upgrade.erl b/src/rabbit_upgrade.erl
index 4bdff65a3b..d0fdbf0897 100644
--- a/src/rabbit_upgrade.erl
+++ b/src/rabbit_upgrade.erl
@@ -72,11 +72,15 @@ upgrader(Nodes) ->
primary_upgrade(Upgrades, DiscNodes) ->
Others = DiscNodes -- [node()],
- %% TODO this should happen after backing up!
- rabbit_misc:ensure_ok(mnesia:start(), cannot_start_mnesia),
- force_tables(),
- [{atomic, ok} = mnesia:del_table_copy(schema, Node) || Node <- Others],
- apply_upgrades(Upgrades),
+ apply_upgrades(
+ Upgrades,
+ fun () ->
+ info("Upgrades: Breaking cluster~n", []),
+ rabbit_misc:ensure_ok(mnesia:start(), cannot_start_mnesia),
+ force_tables(),
+ [{atomic, ok} = mnesia:del_table_copy(schema, Node)
+ || Node <- Others]
+ end),
ok.
force_tables() ->
@@ -114,7 +118,7 @@ maybe_upgrade(Scope) ->
case upgrades_required(Scope) of
version_not_available -> version_not_available;
[] -> ok;
- Upgrades -> apply_upgrades(Upgrades)
+ Upgrades -> apply_upgrades(Upgrades, fun() -> ok end)
end.
read_version() ->
@@ -201,7 +205,7 @@ heads(G) ->
%% -------------------------------------------------------------------
-apply_upgrades(Upgrades) ->
+apply_upgrades(Upgrades, Fun) ->
LockFile = lock_filename(dir()),
case rabbit_misc:lock_file(LockFile) of
ok ->
@@ -216,6 +220,7 @@ apply_upgrades(Upgrades) ->
%% is not intuitive. Remove it.
ok = file:delete(lock_filename(BackupDir)),
info("Upgrades: Mnesia dir backed up to ~p~n", [BackupDir]),
+ Fun(),
[apply_upgrade(Upgrade) || Upgrade <- Upgrades],
info("Upgrades: All upgrades applied successfully~n", []),
ok = write_version(),
diff --git a/src/rabbit_upgrade_functions.erl b/src/rabbit_upgrade_functions.erl
index b9b46f9a82..151b498dd8 100644
--- a/src/rabbit_upgrade_functions.erl
+++ b/src/rabbit_upgrade_functions.erl
@@ -110,10 +110,6 @@ one() ->
[username, password_hash, is_admin, extra]).
two() ->
- ok = rabbit_misc:write_term_file(filename:join(rabbit_mnesia:dir(), "test"),
- [test]).
-
-three() ->
mnesia(
rabbit_user,
fun ({internal_user, Username, Hash, IsAdmin, _}) ->
@@ -121,6 +117,10 @@ three() ->
end,
[username, password_hash, is_admin]).
+three() ->
+ ok = rabbit_misc:write_term_file(filename:join(rabbit_mnesia:dir(), "test"),
+ [test]).
+
%%--------------------------------------------------------------------
mnesia(TableName, Fun, FieldList) ->