diff options
author | Michael Bridgen <mikeb@lshift.net> | 2010-02-24 14:05:24 +0000 |
---|---|---|
committer | Michael Bridgen <mikeb@lshift.net> | 2010-02-24 14:05:24 +0000 |
commit | 4dbb5487c40b0a9bd6aefdb85a9ec34fba162bde (patch) | |
tree | 3a18373e684b323a4c5db629463334662a87083d | |
parent | 0d4f9ac7a9b92c4d20d9c96b7e83fa1bbcff69cf (diff) | |
download | rabbitmq-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.hrl | 2 | ||||
-rw-r--r-- | src/rabbit_exchange.erl | 7 | ||||
-rw-r--r-- | src/rabbit_exchange_type.erl | 7 | ||||
-rw-r--r-- | src/rabbit_exchange_type_direct.erl | 4 | ||||
-rw-r--r-- | src/rabbit_exchange_type_fanout.erl | 4 | ||||
-rw-r--r-- | src/rabbit_exchange_type_headers.erl | 4 | ||||
-rw-r--r-- | src/rabbit_exchange_type_topic.erl | 4 |
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. |