diff --git a/tail.go b/tail.go index 172a056..3bda8a1 100644 --- a/tail.go +++ b/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)) diff --git a/watch.go b/watch.go index 24ec164..714d2fb 100644 --- a/watch.go +++ b/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():