From ea338fed6f2d64406412362512b2f1bf4ac1b6f1 Mon Sep 17 00:00:00 2001 From: Matthias Radestock Date: Tue, 23 Dec 2008 17:36:11 +0000 Subject: deal with race condition queues may get deleted between the route calculation and the queue lookup --- src/rabbit_exchange.erl | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl index c8069e08..925c335c 100644 --- a/src/rabbit_exchange.erl +++ b/src/rabbit_exchange.erl @@ -268,8 +268,10 @@ route_internal(#exchange{name = Name}, RoutingKey) -> lookup_qpids(Queues) -> sets:fold( fun(Key, Acc) -> - [#amqqueue{pid = QPid}] = mnesia:dirty_read({amqqueue, Key}), - [QPid | Acc] + case mnesia:dirty_read({amqqueue, Key}) of + [#amqqueue{pid = QPid}] -> [QPid | Acc]; + [] -> Acc + end end, [], sets:from_list(Queues)). %% TODO: Should all of the route and binding management not be -- cgit v1.2.1