diff options
| author | Ben Hood <0x6e6562@gmail.com> | 2008-10-05 20:12:51 +0100 |
|---|---|---|
| committer | Ben Hood <0x6e6562@gmail.com> | 2008-10-05 20:12:51 +0100 |
| commit | 9de5dbe9a92f8a1cf7243c8e73f3f489452b509a (patch) | |
| tree | 895c17c1e50f6e3d8ddb1db53a1e2f34eaa3a30e | |
| parent | 96e8235eeae6dce5ce000ba59171084592501fbe (diff) | |
| download | rabbitmq-server-git-9de5dbe9a92f8a1cf7243c8e73f3f489452b509a.tar.gz | |
Refactored deleting forwards bindings
| -rw-r--r-- | src/rabbit_exchange.erl | 14 |
1 files changed, 8 insertions, 6 deletions
diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl index db74e890a6..871ccf4b4e 100644 --- a/src/rabbit_exchange.erl +++ b/src/rabbit_exchange.erl @@ -218,7 +218,7 @@ lookup_qpids(Queues) -> [QPid | Acc] end, [], sets:from_list(Queues)). -delete_forwards_route(ExchangeName, QueueName) -> +delete_forward_routes(ExchangeName, QueueName) -> Route = #route{binding = #binding{exchange_name = ExchangeName, queue_name = QueueName, key = '_'}}, @@ -247,7 +247,7 @@ delete_bindings(Binding = #binding{exchange_name = X, end; true -> ok end, - delete_forwards_route(ExchangeName, QueueName) + delete_forward_routes(ExchangeName, QueueName) end) end, exchanges_for_queue(QueueName)), ok = mnesia:delete_object(reverse_route(#route{binding = Binding})); @@ -258,10 +258,12 @@ delete_bindings(Binding = #binding{exchange_name = ExchangeName, when QueueName == '_' andalso ExchangeName /= '_' -> % This uses the forward routes as the primary index - {Route, ReverseRoute} = route_with_reverse(Binding), - ok = mnesia:delete_object(Route), - ok = mnesia:delete_object(ReverseRoute), - ok = mnesia:delete_object(durable_routes, Route, write); + RouteMatch = #route{binding = Binding}, + lists:foreach(fun(Route) -> + ok = mnesia:delete_object(reverse_route(Route)) + end, mnesia:match_object(RouteMatch)), + ok = mnesia:delete_object(RouteMatch), + ok = mnesia:delete_object(durable_routes, RouteMatch, write); % Must be called in a transaction |
