From 49fe484e940d543be259f1bf661395229bdd7591 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Fabian=20St=C3=A4ber?= Date: Thu, 6 Jun 2019 23:37:10 +0300 Subject: [PATCH] improve windows file tailer shutdown --- tailer/fswatcher/fseventProducerLoop_windows.go | 14 ++++++++++++-- tailer/fswatcher_test.go | 2 +- 2 files changed, 13 insertions(+), 3 deletions(-) diff --git a/tailer/fswatcher/fseventProducerLoop_windows.go b/tailer/fswatcher/fseventProducerLoop_windows.go index f03fb588..d00ff826 100644 --- a/tailer/fswatcher/fseventProducerLoop_windows.go +++ b/tailer/fswatcher/fseventProducerLoop_windows.go @@ -44,9 +44,19 @@ func runWinWatcherLoop(w *winfsnotify.Watcher) *winwatcherloop { for { select { case event := <-w.Event: - events <- event + select { + case events <- event: + case <-done: + w.Close() + return + } case err := <-w.Error: - errors <- NewError(NotSpecified, err, "") + select { + case errors <- NewError(NotSpecified, err, ""): + case <-done: + w.Close() + return + } case <-done: w.Close() return diff --git a/tailer/fswatcher_test.go b/tailer/fswatcher_test.go index e0f8cb26..ad3c6520 100644 --- a/tailer/fswatcher_test.go +++ b/tailer/fswatcher_test.go @@ -333,7 +333,7 @@ func assertGoroutinesTerminated(t *testing.T, ctx *context, nGoroutinesBefore in nHangingGoroutines := runtime.NumGoroutine() - nGoroutinesBefore if nHangingGoroutines > 0 { pprof.Lookup("goroutine").WriteTo(os.Stdout, 1) - fatalf(t, ctx, "%v goroutines did not shut down properly.", nHangingGoroutines) + fatalf(t, ctx, "%v goroutine(s) did not shut down properly.", nHangingGoroutines) } }