Skip to content

Commit c3298b7

Browse files
author
Daniil Fedotov
committed
Terminate message store ignoring file save errors
1 parent c1f9c36 commit c3298b7

File tree

2 files changed

+26
-6
lines changed

2 files changed

+26
-6
lines changed

src/rabbit_msg_store.erl

Lines changed: 18 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -995,12 +995,26 @@ terminate(_Reason, State = #msstate { index_state = IndexState,
995995
State2
996996
end,
997997
State3 = close_all_handles(State1),
998-
ok = store_file_summary(FileSummaryEts, Dir),
998+
%% Let file summary saving fail.
999+
case store_file_summary(FileSummaryEts, Dir) of
1000+
ok -> ok;
1001+
{error, FSErr} ->
1002+
rabbit_log:error("Unable to store file summary"
1003+
" for vhost message store for directory ~p~n"
1004+
" Error: ~p~n",
1005+
[Dir, FSErr])
1006+
end,
9991007
[true = ets:delete(T) || T <- [FileSummaryEts, FileHandlesEts,
10001008
CurFileCacheEts, FlyingEts]],
10011009
IndexModule:terminate(IndexState),
1002-
ok = store_recovery_terms([{client_refs, dict:fetch_keys(Clients)},
1003-
{index_module, IndexModule}], Dir),
1010+
case store_recovery_terms([{client_refs, dict:fetch_keys(Clients)},
1011+
{index_module, IndexModule}], Dir) of
1012+
ok -> ok;
1013+
{error, RTErr} ->
1014+
rabbit_log:error("Unable to save message store recovery terms"
1015+
"for directory ~p~n Error: ~p~n",
1016+
[Dir, RTErr])
1017+
end,
10041018
State3 #msstate { index_state = undefined,
10051019
current_file_handle = undefined }.
10061020

@@ -1582,7 +1596,7 @@ read_recovery_terms(Dir) ->
15821596
end.
15831597

15841598
store_file_summary(Tid, Dir) ->
1585-
ok = ets:tab2file(Tid, filename:join(Dir, ?FILE_SUMMARY_FILENAME),
1599+
ets:tab2file(Tid, filename:join(Dir, ?FILE_SUMMARY_FILENAME),
15861600
[{extended_info, [object_count]}]).
15871601

15881602
recover_file_summary(false, _Dir) ->

src/rabbit_msg_store_ets_index.erl

Lines changed: 8 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,12 @@ delete_by_file(File, State) ->
7474
ok.
7575

7676
terminate(#state { table = MsgLocations, dir = Dir }) ->
77-
ok = ets:tab2file(MsgLocations, filename:join(Dir, ?FILENAME),
78-
[{extended_info, [object_count]}]),
77+
case ets:tab2file(MsgLocations, filename:join(Dir, ?FILENAME),
78+
[{extended_info, [object_count]}]) of
79+
ok -> ok;
80+
{error, Err} ->
81+
rabbit_log:error("Unable to save message store index"
82+
" for directory ~p~n Error: ~p~n",
83+
[Dir, Err])
84+
end,
7985
ets:delete(MsgLocations).

0 commit comments

Comments
 (0)