summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2011-04-04 16:35:51 +0100
committerSimon MacMullen <simon@rabbitmq.com>2011-04-04 16:35:51 +0100
commitdb1c104916171f05947d98c45235d424f4f9c278 (patch)
tree0b0345d5277a0fe760546f61b7c807ff00ee680e /src
parent1c3b4e30ea3dc21db7931ce3f5a3518f59af4047 (diff)
downloadrabbitmq-server-git-db1c104916171f05947d98c45235d424f4f9c278.tar.gz
rabbit_misc:execute_pre_post_mnesia_tx/1.
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_binding.erl5
-rw-r--r--src/rabbit_exchange.erl5
-rw-r--r--src/rabbit_misc.erl7
3 files changed, 11 insertions, 6 deletions
diff --git a/src/rabbit_binding.erl b/src/rabbit_binding.erl
index 508d19bff6..8c6732f92d 100644
--- a/src/rabbit_binding.erl
+++ b/src/rabbit_binding.erl
@@ -106,9 +106,8 @@ recover(XNames, QNames) ->
false -> Acc
end
end, dict:new(), rabbit_durable_route),
- rabbit_misc:execute_mnesia_transaction(
- fun () -> ok end,
- fun (ok, Tx) ->
+ rabbit_misc:execute_pre_post_mnesia_tx(
+ fun (Tx) ->
dict:map(fun (XName, Bindings) ->
{ok, X} = rabbit_exchange:lookup(XName),
rabbit_exchange:callback(X, add_bindings,
diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl
index 86ce69efc2..b39fe32ca7 100644
--- a/src/rabbit_exchange.erl
+++ b/src/rabbit_exchange.erl
@@ -91,9 +91,8 @@ recover() ->
[_] -> Acc
end
end, [], rabbit_durable_exchange),
- rabbit_misc:execute_mnesia_transaction(
- fun () -> ok end,
- fun (ok, Tx) ->
+ rabbit_misc:execute_pre_post_mnesia_tx(
+ fun (Tx) ->
[rabbit_exchange:callback(X, create, [Tx, X]) || X <- Xs]
end),
[XName || #exchange{name = XName} <- Xs].
diff --git a/src/rabbit_misc.erl b/src/rabbit_misc.erl
index 2e9563cf3c..8927020f15 100644
--- a/src/rabbit_misc.erl
+++ b/src/rabbit_misc.erl
@@ -34,6 +34,7 @@
-export([with_user/2, with_user_and_vhost/3]).
-export([execute_mnesia_transaction/1]).
-export([execute_mnesia_transaction/2]).
+-export([execute_pre_post_mnesia_tx/1]).
-export([execute_mnesia_tx_with_tail/1]).
-export([ensure_ok/2]).
-export([makenode/1, nodeparts/1, cookie_hash/0, tcp_name/3]).
@@ -135,6 +136,7 @@
-spec(execute_mnesia_transaction/1 :: (thunk(A)) -> A).
-spec(execute_mnesia_transaction/2 ::
(thunk(A), fun ((A, boolean()) -> B)) -> B).
+-spec(execute_pre_post_mnesia_tx/1 :: (fun ((boolean()) -> B)) -> B).
-spec(execute_mnesia_tx_with_tail/1 ::
(thunk(fun ((boolean()) -> B))) -> B | (fun ((boolean()) -> B))).
-spec(ensure_ok/2 :: (ok_or_error(), atom()) -> 'ok').
@@ -404,6 +406,11 @@ execute_mnesia_transaction(TxFun, PrePostCommitFun) ->
Result
end), false).
+%% Like the above, but without the main body.
+execute_pre_post_mnesia_tx(PrePostCommitFun) ->
+ execute_mnesia_transaction(fun () -> ok end,
+ fun (ok, Tx) -> PrePostCommitFun(Tx) end).
+
%% Like execute_mnesia_transaction/2, but TxFun is expected to return a
%% TailFun which gets called immediately before and after the tx commit
execute_mnesia_tx_with_tail(TxFun) ->