summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Hood <0x6e6562@gmail.com>2008-10-06 11:48:22 +0100
committerBen Hood <0x6e6562@gmail.com>2008-10-06 11:48:22 +0100
commita72844f0a3ab9447a3ba4f2e1956c74d52ef0f26 (patch)
tree1e93c25298d60dcf15e15343ab7bac93b24da188
parent982fface28c233e33316ca2a1238e58ef3a442f3 (diff)
downloadrabbitmq-server-git-a72844f0a3ab9447a3ba4f2e1956c74d52ef0f26.tar.gz
Factored out re-entry condition
-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}).
+