diff options
| -rw-r--r-- | src/rabbit_exchange.erl | 14 |
1 files changed, 12 insertions, 2 deletions
diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl index f825a6d277..53abd5e794 100644 --- a/src/rabbit_exchange.erl +++ b/src/rabbit_exchange.erl @@ -296,8 +296,10 @@ route_with_reverse(#route{binding = Binding}) -> route_with_reverse(Binding); route_with_reverse(Binding = #binding{}) -> Route = #route{binding = Binding}, - ReverseRoute = #reverse_route{reverse_binding = reverse_binding(Binding)}, - {Route, ReverseRoute}. + {Route, reverse_route(Route)}. + +reverse_route(#route{binding = Binding}) -> + #reverse_route{reverse_binding = reverse_binding(Binding)}. reverse_binding(#binding{exchange_name = Exchange, queue_name = Queue, @@ -355,6 +357,14 @@ do_internal_delete(ExchangeName, Routes) -> _ -> lists:foreach(fun (R) -> ok = mnesia:delete_object(R) end, Routes), + lists:foreach(fun (R) -> + ok = mnesia:delete_object(reverse_route(R)) end, + Routes), + lists:foreach(fun (R) -> + ok = mnesia:delete_object(durable_routes, + R, write) + end, + Routes), ok = mnesia:delete({durable_exchanges, ExchangeName}), ok = mnesia:delete({exchange, ExchangeName}) end. |
