diff options
author | Francesco Mazzoli <francesco@rabbitmq.com> | 2012-03-04 17:36:18 +0000 |
---|---|---|
committer | Francesco Mazzoli <francesco@rabbitmq.com> | 2012-03-04 17:36:18 +0000 |
commit | 7121f5a1f3766e6fef48d5a2ec54ee224e4feaf7 (patch) | |
tree | 4d8ec6072f0c57c3e34f56d5e85b82e519e9ed97 | |
parent | b67b322aba29653d7e7a3808828ac8b85c13294e (diff) | |
download | rabbitmq-server-7121f5a1f3766e6fef48d5a2ec54ee224e4feaf7.tar.gz |
Notifying queue deletion in rabbit_amqqueue:on_node_down/1
-rw-r--r-- | src/rabbit_amqqueue.erl | 27 |
1 files changed, 19 insertions, 8 deletions
diff --git a/src/rabbit_amqqueue.erl b/src/rabbit_amqqueue.erl index 0ce7efd6..48236ca5 100644 --- a/src/rabbit_amqqueue.erl +++ b/src/rabbit_amqqueue.erl @@ -542,14 +542,25 @@ set_maximum_since_use(QPid, Age) -> on_node_down(Node) -> rabbit_misc:execute_mnesia_tx_with_tail( - fun () -> Dels = qlc:e(qlc:q([delete_queue(QueueName) || - #amqqueue{name = QueueName, pid = Pid, - slave_pids = []} - <- mnesia:table(rabbit_queue), - node(Pid) == Node])), - rabbit_binding:process_deletions( - lists:foldl(fun rabbit_binding:combine_deletions/2, - rabbit_binding:new_deletions(), Dels)) + fun () -> QsDels = + qlc:e(qlc:q([{{QName, Pid}, delete_queue(QName)} || + #amqqueue{name = QName, pid = Pid, + slave_pids = []} + <- mnesia:table(rabbit_queue), + node(Pid) == Node])), + {Qs, Dels} = lists:unzip(QsDels), + T = rabbit_binding:process_deletions( + lists:foldl(fun rabbit_binding:combine_deletions/2, + rabbit_binding:new_deletions(), Dels)), + fun () -> + T(), + lists:foreach( + fun({QName, QPid}) -> + ok = rabbit_event:notify(queue_deleted, + [{pid, QPid}, + {name, QName}]) + end, Qs) + end end). delete_queue(QueueName) -> |