diff options
author | Erlang/OTP <otp@erlang.org> | 2019-09-11 18:19:53 +0200 |
---|---|---|
committer | Erlang/OTP <otp@erlang.org> | 2019-09-11 18:19:53 +0200 |
commit | 99928603bbed89a6e5161b1a34039358f350d8dd (patch) | |
tree | 973a926bff15b5595cb1a0ec529111cbf23d0b34 | |
parent | 4e0ab84c9f5f57bf73f72294789a447f458291f5 (diff) | |
parent | d63712d2e59c6a861822fe1a2d1cd2abb9a4ff63 (diff) | |
download | erlang-99928603bbed89a6e5161b1a34039358f350d8dd.tar.gz |
Merge branch 'kpy3/fix-fd-leak-in-logger/OTP-15997' into maint-21
* kpy3/fix-fd-leak-in-logger/OTP-15997:
Close log files in case of inode change properly
-rw-r--r-- | lib/kernel/src/logger_std_h.erl | 4 |
1 files changed, 2 insertions, 2 deletions
diff --git a/lib/kernel/src/logger_std_h.erl b/lib/kernel/src/logger_std_h.erl index c8f1acfca4..0e46257f99 100644 --- a/lib/kernel/src/logger_std_h.erl +++ b/lib/kernel/src/logger_std_h.erl @@ -455,12 +455,12 @@ maybe_ensure_file(State) -> %% In order to play well with tools like logrotate, we need to be able %% to re-create the file if it has disappeared (e.g. if rotated by %% logrotate) -ensure_file(#{fd:=Fd0,inode:=INode0,file_name:=FileName,modes:=Modes}=State) -> +ensure_file(#{inode:=INode0,file_name:=FileName,modes:=Modes}=State) -> case file:read_file_info(FileName,[raw]) of {ok,#file_info{inode=INode0}} -> State#{last_check=>timestamp()}; _ -> - close_log_file(Fd0), + close_log_file(State), case file:open(FileName,Modes) of {ok,Fd} -> {ok,#file_info{inode=INode}} = |