close the inotify watcher when returning
might fix http://bugs.activestate.com/show_bug.cgi?id=95803#c12
This commit is contained in:
parent
5c84486ca3
commit
74f84016b8
2
tail.go
2
tail.go
|
@ -76,12 +76,10 @@ func (tail *Tail) reopen(wait bool) {
|
|||
tail.file, err = os.Open(tail.Filename)
|
||||
if err != nil {
|
||||
if os.IsNotExist(err) && wait {
|
||||
log.Println("blocking until exists")
|
||||
err := tail.watcher.BlockUntilExists()
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
log.Println("exists now")
|
||||
continue
|
||||
}
|
||||
log.Println(fmt.Sprintf("Unable to reopen file (%s): %s", tail.Filename, err))
|
||||
|
|
3
watch.go
3
watch.go
|
@ -36,7 +36,7 @@ func (fw *InotifyFileWatcher) BlockUntilExists() error {
|
|||
}
|
||||
<-w.Event
|
||||
w.RemoveWatch(filepath.Dir(fw.Filename))
|
||||
// XXX: how to free up w's goroutines without relying on the gc?
|
||||
w.Close()
|
||||
return nil
|
||||
}
|
||||
|
||||
|
@ -63,6 +63,7 @@ func (fw *InotifyFileWatcher) ChangeEvents() chan bool {
|
|||
case evt.IsRename():
|
||||
close(ch)
|
||||
w.RemoveWatch(fw.Filename)
|
||||
w.Close()
|
||||
return
|
||||
|
||||
case evt.IsModify():
|
||||
|
|
Loading…
Reference in New Issue