summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorFrancesco Mazzoli <francesco@rabbitmq.com>2012-03-04 17:36:18 +0000
committerFrancesco Mazzoli <francesco@rabbitmq.com>2012-03-04 17:36:18 +0000
commit7121f5a1f3766e6fef48d5a2ec54ee224e4feaf7 (patch)
tree4d8ec6072f0c57c3e34f56d5e85b82e519e9ed97
parentb67b322aba29653d7e7a3808828ac8b85c13294e (diff)
downloadrabbitmq-server-7121f5a1f3766e6fef48d5a2ec54ee224e4feaf7.tar.gz
Notifying queue deletion in rabbit_amqqueue:on_node_down/1
-rw-r--r--src/rabbit_amqqueue.erl27
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) ->