summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorSimon MacMullen <simon@rabbitmq.com>2011-04-04 16:24:02 +0100
committerSimon MacMullen <simon@rabbitmq.com>2011-04-04 16:24:02 +0100
commit1c3b4e30ea3dc21db7931ce3f5a3518f59af4047 (patch)
treec464b549ec212f30c19e0431e3703e70b6f08573
parent7f371eb77e83af037e996b07f581abb558310c6f (diff)
downloadrabbitmq-server-git-1c3b4e30ea3dc21db7931ce3f5a3518f59af4047.tar.gz
Split up sync_binding.
-rw-r--r--src/rabbit_binding.erl23
1 files changed, 11 insertions, 12 deletions
diff --git a/src/rabbit_binding.erl b/src/rabbit_binding.erl
index 5f1205474d..508d19bff6 100644
--- a/src/rabbit_binding.erl
+++ b/src/rabbit_binding.erl
@@ -100,10 +100,8 @@ recover(XNames, QNames) ->
XBs = rabbit_misc:table_fold(
fun (Route = #route{binding = B = #binding{source = Src}}, Acc) ->
case should_recover(B, XNameSet, QNameSet) of
- true -> {_, Rev} = route_with_reverse(Route),
- ok = mnesia:write(rabbit_route, Route, write),
- ok = mnesia:write(rabbit_reverse_route, Rev,
- write),
+ true -> ok = sync_transient_binding(
+ Route, fun mnesia:write/3),
rabbit_misc:dict_cons(Src, B, Acc);
false -> Acc
end
@@ -287,16 +285,17 @@ binding_action(Binding = #binding{source = SrcName,
Fun(Src, Dst, Binding#binding{args = SortedArgs})
end).
-sync_binding(Binding, Durable, Fun) ->
- ok = case Durable of
- true -> Fun(rabbit_durable_route,
- #route{binding = Binding}, write);
- false -> ok
- end,
+sync_binding(Binding, true, Fun) ->
+ ok = Fun(rabbit_durable_route, #route{binding = Binding}, write),
+ ok = sync_transient_binding(Binding, Fun);
+
+sync_binding(Binding, false, Fun) ->
+ ok = sync_transient_binding(Binding, Fun).
+
+sync_transient_binding(Binding, Fun) ->
{Route, ReverseRoute} = route_with_reverse(Binding),
ok = Fun(rabbit_route, Route, write),
- ok = Fun(rabbit_reverse_route, ReverseRoute, write),
- ok.
+ ok = Fun(rabbit_reverse_route, ReverseRoute, write).
call_with_source_and_destination(SrcName, DstName, Fun) ->
SrcTable = table_for_resource(SrcName),