summaryrefslogtreecommitdiff
path: root/src
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2011-04-04 17:07:12 +0100
committerSimon MacMullen <simon@rabbitmq.com>2011-04-04 17:07:12 +0100
commita872473afb85129e7918523e38b08505f3eb5df4 (patch)
tree23bdefa1ba53a6d12271cb1932896dd72b5930d3 /src
parentdb1c104916171f05947d98c45235d424f4f9c278 (diff)
downloadrabbitmq-server-git-a872473afb85129e7918523e38b08505f3eb5df4.tar.gz
Invoke all the create and add_binding callbacks in the same tx.
Diffstat (limited to 'src')
-rw-r--r--src/rabbit_binding.erl4
-rw-r--r--src/rabbit_exchange.erl4
2 files changed, 4 insertions, 4 deletions
diff --git a/src/rabbit_binding.erl b/src/rabbit_binding.erl
index 8c6732f92d..557a8f29a4 100644
--- a/src/rabbit_binding.erl
+++ b/src/rabbit_binding.erl
@@ -108,6 +108,10 @@ recover(XNames, QNames) ->
end, dict:new(), rabbit_durable_route),
rabbit_misc:execute_pre_post_mnesia_tx(
fun (Tx) ->
+ [begin
+ {ok, X} = rabbit_exchange:lookup(XName),
+ rabbit_exchange:callback(X, create, [Tx, X])
+ end|| XName <- XNames],
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 b39fe32ca7..acbc6c9060 100644
--- a/src/rabbit_exchange.erl
+++ b/src/rabbit_exchange.erl
@@ -91,10 +91,6 @@ recover() ->
[_] -> Acc
end
end, [], rabbit_durable_exchange),
- rabbit_misc:execute_pre_post_mnesia_tx(
- fun (Tx) ->
- [rabbit_exchange:callback(X, create, [Tx, X]) || X <- Xs]
- end),
[XName || #exchange{name = XName} <- Xs].
callback(#exchange{type = XType}, Fun, Args) ->