aboutsummaryrefslogtreecommitdiff
path: root/plugin/kubernetes/object/informer.go
diff options
context:
space:
mode:
Diffstat (limited to 'plugin/kubernetes/object/informer.go')
-rw-r--r--plugin/kubernetes/object/informer.go19
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
}