summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2010-11-18 16:22:59 +0000
committerSimon MacMullen <simon@rabbitmq.com>2010-11-18 16:22:59 +0000
commite7a7de3479960cc68f8549a7d517203d6f46f5d4 (patch)
tree6c281feef11feec8a89e193a264ec78df88120ca
parent09a05a6c8a202ba81b26678d8477e2fb6aac9e6c (diff)
downloadrabbitmq-server-e7a7de3479960cc68f8549a7d517203d6f46f5d4.tar.gz
Stop mnesia while taking the backup
-rw-r--r--src/rabbit_mnesia.erl3
-rw-r--r--src/rabbit_upgrade.erl3
2 files changed, 5 insertions, 1 deletions
diff --git a/src/rabbit_mnesia.erl b/src/rabbit_mnesia.erl
index da81f884..e8547041 100644
--- a/src/rabbit_mnesia.erl
+++ b/src/rabbit_mnesia.erl
@@ -34,7 +34,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, empty_ram_only_tables/0]).
+ is_clustered/0, empty_ram_only_tables/0, wait_for_tables/0]).
-export([table_names/0]).
@@ -65,6 +65,7 @@
-spec(is_clustered/0 :: () -> boolean()).
-spec(empty_ram_only_tables/0 :: () -> 'ok').
-spec(create_tables/0 :: () -> 'ok').
+-spec(wait_for_tables/0 :: () -> 'ok').
-endif.
diff --git a/src/rabbit_upgrade.erl b/src/rabbit_upgrade.erl
index 4b7b4342..83ab2595 100644
--- a/src/rabbit_upgrade.erl
+++ b/src/rabbit_upgrade.erl
@@ -126,6 +126,7 @@ apply_upgrades(Upgrades) ->
ok = file:close(Lock),
BackupDir = dir() ++ "-upgrade-backup",
info("Upgrades: ~w to apply~n", [length(Upgrades)]),
+ mnesia:stop(),
case rabbit_misc:recursive_copy(dir(), BackupDir) of
ok ->
%% We need to make the backup after creating the lock file
@@ -141,6 +142,8 @@ apply_upgrades(Upgrades) ->
ok = file:delete(LockFile),
exit({could_not_back_up_mnesia_dir, E})
end,
+ rabbit_misc:ensure_ok(mnesia:start(), cannot_start_mnesia),
+ rabbit_mnesia:wait_for_tables(),
info("Upgrades: Mnesia dir backed up to ~p~n", [BackupDir]),
[apply_upgrade(Upgrade) || Upgrade <- Upgrades],
info("Upgrades: All upgrades applied successfully~n", []),