summaryrefslogtreecommitdiff
path: root/src/rabbit_amqqueue.erl
diff options
context:
space:
mode:
authorMatthias Radestock <matthias@lshift.net>2009-04-14 22:02:58 +0100
committerMatthias Radestock <matthias@lshift.net>2009-04-14 22:02:58 +0100
commitf504e1f82254e56c55e175ff9df7dbeb3deb55a0 (patch)
tree9452f4aacc3657f8e870fe6243127624850dfe8b /src/rabbit_amqqueue.erl
parent3f4040d9937088b93ae8050923ec53e1f028829a (diff)
downloadrabbitmq-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.erl25
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) ->