diff options
Diffstat (limited to 'plugin/kubernetes/object/informer.go')
-rw-r--r-- | plugin/kubernetes/object/informer.go | 19 |
1 files changed, 16 insertions, 3 deletions
diff --git a/plugin/kubernetes/object/informer.go b/plugin/kubernetes/object/informer.go index bd4d05d30..e0d7f180c 100644 --- a/plugin/kubernetes/object/informer.go +++ b/plugin/kubernetes/object/informer.go @@ -25,11 +25,12 @@ func DefaultProcessor(convert ToFunc) ProcessorBuilder { return func(clientState cache.Indexer, h cache.ResourceEventHandler) cache.ProcessFunc { return func(obj interface{}) error { for _, d := range obj.(cache.Deltas) { - - obj := convert(d.Object) - switch d.Type { case cache.Sync, cache.Added, cache.Updated: + obj, err := convert(d.Object) + if err != nil { + return err + } if old, exists, err := clientState.Get(obj); err == nil && exists { if err := clientState.Update(obj); err != nil { return err @@ -42,6 +43,18 @@ func DefaultProcessor(convert ToFunc) ProcessorBuilder { h.OnAdd(obj) } case cache.Deleted: + var obj interface{} + var err error + tombstone, ok := d.Object.(cache.DeletedFinalStateUnknown) + if ok { + obj, err = convert(tombstone.Obj) + } else { + obj, err = convert(d.Object) + } + if err != nil && err != errPodTerminating { + return err + } + if err := clientState.Delete(obj); err != nil { return err } |