diff options
| author | Simon MacMullen <simon@rabbitmq.com> | 2011-03-30 15:31:45 +0100 |
|---|---|---|
| committer | Simon MacMullen <simon@rabbitmq.com> | 2011-03-30 15:31:45 +0100 |
| commit | 7d682827afafcfadafa8b24ed5513fbe8d747e4a (patch) | |
| tree | f7b2d3f98bb23d41d0a65633410f63b9c1061095 /src | |
| parent | 197b263d384d5344ea03feacd29b2430da807d5a (diff) | |
| download | rabbitmq-server-git-7d682827afafcfadafa8b24ed5513fbe8d747e4a.tar.gz | |
Only recover exchanges and bindings that need to be recovered.
Diffstat (limited to 'src')
| -rw-r--r-- | src/rabbit_binding.erl | 11 | ||||
| -rw-r--r-- | src/rabbit_exchange.erl | 9 |
2 files changed, 13 insertions, 7 deletions
diff --git a/src/rabbit_binding.erl b/src/rabbit_binding.erl index 6167790e58..359d428750 100644 --- a/src/rabbit_binding.erl +++ b/src/rabbit_binding.erl @@ -96,10 +96,13 @@ recover() -> rabbit_misc:table_fold( fun (Route = #route{binding = B}, Acc) -> - {_, ReverseRoute} = route_with_reverse(Route), - ok = mnesia:write(rabbit_route, Route, write), - ok = mnesia:write(rabbit_reverse_route, ReverseRoute, write), - [B | Acc] + case mnesia:read({rabbit_route, B}) of + [] -> {_, Rev} = route_with_reverse(Route), + ok = mnesia:write(rabbit_route, Route, write), + ok = mnesia:write(rabbit_reverse_route, Rev, write), + [B | Acc]; + [_] -> Acc + end end, [], rabbit_durable_route). exists(Binding) -> diff --git a/src/rabbit_exchange.erl b/src/rabbit_exchange.erl index 9d9b07aff4..0d13a684d4 100644 --- a/src/rabbit_exchange.erl +++ b/src/rabbit_exchange.erl @@ -84,9 +84,12 @@ recover() -> Xs = rabbit_misc:table_fold( - fun (X, Acc) -> - ok = mnesia:write(rabbit_exchange, X, write), - [X | Acc] + fun (X = #exchange{name = XName}, Acc) -> + case mnesia:read({rabbit_exchange, XName}) of + [] -> ok = mnesia:write(rabbit_exchange, X, write), + [X | Acc]; + [_] -> Acc + end end, [], rabbit_durable_exchange), Bs = rabbit_binding:recover(), recover_with_bindings( |
