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 | 18af4808ff28cd7ae7fde42ec355858905482a23 (patch) | |
| tree | 3186283a52c93fee1145733411450f01b8a4d711 | |
| parent | 4a2f85a6506260cff20a6dd4e747b93a1641823a (diff) | |
| download | rabbitmq-server-git-18af4808ff28cd7ae7fde42ec355858905482a23.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 0469f5f211..87be4df783 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. |
