diff options
author | Hans Bolinder <[email protected]> | 2011-10-10 15:53:37 +0200 |
---|---|---|
committer | Hans Bolinder <[email protected]> | 2011-10-10 15:53:37 +0200 |
commit | 6ca6dd3c670fb8185ebb9a20c2a731a7375c1cac (patch) | |
tree | b3b422d7fb2079b04b48ddb378d1ff21b754c142 /lib/kernel/src | |
parent | eb9656c94f4e92c2a4875dc628cb41d283dd4d2b (diff) | |
parent | 12c84d2ec315c8d26afc2adb8aa50cfe6183fc8a (diff) | |
download | otp-6ca6dd3c670fb8185ebb9a20c2a731a7375c1cac.tar.gz otp-6ca6dd3c670fb8185ebb9a20c2a731a7375c1cac.tar.bz2 otp-6ca6dd3c670fb8185ebb9a20c2a731a7375c1cac.zip |
Merge branch 'hb/kernel/fix_disk_log/OTP-9508'
* hb/kernel/fix_disk_log/OTP-9508:
Fix two minor disk_log bugs
Diffstat (limited to 'lib/kernel/src')
-rw-r--r-- | lib/kernel/src/disk_log.erl | 22 |
1 files changed, 16 insertions, 6 deletions
diff --git a/lib/kernel/src/disk_log.erl b/lib/kernel/src/disk_log.erl index 9b8d2db437..d6bc23be6d 100644 --- a/lib/kernel/src/disk_log.erl +++ b/lib/kernel/src/disk_log.erl @@ -1240,20 +1240,29 @@ is_owner(Pid, L) -> %% ok | throw(Error) rename_file(File, NewFile, halt) -> - file:rename(File, NewFile); + case file:rename(File, NewFile) of + ok -> + ok; + Else -> + file_error(NewFile, Else) + end; rename_file(File, NewFile, wrap) -> rename_file(wrap_file_extensions(File), File, NewFile, ok). -rename_file([Ext|Exts], File, NewFile, Res) -> - NRes = case file:rename(add_ext(File, Ext), add_ext(NewFile, Ext)) of +rename_file([Ext|Exts], File, NewFile0, Res) -> + NewFile = add_ext(NewFile0, Ext), + NRes = case file:rename(add_ext(File, Ext), NewFile) of ok -> Res; Else -> - Else + file_error(NewFile, Else) end, - rename_file(Exts, File, NewFile, NRes); + rename_file(Exts, File, NewFile0, NRes); rename_file([], _File, _NewFiles, Res) -> Res. +file_error(FileName, {error, Error}) -> + {error, {file_error, FileName, Error}}. + %% "Old" error messages have been kept, arg_mismatch has been added. %%-spec compare_arg(dlog_options(), #arg{}, compare_arg([], _A, none, _OrigHead) -> @@ -1947,7 +1956,8 @@ monitor_request(Pid, Req) -> receive {'DOWN', Ref, process, Pid, _Info} -> {error, no_such_log}; - {disk_log, Pid, Reply} -> + {disk_log, Pid, Reply} when not is_tuple(Reply) orelse + element(2, Reply) =/= disk_log_stopped -> erlang:demonitor(Ref), receive {'DOWN', Ref, process, Pid, _Reason} -> |