close the inotify watcher when returning

might fix http://bugs.activestate.com/show_bug.cgi?id=95803#c12
This commit is contained in:
Sridhar Ratnakumar 2012-10-12 07:09:36 -07:00
parent 5c84486ca3
commit 74f84016b8
2 changed files with 2 additions and 3 deletions

View File

@ -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))

View File

@ -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():