summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rabbit_amqqueue.erl28
-rw-r--r--src/rabbit_exchange.erl4
-rw-r--r--src/rabbit_exchange_type_direct.erl4
-rw-r--r--src/rabbit_exchange_type_fanout.erl4
-rw-r--r--src/rabbit_exchange_type_headers.erl4
-rw-r--r--src/rabbit_exchange_type_topic.erl4
6 files changed, 22 insertions, 26 deletions
diff --git a/src/rabbit_amqqueue.erl b/src/rabbit_amqqueue.erl
index 2c33851626..bcea4c97db 100644
--- a/src/rabbit_amqqueue.erl
+++ b/src/rabbit_amqqueue.erl
@@ -339,24 +339,20 @@ internal_delete(QueueName) ->
on_node_down(Node) ->
[Hook() ||
- Hook <-
- rabbit_misc:execute_mnesia_transaction(
- fun () ->
- qlc:fold(
- fun (QueueName, Acc) ->
- Post = rabbit_exchange:
- delete_transient_queue_bindings(QueueName),
- ok = mnesia:delete({rabbit_queue, QueueName}),
- [Post | Acc]
- end,
- [],
- qlc:q([QueueName ||
- #amqqueue{name = QueueName, pid = Pid}
- <- mnesia:table(rabbit_queue),
- node(Pid) == Node]))
- end)],
+ Hook <- rabbit_misc:execute_mnesia_transaction(
+ fun () ->
+ qlc:e(qlc:q([delete_queue(QueueName) ||
+ #amqqueue{name = QueueName, pid = Pid}
+ <- mnesia:table(rabbit_queue),
+ node(Pid) == Node]))
+ end)],
ok.
+delete_queue(QueueName) ->
+ Post = rabbit_exchange:delete_transient_queue_bindings(QueueName),
+ ok = mnesia:delete({rabbit_queue, QueueName}),
+ Post.
+
pseudo_queue(QueueName, Pid) ->
#amqqueue{name = QueueName,
durable = false,
diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl
index 0734c0835c..29451fc9af 100644
--- a/src/rabbit_exchange.erl
+++ b/src/rabbit_exchange.erl
@@ -516,8 +516,8 @@ conditional_delete(Exchange = #exchange{name = ExchangeName}) ->
%% result of a node failure
case contains(rabbit_route, Match) orelse
contains(rabbit_durable_route, Match) of
- true -> {error, in_use};
- false -> unconditional_delete(Exchange)
+ false -> unconditional_delete(Exchange);
+ true -> {error, in_use}
end.
unconditional_delete(Exchange = #exchange{name = ExchangeName}) ->
diff --git a/src/rabbit_exchange_type_direct.erl b/src/rabbit_exchange_type_direct.erl
index 7526dd66bc..deb8d76f47 100644
--- a/src/rabbit_exchange_type_direct.erl
+++ b/src/rabbit_exchange_type_direct.erl
@@ -35,8 +35,8 @@
-behaviour(rabbit_exchange_type).
-export([description/0, publish/2]).
--export([validate/1, create/1, recover/2, delete/2, add_binding/2,
- delete_binding/2]).
+-export([validate/1, create/1, recover/2, delete/2,
+ add_binding/2, delete_binding/2]).
-include("rabbit_exchange_type_spec.hrl").
-rabbit_boot_step({?MODULE,
diff --git a/src/rabbit_exchange_type_fanout.erl b/src/rabbit_exchange_type_fanout.erl
index bef988974f..deb8454f27 100644
--- a/src/rabbit_exchange_type_fanout.erl
+++ b/src/rabbit_exchange_type_fanout.erl
@@ -35,8 +35,8 @@
-behaviour(rabbit_exchange_type).
-export([description/0, publish/2]).
--export([validate/1, create/1, recover/2, delete/2, add_binding/2,
- delete_binding/2]).
+-export([validate/1, create/1, recover/2, delete/2,
+ add_binding/2, delete_binding/2]).
-include("rabbit_exchange_type_spec.hrl").
-rabbit_boot_step({?MODULE,
diff --git a/src/rabbit_exchange_type_headers.erl b/src/rabbit_exchange_type_headers.erl
index 760e0a6e80..af35071d54 100644
--- a/src/rabbit_exchange_type_headers.erl
+++ b/src/rabbit_exchange_type_headers.erl
@@ -36,8 +36,8 @@
-behaviour(rabbit_exchange_type).
-export([description/0, publish/2]).
--export([validate/1, create/1, recover/2, delete/2, add_binding/2,
- delete_binding/2]).
+-export([validate/1, create/1, recover/2, delete/2,
+ add_binding/2, delete_binding/2]).
-include("rabbit_exchange_type_spec.hrl").
-rabbit_boot_step({?MODULE,
diff --git a/src/rabbit_exchange_type_topic.erl b/src/rabbit_exchange_type_topic.erl
index 1c8c8e118b..2001371e5f 100644
--- a/src/rabbit_exchange_type_topic.erl
+++ b/src/rabbit_exchange_type_topic.erl
@@ -35,8 +35,8 @@
-behaviour(rabbit_exchange_type).
-export([description/0, publish/2]).
--export([validate/1, create/1, recover/2, delete/2, add_binding/2,
- delete_binding/2]).
+-export([validate/1, create/1, recover/2, delete/2,
+ add_binding/2, delete_binding/2]).
-include("rabbit_exchange_type_spec.hrl").
-rabbit_boot_step({?MODULE,