summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rabbit_amqqueue.erl6
-rw-r--r--src/rabbit_binding.erl5
2 files changed, 8 insertions, 3 deletions
diff --git a/src/rabbit_amqqueue.erl b/src/rabbit_amqqueue.erl
index 68e96742..2e5a5e8c 100644
--- a/src/rabbit_amqqueue.erl
+++ b/src/rabbit_amqqueue.erl
@@ -726,8 +726,10 @@ forget_all_durable(Node) ->
forget_node_for_queue(#amqqueue{name = Name,
down_slave_nodes = []}) ->
- %% No slaves to recover from, queue is gone
- rabbit_binding:process_deletions(internal_delete1(Name, true));
+ %% No slaves to recover from, queue is gone.
+ %% Don't process_deletions since that just calls callbacks and we
+ %% are not really up.
+ internal_delete1(Name, true);
forget_node_for_queue(Q = #amqqueue{down_slave_nodes = [H|T]}) ->
%% Promote a slave while down - it'll happily recover as a master
diff --git a/src/rabbit_binding.erl b/src/rabbit_binding.erl
index 12d4df99..53af2f20 100644
--- a/src/rabbit_binding.erl
+++ b/src/rabbit_binding.erl
@@ -469,7 +469,10 @@ group_bindings_fold(Fun, SrcName, Acc, Removed, Bindings, OnlyDurable) ->
maybe_auto_delete(XName, Bindings, Deletions, OnlyDurable) ->
{Entry, Deletions1} =
- case mnesia:read({rabbit_exchange, XName}) of
+ case mnesia:read({case OnlyDurable of
+ true -> rabbit_durable_exchange;
+ false -> rabbit_exchange
+ end, XName}) of
[] -> {{undefined, not_deleted, Bindings}, Deletions};
[X] -> case rabbit_exchange:maybe_auto_delete(X, OnlyDurable) of
not_deleted ->