summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2012-10-10 12:47:32 +0100
committerSimon MacMullen <simon@rabbitmq.com>2012-10-10 12:47:32 +0100
commitf317da6bbce0c4bc61a6f92443c77a1dec964ddd (patch)
treed5cff1d082efabe5800c4a1d33eb13cb524bbd06
parent327d68f38cc4ac0506d929344d4387620634898e (diff)
downloadrabbitmq-server-git-f317da6bbce0c4bc61a6f92443c77a1dec964ddd.tar.gz
Clean up after we stop mirroring.
-rw-r--r--src/rabbit_mirror_queue_master.erl12
1 files changed, 10 insertions, 2 deletions
diff --git a/src/rabbit_mirror_queue_master.erl b/src/rabbit_mirror_queue_master.erl
index 96c79b8f34..d2490581ee 100644
--- a/src/rabbit_mirror_queue_master.erl
+++ b/src/rabbit_mirror_queue_master.erl
@@ -120,7 +120,6 @@ stop_mirroring(State = #state { coordinator = CPid,
backing_queue = BQ,
backing_queue_state = BQS }) ->
unlink(CPid),
- %% TODO remove GM from mnesia
stop_all_slaves(shutdown, State),
{BQ, BQS}.
@@ -155,7 +154,16 @@ stop_all_slaves(Reason, #state{gm = GM}) ->
MRefs = [erlang:monitor(process, S) || S <- Slaves],
ok = gm:broadcast(GM, {delete_and_terminate, Reason}),
[receive {'DOWN', MRef, process, _Pid, _Info} -> ok end || MRef <- MRefs],
- ok = gm:forget_group(proplists:get_value(group_name, Info)).
+ QName = proplists:get_value(group_name, Info),
+ ok = gm:forget_group(QName),
+ ok = rabbit_misc:execute_mnesia_transaction(
+ fun () ->
+ [Q] = mnesia:read({rabbit_queue, QName}),
+ rabbit_mirror_queue_misc:store_updated_slaves(
+ Q#amqqueue{gm_pids = [],
+ slave_pids = []}),
+ ok.
+ end).
purge(State = #state { gm = GM,
backing_queue = BQ,