diff options
| author | Simon MacMullen <simon@rabbitmq.com> | 2014-11-12 15:58:40 +0000 |
|---|---|---|
| committer | Simon MacMullen <simon@rabbitmq.com> | 2014-11-12 15:58:40 +0000 |
| commit | a51b7d8dea8e9e585ba927cff6f1f86ace7a6e96 (patch) | |
| tree | 7bfd3e2ec61a7dd2c7d737431d15ee3ba73648a1 /src | |
| parent | 175173eb54baecd3e166894f4815f1f15d2b9472 (diff) | |
| download | rabbitmq-server-git-a51b7d8dea8e9e585ba927cff6f1f86ace7a6e96.tar.gz | |
Fix forgetting queue when deleting offline.
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_amqqueue.erl | 6 | ||||
| -rw-r--r-- | src/rabbit_binding.erl | 5 |
2 files changed, 8 insertions, 3 deletions
diff --git a/src/rabbit_amqqueue.erl b/src/rabbit_amqqueue.erl index 68e967425f..2e5a5e8c77 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 12d4df990e..53af2f20f9 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 -> |
