aboutsummaryrefslogtreecommitdiffstats
path: root/lib/kernel/src
diff options
context:
space:
mode:
authorHans Bolinder <[email protected]>2011-10-10 15:53:37 +0200
committerHans Bolinder <[email protected]>2011-10-10 15:53:37 +0200
commit6ca6dd3c670fb8185ebb9a20c2a731a7375c1cac (patch)
treeb3b422d7fb2079b04b48ddb378d1ff21b754c142 /lib/kernel/src
parenteb9656c94f4e92c2a4875dc628cb41d283dd4d2b (diff)
parent12c84d2ec315c8d26afc2adb8aa50cfe6183fc8a (diff)
downloadotp-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.erl22
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} ->