summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMichael Bridgen <mikeb@lshift.net>2010-02-24 14:05:24 +0000
committerMichael Bridgen <mikeb@lshift.net>2010-02-24 14:05:24 +0000
commit4dbb5487c40b0a9bd6aefdb85a9ec34fba162bde (patch)
tree3a18373e684b323a4c5db629463334662a87083d
parent0d4f9ac7a9b92c4d20d9c96b7e83fa1bbcff69cf (diff)
downloadrabbitmq-server-bug22169.tar.gz
Reimagine delete_binding/2 as remove_bindings/2. The hooks are nowbug22169
called without reference to the initiating action; e.g., if a queue.unbind causes an exchange deletion, Module:delete/2 is called rather than Module:delete_binding/2.
-rw-r--r--include/rabbit_exchange_type_spec.hrl2
-rw-r--r--src/rabbit_exchange.erl7
-rw-r--r--src/rabbit_exchange_type.erl7
-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
7 files changed, 16 insertions, 16 deletions
diff --git a/include/rabbit_exchange_type_spec.hrl b/include/rabbit_exchange_type_spec.hrl
index a32b09ab..9864f1eb 100644
--- a/include/rabbit_exchange_type_spec.hrl
+++ b/include/rabbit_exchange_type_spec.hrl
@@ -37,6 +37,6 @@
-spec(recover/2 :: (exchange(), list(binding())) -> 'ok').
-spec(delete/2 :: (exchange(), list(binding())) -> 'ok').
-spec(add_binding/2 :: (exchange(), binding()) -> 'ok').
--spec(delete_binding/2 :: (exchange(), binding()) -> 'ok').
+-spec(remove_bindings/2 :: (exchange(), list(binding())) -> 'ok').
-endif.
diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl
index aa4a7d29..1cfba00e 100644
--- a/src/rabbit_exchange.erl
+++ b/src/rabbit_exchange.erl
@@ -305,7 +305,7 @@ delete_queue_bindings(QueueName, FwdDeleteFun) ->
Module = type_to_module(Type),
case IsDeleted of
auto_deleted -> Module:delete(X, Bs);
- no_delete -> [Module:delete_binding(X, B) || B <- Bs]
+ no_delete -> Module:remove_bindings(X, Bs)
end
end, Cleanup)
end.
@@ -416,10 +416,9 @@ delete_binding(ExchangeName, QueueName, RoutingKey, Arguments) ->
Err;
{{Action, X = #exchange{ type = Type }}, B} ->
Module = type_to_module(Type),
- Module:delete_binding(X, B),
case Action of
- auto_delete -> Module:delete(X, []), ok;
- no_delete -> ok
+ auto_delete -> Module:delete(X, [B]);
+ no_delete -> Module:remove_bindings(X, [B])
end
end.
diff --git a/src/rabbit_exchange_type.erl b/src/rabbit_exchange_type.erl
index deb01c3d..a8c071e6 100644
--- a/src/rabbit_exchange_type.erl
+++ b/src/rabbit_exchange_type.erl
@@ -47,14 +47,15 @@ behaviour_info(callbacks) ->
%% called when recovering
{recover, 2},
- %% called after exchange deletion
+ %% called after exchange deletion.
{delete, 2},
%% called after a binding has been added
{add_binding, 2},
- %% called after a binding has been deleted
- {delete_binding, 2}
+ %% called after bindings have been deleted.
+ {remove_bindings, 2}
+
];
behaviour_info(_Other) ->
undefined.
diff --git a/src/rabbit_exchange_type_direct.erl b/src/rabbit_exchange_type_direct.erl
index deb8d76f..9b71e0e1 100644
--- a/src/rabbit_exchange_type_direct.erl
+++ b/src/rabbit_exchange_type_direct.erl
@@ -36,7 +36,7 @@
-export([description/0, publish/2]).
-export([validate/1, create/1, recover/2, delete/2,
- add_binding/2, delete_binding/2]).
+ add_binding/2, remove_bindings/2]).
-include("rabbit_exchange_type_spec.hrl").
-rabbit_boot_step({?MODULE,
@@ -60,4 +60,4 @@ create(_X) -> ok.
recover(_X, _Bs) -> ok.
delete(_X, _Bs) -> ok.
add_binding(_X, _B) -> ok.
-delete_binding(_X, _B) -> ok.
+remove_bindings(_X, _Bs) -> ok.
diff --git a/src/rabbit_exchange_type_fanout.erl b/src/rabbit_exchange_type_fanout.erl
index deb8454f..311654ab 100644
--- a/src/rabbit_exchange_type_fanout.erl
+++ b/src/rabbit_exchange_type_fanout.erl
@@ -36,7 +36,7 @@
-export([description/0, publish/2]).
-export([validate/1, create/1, recover/2, delete/2,
- add_binding/2, delete_binding/2]).
+ add_binding/2, remove_bindings/2]).
-include("rabbit_exchange_type_spec.hrl").
-rabbit_boot_step({?MODULE,
@@ -58,4 +58,4 @@ create(_X) -> ok.
recover(_X, _Bs) -> ok.
delete(_X, _Bs) -> ok.
add_binding(_X, _B) -> ok.
-delete_binding(_X, _B) -> ok.
+remove_bindings(_X, _Bs) -> ok.
diff --git a/src/rabbit_exchange_type_headers.erl b/src/rabbit_exchange_type_headers.erl
index af35071d..285dab1a 100644
--- a/src/rabbit_exchange_type_headers.erl
+++ b/src/rabbit_exchange_type_headers.erl
@@ -37,7 +37,7 @@
-export([description/0, publish/2]).
-export([validate/1, create/1, recover/2, delete/2,
- add_binding/2, delete_binding/2]).
+ add_binding/2, remove_bindings/2]).
-include("rabbit_exchange_type_spec.hrl").
-rabbit_boot_step({?MODULE,
@@ -134,4 +134,4 @@ create(_X) -> ok.
recover(_X, _Bs) -> ok.
delete(_X, _Bs) -> ok.
add_binding(_X, _B) -> ok.
-delete_binding(_X, _B) -> ok.
+remove_bindings(_X, _Bs) -> ok.
diff --git a/src/rabbit_exchange_type_topic.erl b/src/rabbit_exchange_type_topic.erl
index 2001371e..8a3dceea 100644
--- a/src/rabbit_exchange_type_topic.erl
+++ b/src/rabbit_exchange_type_topic.erl
@@ -36,7 +36,7 @@
-export([description/0, publish/2]).
-export([validate/1, create/1, recover/2, delete/2,
- add_binding/2, delete_binding/2]).
+ add_binding/2, remove_bindings/2]).
-include("rabbit_exchange_type_spec.hrl").
-rabbit_boot_step({?MODULE,
@@ -98,4 +98,4 @@ create(_X) -> ok.
recover(_X, _Bs) -> ok.
delete(_X, _Bs) -> ok.
add_binding(_X, _B) -> ok.
-delete_binding(_X, _B) -> ok.
+remove_bindings(_X, _Bs) -> ok.