summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatthew Sackman <matthew@rabbitmq.com>2010-12-08 16:26:54 +0000
committerMatthew Sackman <matthew@rabbitmq.com>2010-12-08 16:26:54 +0000
commitae4e7cff60352090417d4efe3b8d8bae4a3be80e (patch)
tree3ae66ce3ab3efa39e87521cde3780697f66a55bf
parent18bf78777256f58ccea9b42e24e4066efa948188 (diff)
downloadrabbitmq-server-git-ae4e7cff60352090417d4efe3b8d8bae4a3be80e.tar.gz
On other node death, don't delete queues which still have some extra pids.
-rw-r--r--src/rabbit_amqqueue.erl6
1 files changed, 4 insertions, 2 deletions
diff --git a/src/rabbit_amqqueue.erl b/src/rabbit_amqqueue.erl
index e322e844e1..f525ffd1ad 100644
--- a/src/rabbit_amqqueue.erl
+++ b/src/rabbit_amqqueue.erl
@@ -492,9 +492,11 @@ on_node_down(Node) ->
rabbit_binding:new_deletions(),
rabbit_misc:execute_mnesia_transaction(
fun () -> qlc:e(qlc:q([delete_queue(QueueName) ||
- #amqqueue{name = QueueName, pid = Pid}
+ #amqqueue{name = QueueName, pid = Pid,
+ extra_pids = EPids}
<- mnesia:table(rabbit_queue),
- node(Pid) == Node]))
+ node(Pid) == Node,
+ [] =:= EPids]))
end))).
delete_queue(QueueName) ->