From 42fda5fe7ef5971ea6adec8b095270b351eb2dbf Mon Sep 17 00:00:00 2001 From: Kir Kolyshkin Date: Wed, 29 Aug 2018 13:46:46 -0700 Subject: [PATCH] pkg/filenotify: poller.Add: fix fd leaks on err In case of errors, the file descriptor is never closed. Fix it. Signed-off-by: Kir Kolyshkin (cherry picked from commit 88bcf1573ca2eaffc15da346a1651a3749567554) Upstream-commit: 7be43586af6824c1e55cb502d9d2bab45c9b4505 Component: engine --- components/engine/pkg/filenotify/poller.go | 2 ++ 1 file changed, 2 insertions(+) diff --git a/components/engine/pkg/filenotify/poller.go b/components/engine/pkg/filenotify/poller.go index 22f1897034..7a9e1785c3 100644 --- a/components/engine/pkg/filenotify/poller.go +++ b/components/engine/pkg/filenotify/poller.go @@ -54,6 +54,7 @@ func (w *filePoller) Add(name string) error { } fi, err := os.Stat(name) if err != nil { + f.Close() return err } @@ -61,6 +62,7 @@ func (w *filePoller) Add(name string) error { w.watches = make(map[string]chan struct{}) } if _, exists := w.watches[name]; exists { + f.Close() return fmt.Errorf("watch exists") } chClose := make(chan struct{})