diff --git a/tools/cache/reflector.go b/tools/cache/reflector.go index d0cb2dd1..4967f98d 100644 --- a/tools/cache/reflector.go +++ b/tools/cache/reflector.go @@ -239,8 +239,6 @@ func (r *Reflector) resyncChan() (<-chan time.Time, func() bool) { func (r *Reflector) ListAndWatch(stopCh <-chan struct{}) error { glog.V(3).Infof("Listing and watching %v from %s", r.expectedType, r.name) var resourceVersion string - resyncCh, cleanup := r.resyncChan() - defer cleanup() // Explicitly set "0" as resource version - it's fine for the List() // to be served from cache and potentially be delayed relative to @@ -272,6 +270,10 @@ func (r *Reflector) ListAndWatch(stopCh <-chan struct{}) error { cancelCh := make(chan struct{}) defer close(cancelCh) go func() { + resyncCh, cleanup := r.resyncChan() + defer func() { + cleanup() // Call the last one written into cleanup + }() for { select { case <-resyncCh: