summaryrefslogtreecommitdiff
path: root/src/rabbit_mnesia_offline.erl
diff options
context:
space:
mode:
Diffstat (limited to 'src/rabbit_mnesia_offline.erl')
-rw-r--r--src/rabbit_mnesia_offline.erl57
1 files changed, 31 insertions, 26 deletions
diff --git a/src/rabbit_mnesia_offline.erl b/src/rabbit_mnesia_offline.erl
index ae72462e..86b5c370 100644
--- a/src/rabbit_mnesia_offline.erl
+++ b/src/rabbit_mnesia_offline.erl
@@ -19,7 +19,7 @@
-export([rename_local_node/2]).
-export([rename_remote_node/2]).
--export([maybe_complete_rename/2]).
+-export([maybe_complete_rename/1]).
%%----------------------------------------------------------------------------
@@ -65,38 +65,43 @@ rename_local_node(FromNode, ToNode) ->
stop_mnesia()
end.
-maybe_complete_rename(primary, _AllNodes) ->
- case rabbit_file:read_term_file(rename_config_name()) of
- {ok, [{_FromNode, _ToNode}]} ->
- %% We are alone, restore the backup we previously took
- ToBackup = to_backup_name(),
- io:format(" * Loading backup '~s'~n", [ToBackup]),
- ok = mnesia:install_fallback(ToBackup, [{scope, local}]),
- start_mnesia(),
- stop_mnesia(),
- rabbit_file:delete(rename_config_name()),
- rabbit_file:delete(from_backup_name()),
- rabbit_file:delete(to_backup_name()),
- ok;
- _ ->
- ok
- end;
+nodes_running(Nodes) ->
+ [N || N <- Nodes, rabbit:is_running(N)].
+
-maybe_complete_rename(secondary, AllNodes) ->
+maybe_complete_rename(AllNodes) ->
case rabbit_file:read_term_file(rename_config_name()) of
{ok, [{FromNode, ToNode}]} ->
- rabbit_upgrade:secondary_upgrade(AllNodes),
- [Another | _] = rabbit_mnesia:cluster_nodes(running) -- [node()],
- ok = rpc:call(Another, ?MODULE, rename_remote_node,
- [FromNode, ToNode]),
- rabbit_file:delete(rename_config_name()),
- rabbit_file:delete(from_backup_name()),
- rabbit_file:delete(to_backup_name()),
- ok;
+ case rabbit_upgrade:nodes_running(AllNodes) of
+ [] -> complete_rename_primary();
+ _ -> complete_rename_secondary(FromNode, ToNode, AllNodes)
+ end;
_ ->
ok
end.
+complete_rename_primary() ->
+ %% We are alone, restore the backup we previously took
+ ToBackup = to_backup_name(),
+ io:format(" * Loading backup '~s'~n", [ToBackup]),
+ ok = mnesia:install_fallback(ToBackup, [{scope, local}]),
+ start_mnesia(),
+ stop_mnesia(),
+ rabbit_file:delete(rename_config_name()),
+ rabbit_file:delete(from_backup_name()),
+ rabbit_file:delete(to_backup_name()),
+ ok.
+
+complete_rename_secondary(FromNode, ToNode, AllNodes) ->
+ rabbit_upgrade:secondary_upgrade(AllNodes),
+ [Another | _] = rabbit_mnesia:cluster_nodes(running) -- [node()],
+ ok = rpc:call(Another, ?MODULE, rename_remote_node,
+ [FromNode, ToNode]),
+ rabbit_file:delete(rename_config_name()),
+ rabbit_file:delete(from_backup_name()),
+ rabbit_file:delete(to_backup_name()),
+ ok.
+
from_backup_name() -> rabbit_mnesia:dir() ++ "/rename-backup-from".
to_backup_name() -> rabbit_mnesia:dir() ++ "/rename-backup-to".
rename_config_name() -> rabbit_mnesia:dir() ++ "/rename-pending.config".