summaryrefslogtreecommitdiff
path: root/src/rabbit_amqqueue.erl
diff options
context:
space:
mode:
authorMatthew Sackman <matthew@rabbitmq.com>2011-05-17 10:56:08 +0100
committerMatthew Sackman <matthew@rabbitmq.com>2011-05-17 10:56:08 +0100
commite250d532c13f87c938653812ced8721e5eb3259d (patch)
tree8331ad2f339f2a38bded236700d4dc53963ac73c /src/rabbit_amqqueue.erl
parent9080f592a2d9413138ee46a079a6ac761459a75c (diff)
parent809585e9e7d1f5640e96622d618b1f7bb5b3d1dd (diff)
downloadrabbitmq-server-e250d532c13f87c938653812ced8721e5eb3259d.tar.gz
Merging default to bug23554
Diffstat (limited to 'src/rabbit_amqqueue.erl')
-rw-r--r--src/rabbit_amqqueue.erl34
1 files changed, 14 insertions, 20 deletions
diff --git a/src/rabbit_amqqueue.erl b/src/rabbit_amqqueue.erl
index a681041d..d79fe9df 100644
--- a/src/rabbit_amqqueue.erl
+++ b/src/rabbit_amqqueue.erl
@@ -141,8 +141,8 @@
-spec(internal_delete/1 ::
(name()) -> rabbit_types:ok_or_error('not_found') |
rabbit_types:connection_exit() |
- fun ((boolean()) -> rabbit_types:ok_or_error('not_found') |
- rabbit_types:connection_exit())).
+ fun (() -> rabbit_types:ok_or_error('not_found') |
+ rabbit_types:connection_exit())).
-spec(run_backing_queue/3 ::
(pid(), atom(),
(fun ((atom(), A) -> {[rabbit_types:msg_id()], A}))) -> 'ok').
@@ -218,7 +218,7 @@ internal_declare(Q = #amqqueue{name = QueueName}, false) ->
case mnesia:read({rabbit_durable_queue, QueueName}) of
[] -> ok = store_queue(Q),
B = add_default_binding(Q),
- fun (Tx) -> B(Tx), Q end;
+ fun () -> B(), Q end;
%% Q exists on stopped node
[_] -> rabbit_misc:const(not_found)
end;
@@ -226,7 +226,7 @@ internal_declare(Q = #amqqueue{name = QueueName}, false) ->
case rabbit_misc:is_process_alive(QPid) of
true -> rabbit_misc:const(ExistingQ);
false -> TailFun = internal_delete(QueueName),
- fun (Tx) -> TailFun(Tx), ExistingQ end
+ fun () -> TailFun(), ExistingQ end
end
end
end).
@@ -437,9 +437,7 @@ internal_delete(QueueName) ->
case mnesia:wread({rabbit_queue, QueueName}) of
[] -> rabbit_misc:const({error, not_found});
[_] -> Deletions = internal_delete1(QueueName),
- fun (Tx) -> ok = rabbit_binding:process_deletions(
- Deletions, Tx)
- end
+ rabbit_binding:process_deletions(Deletions)
end
end).
@@ -468,19 +466,15 @@ drop_expired(QPid) ->
gen_server2:cast(QPid, drop_expired).
on_node_down(Node) ->
- rabbit_misc:execute_mnesia_transaction(
- fun () -> qlc:e(qlc:q([delete_queue(QueueName) ||
- #amqqueue{name = QueueName, pid = Pid,
- mirror_pids = []}
- <- mnesia:table(rabbit_queue),
- node(Pid) == Node]))
- end,
- fun (Deletions, Tx) ->
- rabbit_binding:process_deletions(
- lists:foldl(fun rabbit_binding:combine_deletions/2,
- rabbit_binding:new_deletions(),
- Deletions),
- Tx)
+ rabbit_misc:execute_mnesia_tx_with_tail(
+ fun () -> Dels = qlc:e(qlc:q([delete_queue(QueueName) ||
+ #amqqueue{name = QueueName, pid = Pid,
+ mirror_pids = []}
+ <- mnesia:table(rabbit_queue),
+ node(Pid) == Node])),
+ rabbit_binding:process_deletions(
+ lists:foldl(fun rabbit_binding:combine_deletions/2,
+ rabbit_binding:new_deletions(), Dels))
end).
delete_queue(QueueName) ->