diff options
| -rw-r--r-- | src/rabbit_mnesia.erl | 9 | ||||
| -rw-r--r-- | src/rabbit_upgrade.erl | 19 | ||||
| -rw-r--r-- | src/rabbit_upgrade_functions.erl | 8 |
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) -> |
