diff options
| author | Simon MacMullen <simon@rabbitmq.com> | 2012-10-10 12:47:32 +0100 |
|---|---|---|
| committer | Simon MacMullen <simon@rabbitmq.com> | 2012-10-10 12:47:32 +0100 |
| commit | f317da6bbce0c4bc61a6f92443c77a1dec964ddd (patch) | |
| tree | d5cff1d082efabe5800c4a1d33eb13cb524bbd06 | |
| parent | 327d68f38cc4ac0506d929344d4387620634898e (diff) | |
| download | rabbitmq-server-git-f317da6bbce0c4bc61a6f92443c77a1dec964ddd.tar.gz | |
Clean up after we stop mirroring.
| -rw-r--r-- | src/rabbit_mirror_queue_master.erl | 12 |
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, |
