summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2011-03-28 16:41:43 +0100
committerSimon MacMullen <simon@rabbitmq.com>2011-03-28 16:41:43 +0100
commitaf5527ddc6f9069c99b7047c966775d6be8b30e9 (patch)
tree807c02926440ca3253000ee1045a4ba5f63ca786
parent0b639b478d5144373df007fbf63195fe59987222 (diff)
downloadrabbitmq-server-git-af5527ddc6f9069c99b7047c966775d6be8b30e9.tar.gz
Fix on_node_down.
-rw-r--r--src/rabbit_amqqueue.erl23
1 files changed, 11 insertions, 12 deletions
diff --git a/src/rabbit_amqqueue.erl b/src/rabbit_amqqueue.erl
index 60b7b38409..e300fa3274 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) ->