summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2011-03-28 17:55:14 +0100
committerSimon MacMullen <simon@rabbitmq.com>2011-03-28 17:55:14 +0100
commita319d55f6e56f3d299a53d9d40c335494ba17b1c (patch)
treebb3b7bb658e201ecfc4ab23f224bf61cc8bf3476
parentbf8ce0fea66777c6202eead4586876fa970ccb2c (diff)
parentaf5527ddc6f9069c99b7047c966775d6be8b30e9 (diff)
downloadrabbitmq-server-git-a319d55f6e56f3d299a53d9d40c335494ba17b1c.tar.gz
Merged heads. Need sleep.
-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) ->