summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_exchange.erl15
1 files changed, 7 insertions, 8 deletions
diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl
index 5e4702f9cd..82534354da 100644
--- a/src/rabbit_exchange.erl
+++ b/src/rabbit_exchange.erl
@@ -234,9 +234,7 @@ delete_bindings(Binding = #binding{exchange_name = X,
case has_bindings(ExchangeName, Predicate) of
true -> ok;
false ->
- % TODO: This re-enters the delete_bindings
- % function unecessessarily
- do_internal_delete(ExchangeName)
+ unchecked_internal_delete(ExchangeName)
end;
true -> ok
end
@@ -427,9 +425,6 @@ internal_delete(ExchangeName, _IfUnused = true) ->
internal_delete(ExchangeName, false) ->
do_internal_delete(ExchangeName).
-% TODO: Think about an optional do_internal_delete that takes an Exchange
-% instead of an Exchange, i.e. something that has already done the lookup
-% already, e.g. delete_bindings/1
do_internal_delete(ExchangeName) ->
case mnesia:wread({exchange, ExchangeName}) of
[] -> {error, not_found};
@@ -437,6 +432,10 @@ do_internal_delete(ExchangeName) ->
delete_bindings(#binding{exchange_name = ExchangeName,
queue_name = '_',
key = '_'}),
- ok = mnesia:delete({durable_exchanges, ExchangeName}),
- ok = mnesia:delete({exchange, ExchangeName})
+ unchecked_internal_delete(ExchangeName)
end.
+
+unchecked_internal_delete(ExchangeName) ->
+ ok = mnesia:delete({durable_exchanges, ExchangeName}),
+ ok = mnesia:delete({exchange, ExchangeName}).
+