From f11e114c948ae87382e2f69452e32fb8521deded Mon Sep 17 00:00:00 2001 From: Andrew Thompson Date: Tue, 5 Jul 2011 22:54:11 -0400 Subject: [PATCH] Don't leak file handles on rotation --- src/lager_util.erl | 6 ++++++ 1 file changed, 6 insertions(+) diff --git a/src/lager_util.erl b/src/lager_util.erl index ec6631d..b4a9f9d 100644 --- a/src/lager_util.erl +++ b/src/lager_util.erl @@ -70,6 +70,9 @@ ensure_logfile(Name, FD, Inode, Buffer) -> true -> {ok, {FD, Inode}}; false -> + %% delayed write can cause file:close not to do a close + file:close(FD), + file:close(FD), case open_logfile(Name, Buffer) of {ok, {FD2, Inode3}} -> %% inode changed, file was probably moved and @@ -80,6 +83,9 @@ ensure_logfile(Name, FD, Inode, Buffer) -> end end; _ -> + %% delayed write can cause file:close not to do a close + file:close(FD), + file:close(FD), case open_logfile(Name, Buffer) of {ok, {FD2, Inode3}} -> %% file was removed