diff --git a/selector/default.go b/selector/default.go index 1d4424a8..452fa17c 100644 --- a/selector/default.go +++ b/selector/default.go @@ -326,12 +326,16 @@ func (c *registrySelector) run(name string) { func (c *registrySelector) watch(w registry.Watcher) error { defer w.Stop() + // reload chan + reload := make(chan bool, 1) + // manage this loop go func() { // wait for exit or reload signal select { case <-c.exit: case <-c.reload: + reload <- true } // stop the watcher @@ -341,7 +345,12 @@ func (c *registrySelector) watch(w registry.Watcher) error { for { res, err := w.Next() if err != nil { - return err + select { + case <-reload: + return nil + default: + return err + } } c.update(res) }