summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2012-08-07 13:30:10 +0100
committerSimon MacMullen <simon@rabbitmq.com>2012-08-07 13:30:10 +0100
commit1c5d42cc4f2a309ca4d5230e64ca65477cbb5fc6 (patch)
tree3186283a52c93fee1145733411450f01b8a4d711
parent8aeaf3f89ffff3da206f3a8c7f9a8ef2fc22c8d7 (diff)
downloadrabbitmq-server-1c5d42cc4f2a309ca4d5230e64ca65477cbb5fc6.tar.gz
Support changing master (umm, which actually turned out to be a lot easier than expected, thanks Matthew).
-rw-r--r--src/rabbit_mirror_queue_misc.erl17
1 files changed, 7 insertions, 10 deletions
diff --git a/src/rabbit_mirror_queue_misc.erl b/src/rabbit_mirror_queue_misc.erl
index 0469f5f2..87be4df7 100644
--- a/src/rabbit_mirror_queue_misc.erl
+++ b/src/rabbit_mirror_queue_misc.erl
@@ -259,14 +259,11 @@ update_mirrors(OldQ = #amqqueue{name = QName, pid = QPid},
{false, false} -> ok;
{true, false} -> rabbit_amqqueue:stop_mirroring(QPid);
{false, true} -> rabbit_amqqueue:start_mirroring(QPid);
- {true, true} -> {OldMNode, OldSNodes} = actual_queue_nodes(OldQ),
- {NewMNode, NewSNodes} = suggested_queue_nodes(NewQ),
- case OldMNode of
- NewMNode -> ok;
- _ -> io:format("TODO: master needs to change for ~p~n", [NewQ])
- end,
- Add = NewSNodes -- OldSNodes,
- Remove = OldSNodes -- NewSNodes,
- [ok = drop_mirror(QName, SNode) || SNode <- Remove],
- [ok = add_mirror(QName, SNode) || SNode <- Add]
+ {true, true} -> All = fun ({A,B}) -> [A|B] end,
+ OldNodes = All(actual_queue_nodes(OldQ)),
+ NewNodes = All(suggested_queue_nodes(NewQ)),
+ Add = NewNodes -- OldNodes,
+ Remove = OldNodes -- NewNodes,
+ [ok = drop_mirror(QName, Node) || Node <- Remove],
+ [ok = add_mirror(QName, Node) || Node <- Add]
end.