Only start informers once in clustercache

This commit is contained in:
Darren Shepherd 2020-03-24 15:10:01 -07:00
parent 3bb1459a8b
commit 1d84c1fc9f

View File

@ -164,11 +164,9 @@ func (h *clusterCache) OnSchemas(schemas *schema.Collection) error {
if w.informer == nil { if w.informer == nil {
w.informer = h.informerFactory.ForResource(gvr).Informer() w.informer = h.informerFactory.ForResource(gvr).Informer()
w.start = true w.start = true
}
logrus.Infof("Watching metadata for %s", gvk.String())
h.addResourceEventHandler(gvr, w.informer) h.addResourceEventHandler(gvr, w.informer)
} }
}
for gvr, w := range h.watchers { for gvr, w := range h.watchers {
if !gvrs[gvr] { if !gvrs[gvr] {
@ -178,14 +176,19 @@ func (h *clusterCache) OnSchemas(schemas *schema.Collection) error {
} }
} }
var toWait []*watcher
for _, w := range toStart { for _, w := range toStart {
if !w.start { if !w.start {
continue continue
} }
w.start = false
logrus.Infof("Watching metadata for %s", w.gvk)
go w.informer.Run(w.ctx.Done()) go w.informer.Run(w.ctx.Done())
toWait = append(toWait, w)
} }
for _, w := range toStart { for _, w := range toWait {
cache.WaitForCacheSync(w.ctx.Done(), w.informer.HasSynced) cache.WaitForCacheSync(w.ctx.Done(), w.informer.HasSynced)
} }