summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2014-12-08 16:57:36 +0000
committerSimon MacMullen <simon@rabbitmq.com>2014-12-08 16:57:36 +0000
commite76617eacf49f459700f29fa66cbb377465e085e (patch)
tree0c4d75ea522183bac7b645acd0d9d65ed9d70438
parent864e67f5e853bd9185406b6f9aedd0c91824ca29 (diff)
downloadrabbitmq-server-e76617eacf49f459700f29fa66cbb377465e085e.tar.gz
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.
-rw-r--r--src/rabbit_mnesia_rename.erl27
1 files 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) ->