summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2013-02-13 10:57:31 +0000
committerSimon MacMullen <simon@rabbitmq.com>2013-02-13 10:57:31 +0000
commite29e8ccbb9447565613055dedd5ca1c98141c799 (patch)
tree934e7f695799d134a9c5b7387bb0f5aea0a836d7 /src
parent0d320d66d5f5e63adc564f37006869364795bbc0 (diff)
downloadrabbitmq-server-git-e29e8ccbb9447565613055dedd5ca1c98141c799.tar.gz
Auto sync when policy changes to require it, in case we are already mirrored but have unsynced slaves at that point.
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_mirror_queue_misc.erl18
1 files changed, 11 insertions, 7 deletions
diff --git a/src/rabbit_mirror_queue_misc.erl b/src/rabbit_mirror_queue_misc.erl
index 4dd50bce41..8192b09246 100644
--- a/src/rabbit_mirror_queue_misc.erl
+++ b/src/rabbit_mirror_queue_misc.erl
@@ -179,19 +179,14 @@ add_mirror(QName, MirrorNode) ->
end
end).
-start_child(Name, MirrorNode, Q = #amqqueue{pid = QPid}) ->
+start_child(Name, MirrorNode, Q) ->
case rabbit_misc:with_exit_handler(
rabbit_misc:const({ok, down}),
fun () ->
rabbit_mirror_queue_slave_sup:start_child(MirrorNode, [Q])
end) of
{ok, SPid} when is_pid(SPid) ->
- case rabbit_policy:get(<<"ha-sync-mode">>, Q) of
- {ok,<<"automatic">>} ->
- spawn(fun() -> rabbit_amqqueue:sync_mirrors(QPid) end);
- _ ->
- ok
- end,
+ maybe_auto_sync(Q),
rabbit_log:info("Adding mirror of ~s on node ~p: ~p~n",
[rabbit_misc:rs(Name), MirrorNode, SPid]),
{ok, started};
@@ -310,6 +305,14 @@ is_mirrored(Q) ->
_ -> false
end.
+maybe_auto_sync(Q = #amqqueue{pid = QPid}) ->
+ case policy(<<"ha-sync-mode">>, Q) of
+ <<"automatic">> ->
+ spawn(fun() -> rabbit_amqqueue:sync_mirrors(QPid) end);
+ _ ->
+ ok
+ end.
+
update_mirrors(OldQ = #amqqueue{pid = QPid},
NewQ = #amqqueue{pid = QPid}) ->
case {is_mirrored(OldQ), is_mirrored(NewQ)} of
@@ -326,6 +329,7 @@ update_mirrors0(OldQ = #amqqueue{name = QName},
NewNodes = All(suggested_queue_nodes(NewQ)),
add_mirrors(QName, NewNodes -- OldNodes),
drop_mirrors(QName, OldNodes -- NewNodes),
+ maybe_auto_sync(NewQ),
ok.
%%----------------------------------------------------------------------------