in kubernetes/watcher.go [321:364]
func (w *watcher) process(_ context.Context) bool {
obj, quit := w.queue.Get()
if quit {
return false
}
defer w.queue.Done(obj)
var entry *item
var ok bool
if entry, ok = obj.(*item); !ok {
utilruntime.HandleError(fmt.Errorf("expected *item in workqueue but got %#v", obj))
return true
}
key, ok := entry.object.(string)
if !ok {
return false
}
o, exists, err := w.store.GetByKey(key)
if err != nil {
utilruntime.HandleError(fmt.Errorf("getting object %#v from cache: %w", obj, err))
return true
}
if !exists {
if entry.state == delete {
w.logger.Debugf("Object %+v was not found in the store, deleting anyway!", key)
// delete anyway in order to clean states
w.handler.OnDelete(entry.objectRaw)
}
return true
}
switch entry.state {
case add:
w.handler.OnAdd(o)
case update:
w.handler.OnUpdate(o)
case delete:
w.handler.OnDelete(o)
}
return true
}