From e76617eacf49f459700f29fa66cbb377465e085e Mon Sep 17 00:00:00 2001 From: Simon MacMullen Date: Mon, 8 Dec 2014 16:57:36 +0000 Subject: WIP clustererer compatibility: install the fallback and "upgrade" mnesia at rename_cluster_node time, instead of during next boot. This means we need to faff around a bit making sure we do not contact other nodes during the upgrade, but also that on-disk data structures are left in a consistent state for the clusterererer to find them. --- src/rabbit_mnesia_rename.erl | 27 ++++++++++++++------------- 1 file changed, 14 insertions(+), 13 deletions(-) diff --git a/src/rabbit_mnesia_rename.erl b/src/rabbit_mnesia_rename.erl index 786f9115..d93f8ea3 100644 --- a/src/rabbit_mnesia_rename.erl +++ b/src/rabbit_mnesia_rename.erl @@ -69,6 +69,14 @@ rename(Node, NodeMapList) -> ok = rabbit_file:write_term_file(rename_config_name(), [{FromNode, ToNode}]), convert_config_files(NodeMap), + rabbit_control_main:become(ToNode), + ok = mnesia:install_fallback(ToBackup, [{scope, local}]), + application:set_env(kernel, dist_auto_connect, never), + start_mnesia(), + rabbit_table:force_load(), + rabbit_table:wait_for_replicated(), + stop_mnesia(), + rabbit_mnesia:force_load_next_boot(), ok after stop_mnesia() @@ -88,11 +96,12 @@ finish(FromNode, ToNode, AllNodes) -> _ -> finish_secondary(FromNode, ToNode, AllNodes) end; FromNode -> - rabbit_log:info( - "Abandoning rename from ~s to ~s since we are still ~s~n", - [FromNode, ToNode, FromNode]), - [{ok, _} = file:copy(backup_of_conf(F), F) || F <- config_files()], - delete_rename_files(); + exit(todo_fix_this_case); + %% rabbit_log:info( + %% "Abandoning rename from ~s to ~s since we are still ~s~n", + %% [FromNode, ToNode, FromNode]), + %% [{ok, _} = file:copy(backup_of_conf(F), F) || F <- config_files()], + %% delete_rename_files(); _ -> %% Boot will almost certainly fail but we might as %% well just log this @@ -104,15 +113,7 @@ finish(FromNode, ToNode, AllNodes) -> finish_primary(FromNode, ToNode) -> rabbit_log:info("Restarting as primary after rename from ~s to ~s~n", [FromNode, ToNode]), - %% We are alone, restore the backup we previously took - ToBackup = to_backup_name(), - ok = mnesia:install_fallback(ToBackup, [{scope, local}]), - start_mnesia(), - rabbit_table:force_load(), - rabbit_table:wait_for_replicated(), - stop_mnesia(), delete_rename_files(), - rabbit_mnesia:force_load_next_boot(), ok. finish_secondary(FromNode, ToNode, AllNodes) -> -- cgit v1.2.1