summaryrefslogtreecommitdiff
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
commit9f9c7c5eabf3d6915afb0b0b62fe25d04101d50e (patch)
tree0b0345d5277a0fe760546f61b7c807ff00ee680e
parentdac6e4ba2648131f4d79f871536c3b79e16d17d9 (diff)
downloadrabbitmq-server-9f9c7c5eabf3d6915afb0b0b62fe25d04101d50e.tar.gz
rabbit_misc:execute_pre_post_mnesia_tx/1.
-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 508d19bf..8c6732f9 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 86ce69ef..b39fe32c 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 2e9563cf..8927020f 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) ->