From 0bc5d1ec85c0bce3ac1d89180248fac64e78e0a0 Mon Sep 17 00:00:00 2001 From: Simon MacMullen Date: Mon, 28 Mar 2011 16:41:43 +0100 Subject: Fix on_node_down. --- src/rabbit_amqqueue.erl | 23 +++++++++++------------ 1 file changed, 11 insertions(+), 12 deletions(-) (limited to 'src/rabbit_amqqueue.erl') diff --git a/src/rabbit_amqqueue.erl b/src/rabbit_amqqueue.erl index 60b7b384..e300fa32 100644 --- a/src/rabbit_amqqueue.erl +++ b/src/rabbit_amqqueue.erl @@ -466,18 +466,17 @@ drop_expired(QPid) -> gen_server2:cast(QPid, drop_expired). on_node_down(Node) -> - rabbit_misc:execute_mnesia_transaction( - fun () -> qlc:e(qlc:q([delete_queue(QueueName) || - #amqqueue{name = QueueName, pid = Pid} - <- mnesia:table(rabbit_queue), - node(Pid) == Node])) - end, - fun (Deletions, Tx) -> - rabbit_binding:process_deletions( - lists:foldl(fun rabbit_binding:combine_deletions/2, - rabbit_binding:new_deletions(), - Deletions), - Tx) + rabbit_misc:execute_mnesia_tx_with_tail( + fun () -> Dels = qlc:e(qlc:q([delete_queue(QueueName) || + #amqqueue{name = QueueName, pid = Pid} + <- mnesia:table(rabbit_queue), + node(Pid) == Node])), + Dels1 = lists:foldl(fun rabbit_binding:combine_deletions/2, + rabbit_binding:new_deletions(), Dels), + Serials = rabbit_binding:process_deletions(Dels1, transaction), + fun () -> + rabbit_binding:process_deletions(Dels1, Serials) + end end). delete_queue(QueueName) -> -- cgit v1.2.1