summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorBen Hood <0x6e6562@gmail.com>2008-08-25 18:06:35 +0100
committerBen Hood <0x6e6562@gmail.com>2008-08-25 18:06:35 +0100
commit6c1af42f9eebd553c74ae9a006c68d543ade00fa (patch)
treeb43e4f3f1cad18a7a01e85d23abf93dba9e6143b
parent1e2a4aa8615d70ade53d6f517feeecca01601a2d (diff)
downloadrabbitmq-server-git-6c1af42f9eebd553c74ae9a006c68d543ade00fa.tar.gz
Savepoint
-rw-r--r--src/rabbit_amqqueue.erl28
-rw-r--r--src/rabbit_exchange.erl4
2 files changed, 7 insertions, 25 deletions
diff --git a/src/rabbit_amqqueue.erl b/src/rabbit_amqqueue.erl
index 016721d919..d7284998cd 100644
--- a/src/rabbit_amqqueue.erl
+++ b/src/rabbit_amqqueue.erl
@@ -30,7 +30,7 @@
-export([lookup/1, with/2, with_or_die/2, list_vhost_queues/1,
stat/1, stat_all/0, deliver/5, redeliver/2, requeue/3, ack/4,
commit/2, rollback/2]).
--export([add_binding/4, delete_binding/4, binding_forcibly_removed/2]).
+-export([add_binding/4, delete_binding/4]).
-export([claim_queue/2]).
-export([basic_get/3, basic_consume/7, basic_cancel/4]).
-export([notify_sent/2, notify_down/2]).
@@ -84,7 +84,6 @@
-spec(commit/2 :: (pid(), txn()) -> 'ok').
-spec(rollback/2 :: (pid(), txn()) -> 'ok').
-spec(notify_down/2 :: (amqqueue(), pid()) -> 'ok').
-%-spec(binding_forcibly_removed/2 :: (binding_spec(), queue_name()) -> 'ok').
-spec(claim_queue/2 :: (amqqueue(), pid()) -> 'ok' | 'locked').
-spec(basic_get/3 :: (amqqueue(), pid(), bool()) ->
{'ok', non_neg_integer(), msg()} | 'empty').
@@ -311,18 +310,6 @@ rollback(QPid, Txn) ->
notify_down(#amqqueue{ pid = QPid }, ChPid) ->
gen_server:call(QPid, {notify_down, ChPid}).
-binding_forcibly_removed(BindingSpec, QueueName) ->
- exit(binding_forcibly_removed).
- % rabbit_misc:execute_mnesia_transaction(
- % fun () ->
- % case mnesia:wread({amqqueue, QueueName}) of
- % [] -> ok;
- % [Q = #amqqueue{binding_specs = Specs}] ->
- % store_queue(Q#amqqueue{binding_specs =
- % lists:delete(BindingSpec, Specs)})
- % end
- % end).
-
claim_queue(#amqqueue{pid = QPid}, ReaderPid) ->
gen_server:call(QPid, {claim_queue, ReaderPid}).
@@ -340,12 +327,9 @@ basic_cancel(#amqqueue{pid = QPid}, ChPid, ConsumerTag, OkMsg) ->
notify_sent(QPid, ChPid) ->
gen_server:cast(QPid, {notify_sent, ChPid}).
-delete_bindings(Q = #amqqueue{}) ->
- exit(delete_bindings).
- % lists:foreach(fun (BindingSpec) ->
- % ok = rabbit_exchange:delete_binding(
- % BindingSpec, Q)
- % end, Specs).
+delete_routes(Q = #amqqueue{name = Name}) ->
+ Route = #route{binding = #binding{queue_name = Name, exchange_name = '_', key = '_'}},
+ ok = mnesia:delete_object(Route).
internal_delete(QueueName) ->
rabbit_misc:execute_mnesia_transaction(
@@ -360,9 +344,7 @@ internal_delete(QueueName) ->
end).
delete_temp(Q = #amqqueue{name = QueueName}) ->
- ok = delete_bindings(Q),
- %ok = rabbit_exchange:delete_binding(
- % default_binding_spec(QueueName), Q),
+ ok = delete_routes(Q),
ok = mnesia:delete({amqqueue, QueueName}),
ok.
diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl
index faf9ca419a..fadd2844ef 100644
--- a/src/rabbit_exchange.erl
+++ b/src/rabbit_exchange.erl
@@ -231,7 +231,7 @@ delete_binding(Binding) ->
call_with_exchange_and_queue(
Binding,
fun (X,Q) -> ok = internal_delete_binding(Binding),
- ok = maybe_auto_delete(X)
+ maybe_auto_delete(X)
end).
%% Must run within a transaction.
@@ -240,7 +240,7 @@ maybe_auto_delete(#exchange{auto_delete = false}) ->
maybe_auto_delete(#exchange{name = ExchangeName, auto_delete = true}) ->
case internal_delete(ExchangeName, true) of
{error, in_use} -> ok;
- ok -> ok
+ Other -> Other
end.
handlers_isempty([]) -> true;