summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authortomyouyou <yxszyn@163.com>2019-12-26 14:32:07 +0800
committerGitHub <noreply@github.com>2019-12-26 14:32:07 +0800
commit2a81078436058fd16d02a6a9d8c4967014892a0b (patch)
tree309008db73e911e8564d027541a6c29f42ee6b64
parent7af37e5bb8bc4a517a6ab26a6038bef6cfa946e7 (diff)
downloadrabbitmq-server-git-2a81078436058fd16d02a6a9d8c4967014892a0b.tar.gz
Update rabbit_recovery_terms.erl
-rw-r--r--src/rabbit_recovery_terms.erl16
1 files changed, 13 insertions, 3 deletions
diff --git a/src/rabbit_recovery_terms.erl b/src/rabbit_recovery_terms.erl
index 41327147d0..ddb6bd26ee 100644
--- a/src/rabbit_recovery_terms.erl
+++ b/src/rabbit_recovery_terms.erl
@@ -196,9 +196,19 @@ code_change(_OldVsn, State, _Extra) ->
open_table(VHost) ->
VHostDir = rabbit_vhost:msg_store_dir_path(VHost),
File = filename:join(VHostDir, "recovery.dets"),
- {ok, _} = dets:open_file(VHost, [{file, File},
- {ram_file, true},
- {auto_save, infinity}]).
+ try
+ {ok, _} = dets:open_file(VHost, [{file, File},
+ {ram_file, true},
+ {auto_save, infinity}])
+ catch _:_ ->
+ file:delete(File),
+ %% Sleep for a period of time to avoid the CPU surge caused by repeated operation
+ Wait_time = 1000,
+ rabbit_log:warning("Failed to open '~p', deleted it and retry after ~pms.",
+ [File, Wait_time]),
+ timer:sleep(Wait_time),
+ open_table(VHost)
+ end.
flush(VHost) ->
try