summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--src/rabbit_recovery_terms.erl23
1 files changed, 17 insertions, 6 deletions
diff --git a/src/rabbit_recovery_terms.erl b/src/rabbit_recovery_terms.erl
index 24f2edb2f6..73bbb94ddc 100644
--- a/src/rabbit_recovery_terms.erl
+++ b/src/rabbit_recovery_terms.erl
@@ -67,11 +67,18 @@ upgrade_recovery_terms() ->
open_table(),
try
QueuesDir = filename:join(rabbit_mnesia:dir(), "queues"),
- DotFiles = filelib:fold_files(QueuesDir, "clean.dot", true,
+ DotFiles = filelib:fold_files(QueuesDir, "^clean\.dot$", false,
fun(F, Acc) -> [F|Acc] end, []),
[begin
- {ok, Terms} = rabbit_file:read_term_file(File),
- ok = store(filename:basename(filename:dirname(File)), Terms),
+ case rabbit_file:read_term_file(File) of
+ {ok, Terms} ->
+ rabbit_log:info("Read ~s ok~n", [File]),
+ ok = store(filename:basename(filename:dirname(File)),
+ Terms);
+ Err ->
+ rabbit_log:warning("Error reading recovery file ~s: ~p~n",
+ [File, Err])
+ end,
case file:delete(File) of
{error, E} ->
rabbit_log:warning("Unable to delete recovery index"
@@ -82,7 +89,7 @@ upgrade_recovery_terms() ->
end || File <- DotFiles],
ok
after
- flush()
+ close_table()
end.
start_link() -> gen_server:start_link(?MODULE, [], []).
@@ -101,8 +108,7 @@ handle_cast(Msg, State) -> {stop, {unexpected_cast, Msg}, State}.
handle_info(_Info, State) -> {noreply, State}.
terminate(_Reason, _State) ->
- ok = flush(),
- ok = dets:close(?MODULE).
+ close_table().
code_change(_OldVsn, State, _Extra) ->
{ok, State}.
@@ -116,3 +122,8 @@ open_table() ->
{auto_save, infinity}]).
flush() -> dets:sync(?MODULE).
+
+close_table() ->
+ ok = flush(),
+ ok = dets:close(?MODULE).
+