summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDaniil Fedotov <dfedotov@pivotal.io>2016-10-19 17:47:04 +0100
committerDaniil Fedotov <dfedotov@pivotal.io>2016-10-20 14:49:52 +0100
commitfd4db66c2c65b2de20b81ef89bc7a87dcea0f209 (patch)
treeb0a6ba4263eec04694785c82294c0f306354e328
parent4f12ebeb53c72d25ecb9f1b5bf0feda1fcf4523f (diff)
downloadrabbitmq-server-git-fd4db66c2c65b2de20b81ef89bc7a87dcea0f209.tar.gz
Terminate message store ignoring file save errors
-rw-r--r--src/rabbit_msg_store.erl22
-rw-r--r--src/rabbit_msg_store_ets_index.erl10
2 files changed, 26 insertions, 6 deletions
diff --git a/src/rabbit_msg_store.erl b/src/rabbit_msg_store.erl
index f033dea5f0..71a7d9f15a 100644
--- a/src/rabbit_msg_store.erl
+++ b/src/rabbit_msg_store.erl
@@ -995,12 +995,26 @@ terminate(_Reason, State = #msstate { index_state = IndexState,
State2
end,
State3 = close_all_handles(State1),
- ok = store_file_summary(FileSummaryEts, Dir),
+ %% Let file summary saving fail.
+ case store_file_summary(FileSummaryEts, Dir) of
+ ok -> ok;
+ {error, FSErr} ->
+ rabbit_log:error("Unable to store file summary"
+ " for vhost message store for directory ~p~n"
+ " Error: ~p~n",
+ [Dir, FSErr])
+ end,
[true = ets:delete(T) || T <- [FileSummaryEts, FileHandlesEts,
CurFileCacheEts, FlyingEts]],
IndexModule:terminate(IndexState),
- ok = store_recovery_terms([{client_refs, dict:fetch_keys(Clients)},
- {index_module, IndexModule}], Dir),
+ case store_recovery_terms([{client_refs, dict:fetch_keys(Clients)},
+ {index_module, IndexModule}], Dir) of
+ ok -> ok;
+ {error, RTErr} ->
+ rabbit_log:error("Unable to save message store recovery terms"
+ "for directory ~p~n Error: ~p~n",
+ [Dir, RTErr])
+ end,
State3 #msstate { index_state = undefined,
current_file_handle = undefined }.
@@ -1582,7 +1596,7 @@ read_recovery_terms(Dir) ->
end.
store_file_summary(Tid, Dir) ->
- ok = ets:tab2file(Tid, filename:join(Dir, ?FILE_SUMMARY_FILENAME),
+ ets:tab2file(Tid, filename:join(Dir, ?FILE_SUMMARY_FILENAME),
[{extended_info, [object_count]}]).
recover_file_summary(false, _Dir) ->
diff --git a/src/rabbit_msg_store_ets_index.erl b/src/rabbit_msg_store_ets_index.erl
index 76ef112069..39c0cc96bd 100644
--- a/src/rabbit_msg_store_ets_index.erl
+++ b/src/rabbit_msg_store_ets_index.erl
@@ -74,6 +74,12 @@ delete_by_file(File, State) ->
ok.
terminate(#state { table = MsgLocations, dir = Dir }) ->
- ok = ets:tab2file(MsgLocations, filename:join(Dir, ?FILENAME),
- [{extended_info, [object_count]}]),
+ case ets:tab2file(MsgLocations, filename:join(Dir, ?FILENAME),
+ [{extended_info, [object_count]}]) of
+ ok -> ok;
+ {error, Err} ->
+ rabbit_log:error("Unable to save message store index"
+ " for directory ~p~n Error: ~p~n",
+ [Dir, Err])
+ end,
ets:delete(MsgLocations).