diff options
| author | tomyouyou <yxszyn@163.com> | 2019-12-26 14:32:07 +0800 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2019-12-26 14:32:07 +0800 |
| commit | 2a81078436058fd16d02a6a9d8c4967014892a0b (patch) | |
| tree | 309008db73e911e8564d027541a6c29f42ee6b64 | |
| parent | 7af37e5bb8bc4a517a6ab26a6038bef6cfa946e7 (diff) | |
| download | rabbitmq-server-git-2a81078436058fd16d02a6a9d8c4967014892a0b.tar.gz | |
Update rabbit_recovery_terms.erl
| -rw-r--r-- | src/rabbit_recovery_terms.erl | 16 |
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 |
