diff options
| author | Simon MacMullen <simon@rabbitmq.com> | 2011-03-28 17:55:14 +0100 |
|---|---|---|
| committer | Simon MacMullen <simon@rabbitmq.com> | 2011-03-28 17:55:14 +0100 |
| commit | a319d55f6e56f3d299a53d9d40c335494ba17b1c (patch) | |
| tree | bb3b7bb658e201ecfc4ab23f224bf61cc8bf3476 | |
| parent | bf8ce0fea66777c6202eead4586876fa970ccb2c (diff) | |
| parent | af5527ddc6f9069c99b7047c966775d6be8b30e9 (diff) | |
| download | rabbitmq-server-git-a319d55f6e56f3d299a53d9d40c335494ba17b1c.tar.gz | |
Merged heads. Need sleep.
| -rw-r--r-- | src/rabbit_amqqueue.erl | 23 |
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) -> |
