summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancesco Mazzoli <francesco@rabbitmq.com>2012-08-29 16:47:05 +0100
committerFrancesco Mazzoli <francesco@rabbitmq.com>2012-08-29 16:47:05 +0100
commit263e516cc3092734bed5c1b2aefcea8b29aab309 (patch)
tree183f2e316f15a8efecc7d3e6e416b9de7c9321b9
parente5a82165b98e93ea0f5999d74d4e20ffec044733 (diff)
downloadrabbitmq-server-git-263e516cc3092734bed5c1b2aefcea8b29aab309.tar.gz
revert last change (reset when changing node from disc to ram)
mnesia, mnesia.... For some reason, this approach does not in some cases. For example, starting with nodes A, B, and C clustered and all disc, the following sequence of commands causes an error: $ rabbitmqctl -n A stop_app $ rabbitmqctl -n B stop_app $ rabbitmqctl -n B change_cluster_node_type ram # reset happens here $ rabbitmqctl -n B start_app $ rabbitmqctl -n A start_app error happens here: {error, {cannot_start_application,mnesia, {shutdown,{mnesia_sup,start,[normal,[]]}}}} I have no idea why, but it's probably connected to the fact that we can't do those changes when disc replicas are offline, and probably also related that operations like leaving the cluster require all the cluster node to be online. At this point I'd give up and put this limitation in `change_cluster_node_type', but I want to make sure that these limitations do not have repercussions in other commands. We should already take care of the "leave cluster when node offline" case, but there are probably others...
-rw-r--r--src/rabbit_mnesia.erl9
1 files changed, 0 insertions, 9 deletions
diff --git a/src/rabbit_mnesia.erl b/src/rabbit_mnesia.erl
index 4d73113716..dc27e58bdb 100644
--- a/src/rabbit_mnesia.erl
+++ b/src/rabbit_mnesia.erl
@@ -291,15 +291,6 @@ change_cluster_node_type(Type) ->
"disc nodes to the cluster first."}});
false -> ok
end,
- %% This is an horrible hack due to
- %% <http://erlang.org/pipermail/erlang-questions/2012-August/068696.html>.
- %% This is safe if the cluster situation remains the same between the
- %% cluster discovery and joining the cluster, but if for example the other
- %% cluster nodes disappear in that timeframe we are in trouble.
- ok = case is_disc_node() andalso not WantDiscNode of
- true -> reset(false);
- false -> ok
- end,
ok = init_db_with_mnesia(AllNodes, WantDiscNode, false).
update_cluster_nodes(DiscoveryNode) ->