Skip to content

Commit ad188fd

Browse files
committed
fix send on closed channel
1 parent a585b9c commit ad188fd

File tree

2 files changed

+8
-8
lines changed

2 files changed

+8
-8
lines changed

tailer/fswatcher/fswatcher_darwin.go

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -104,16 +104,16 @@ func Run(globs []string, readall bool, failOnMissingFile bool) (FSWatcher, error
104104

105105
for { // kevent consumer loop
106106
select {
107+
case <-w.done:
108+
return
107109
case event := <-keventProducerLoop.events:
108110
w.processEvent(event, logger2)
109111
case err := <-keventProducerLoop.errors:
110112
select {
111-
case w.errors <- err:
112113
case <-w.done:
114+
case w.errors <- err:
113115
}
114116
return
115-
case <-w.done:
116-
return
117117
}
118118
}
119119
}()
@@ -352,9 +352,9 @@ func (w *watcher) readNewLines(file *fileWithReader, log logrus.FieldLogger) {
352352
}
353353
log.Debugf("read line %q", line)
354354
select {
355-
case w.lines <- Line{Line: line, File: file.file.Name()}:
356355
case <-w.done:
357356
return
357+
case w.lines <- Line{Line: line, File: file.file.Name()}:
358358
}
359359
}
360360
}
@@ -368,8 +368,8 @@ OUTER:
368368
}
369369
}
370370
select {
371-
case w.errors <- NewError(FileNotFound, fmt.Sprintf("%v: no such file", glob), nil):
372371
case <-w.done:
372+
case w.errors <- NewError(FileNotFound, fmt.Sprintf("%v: no such file", glob), nil):
373373
}
374374
w.Close()
375375
return true
@@ -478,8 +478,8 @@ func contains(list []*fileWithReader, f *fileWithReader) bool {
478478

479479
func (w *watcher) errorClose(cause error, format string, a ...interface{}) {
480480
select {
481-
case w.errors <- NewError(NotSpecified, fmt.Sprintf(format, a...), cause):
482481
case <-w.done:
482+
case w.errors <- NewError(NotSpecified, fmt.Sprintf(format, a...), cause):
483483
}
484484
w.Close()
485485
}

tailer/fswatcher/keventloop_darwin.go

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -54,16 +54,16 @@ func runKeventLoop(kq int) *keventloop {
5454
return
5555
} else if err != nil {
5656
select {
57-
case l.errors <- NewError(NotSpecified, "kevent system call failed", err):
5857
case <-l.done:
58+
case l.errors <- NewError(NotSpecified, "kevent system call failed", err):
5959
}
6060
return
6161
} else {
6262
for i = 0; i < n; i++ {
6363
select {
64-
case l.events <- eventBuf[i]:
6564
case <-l.done:
6665
return
66+
case l.events <- eventBuf[i]:
6767
}
6868
}
6969
}

0 commit comments

Comments
 (0)