diff options
author | Matthias Radestock <matthias@lshift.net> | 2009-04-14 22:02:58 +0100 |
---|---|---|
committer | Matthias Radestock <matthias@lshift.net> | 2009-04-14 22:02:58 +0100 |
commit | f504e1f82254e56c55e175ff9df7dbeb3deb55a0 (patch) | |
tree | 9452f4aacc3657f8e870fe6243127624850dfe8b /src/rabbit_amqqueue.erl | |
parent | 3f4040d9937088b93ae8050923ec53e1f028829a (diff) | |
download | rabbitmq-server-f504e1f82254e56c55e175ff9df7dbeb3deb55a0.tar.gz |
don't remove a queue's durable routes on node_downbug20590
...since that means we can't recover them when the queue re-appears.
Also, rename rabbit_exchange:delete_bindings_for_X to
delete_X_bindings - the former was becoming a mouthful.
Diffstat (limited to 'src/rabbit_amqqueue.erl')
-rw-r--r-- | src/rabbit_amqqueue.erl | 25 |
1 files changed, 13 insertions, 12 deletions
diff --git a/src/rabbit_amqqueue.erl b/src/rabbit_amqqueue.erl index 69c97dfe..382810c3 100644 --- a/src/rabbit_amqqueue.erl +++ b/src/rabbit_amqqueue.erl @@ -293,28 +293,29 @@ internal_delete(QueueName) -> rabbit_misc:execute_mnesia_transaction( fun () -> case mnesia:wread({amqqueue, QueueName}) of - [] -> {error, not_found}; - [Q] -> - ok = delete_queue(Q), + [] -> {error, not_found}; + [_] -> + ok = rabbit_exchange:delete_queue_bindings(QueueName), + ok = mnesia:delete({amqqueue, QueueName}), ok = mnesia:delete({durable_queues, QueueName}), ok end end). -delete_queue(#amqqueue{name = QueueName}) -> - ok = rabbit_exchange:delete_bindings_for_queue(QueueName), - ok = mnesia:delete({amqqueue, QueueName}), - ok. - on_node_down(Node) -> rabbit_misc:execute_mnesia_transaction( fun () -> qlc:fold( - fun (Q, Acc) -> ok = delete_queue(Q), Acc end, + fun (QueueName, Acc) -> + ok = rabbit_exchange:delete_transient_queue_bindings( + QueueName), + ok = mnesia:delete({amqqueue, QueueName}), + Acc + end, ok, - qlc:q([Q || Q = #amqqueue{pid = Pid} - <- mnesia:table(amqqueue), - node(Pid) == Node])) + qlc:q([QueueName || #amqqueue{name = QueueName, pid = Pid} + <- mnesia:table(amqqueue), + node(Pid) == Node])) end). pseudo_queue(QueueName, Pid) -> |