Merge pull request #70821 from RenaudWasTaken/fix-pluginwatcher-panic

Pluginwatcher: Fix panic on failed startup
pull/58/head
k8s-ci-robot 2018-11-09 20:25:41 -08:00 committed by GitHub
commit bb4fbc2770
No known key found for this signature in database
GPG Key ID: 4AEE18F83AFDEB23
1 changed files with 10 additions and 1 deletions

View File

@ -175,10 +175,17 @@ func (w *Watcher) init() error {
}
// Walks through the plugin directory discover any existing plugin sockets.
// Goroutines started here will be waited for in Stop() before cleaning up.
// Ignore all errors except root dir not being walkable
func (w *Watcher) traversePluginDir(dir string) error {
return w.fs.Walk(dir, func(path string, info os.FileInfo, err error) error {
if err != nil {
return fmt.Errorf("error accessing path: %s error: %v", path, err)
if path == dir {
return fmt.Errorf("error accessing path: %s error: %v", path, err)
}
glog.Errorf("error accessing path: %s error: %v", path, err)
return nil
}
switch mode := info.Mode(); {
@ -187,7 +194,9 @@ func (w *Watcher) traversePluginDir(dir string) error {
return fmt.Errorf("failed to watch %s, err: %v", path, err)
}
case mode&os.ModeSocket != 0:
w.wg.Add(1)
go func() {
defer w.wg.Done()
w.fsWatcher.Events <- fsnotify.Event{
Name: path,
Op: fsnotify.Create,