diff options
author | Simon MacMullen <simon@rabbitmq.com> | 2011-03-28 16:41:43 +0100 |
---|---|---|
committer | Simon MacMullen <simon@rabbitmq.com> | 2011-03-28 16:41:43 +0100 |
commit | 0bc5d1ec85c0bce3ac1d89180248fac64e78e0a0 (patch) | |
tree | 807c02926440ca3253000ee1045a4ba5f63ca786 /src/rabbit_amqqueue.erl | |
parent | 52e4fe98abbaddad26e0547ce0cf6bf51dbaed9f (diff) | |
download | rabbitmq-server-0bc5d1ec85c0bce3ac1d89180248fac64e78e0a0.tar.gz |
Fix on_node_down.
Diffstat (limited to 'src/rabbit_amqqueue.erl')
-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 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) -> |