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 | 89ffa42234b0922693e10a84acf3af2ad5579315 (patch) | |
| tree | 4d8ec6072f0c57c3e34f56d5e85b82e519e9ed97 | |
| parent | df797cb2a8acdd8a7840b65bae746ef9c07833c0 (diff) | |
| download | rabbitmq-server-git-89ffa42234b0922693e10a84acf3af2ad5579315.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 0ce7efd6e0..48236ca5b6 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) -> |
