diff options
author | Simon MacMullen <simon@rabbitmq.com> | 2012-08-07 13:30:10 +0100 |
---|---|---|
committer | Simon MacMullen <simon@rabbitmq.com> | 2012-08-07 13:30:10 +0100 |
commit | 1c5d42cc4f2a309ca4d5230e64ca65477cbb5fc6 (patch) | |
tree | 3186283a52c93fee1145733411450f01b8a4d711 | |
parent | 8aeaf3f89ffff3da206f3a8c7f9a8ef2fc22c8d7 (diff) | |
download | rabbitmq-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.erl | 17 |
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. |