diff options
author | Ingela Andin <[email protected]> | 2017-08-11 16:17:04 +0200 |
---|---|---|
committer | GitHub <[email protected]> | 2017-08-11 16:17:04 +0200 |
commit | 6b293df5e86e85b255d3ccf55f83bd847867679f (patch) | |
tree | ab8447ecb2cd09fa5fb894fbf73b9586b824fa7b /lib/inets/src | |
parent | 99f0de1edcf0d49117fe5699230edf5f2d45c39a (diff) | |
parent | a3d6cffe6924bc5bbe1354d96da29dc70517a4ad (diff) | |
download | otp-6b293df5e86e85b255d3ccf55f83bd847867679f.tar.gz otp-6b293df5e86e85b255d3ccf55f83bd847867679f.tar.bz2 otp-6b293df5e86e85b255d3ccf55f83bd847867679f.zip |
Merge pull request #1509 from vances/issue-erl-398
HTTP server truncates existing logs
OTP-14530
Diffstat (limited to 'lib/inets/src')
-rw-r--r-- | lib/inets/src/http_server/mod_disk_log.erl | 27 |
1 files changed, 18 insertions, 9 deletions
diff --git a/lib/inets/src/http_server/mod_disk_log.erl b/lib/inets/src/http_server/mod_disk_log.erl index 3be5f2dd74..2023546f01 100644 --- a/lib/inets/src/http_server/mod_disk_log.erl +++ b/lib/inets/src/http_server/mod_disk_log.erl @@ -363,17 +363,21 @@ create_disk_log(Filename, MaxBytes, MaxFiles, ConfigList) -> %%---------------------------------------------------------------------- open(Filename, MaxBytes, MaxFiles, internal) -> - Opts = [{format, internal}, {repair, truncate}], - open1(Filename, MaxBytes, MaxFiles, Opts); + Opt0 = {format, internal}, + Opts1 = [Opt0, {repair, true}], + Opts2 = [Opt0, {repair, truncate}], + open1(Filename, MaxBytes, MaxFiles, Opts1, Opts2); open(Filename, MaxBytes, MaxFiles, _) -> Opts = [{format, external}], - open1(Filename, MaxBytes, MaxFiles, Opts). + open1(Filename, MaxBytes, MaxFiles, Opts, Opts). -open1(Filename, MaxBytes, MaxFiles, Opts0) -> - Opts1 = [{name, Filename}, {file, Filename}, {type, wrap}] ++ Opts0, - case open2(Opts1, {MaxBytes, MaxFiles}) of +open1(Filename, MaxBytes, MaxFiles, Opts1, Opts2) -> + Opts0 = [{name, Filename}, {file, Filename}, {type, wrap}], + case open2(Opts0 ++ Opts1, Opts0 ++ Opts2, {MaxBytes, MaxFiles}) of {ok, LogDB} -> {ok, LogDB}; + {repaired, LogDB, {recovered, _}, {badbytes, _}} -> + {ok, LogDB}; {error, Reason} -> {error, ?NICE("Can't create " ++ Filename ++ @@ -382,11 +386,16 @@ open1(Filename, MaxBytes, MaxFiles, Opts0) -> {error, ?NICE("Can't create "++Filename)} end. -open2(Opts, Size) -> - case disk_log:open(Opts) of +open2(Opts1, Opts2, Size) -> + case disk_log:open(Opts1) of {error, {badarg, size}} -> %% File did not exist, add the size option and try again - disk_log:open([{size, Size} | Opts]); + disk_log:open([{size, Size} | Opts1]); + {error, {Reason, _}} when + Reason == not_a_log_file; + Reason == invalid_index_file -> + %% File was corrupt, add the truncate option and try again + disk_log:open([{size, Size} | Opts2]); Else -> Else end. |