summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorErlang/OTP <otp@erlang.org>2019-09-11 18:19:53 +0200
committerErlang/OTP <otp@erlang.org>2019-09-11 18:19:53 +0200
commit99928603bbed89a6e5161b1a34039358f350d8dd (patch)
tree973a926bff15b5595cb1a0ec529111cbf23d0b34
parent4e0ab84c9f5f57bf73f72294789a447f458291f5 (diff)
parentd63712d2e59c6a861822fe1a2d1cd2abb9a4ff63 (diff)
downloaderlang-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.erl4
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}} =