diff --git a/pkg/controller/garbagecollector/garbagecollector.go b/pkg/controller/garbagecollector/garbagecollector.go index 9d6410d95c1..9c19cb69c1b 100644 --- a/pkg/controller/garbagecollector/garbagecollector.go +++ b/pkg/controller/garbagecollector/garbagecollector.go @@ -410,6 +410,7 @@ func (p *Propagator) processEvent() { // the node's owners list. p.removeDependentFromOwners(existingNode, removed) case event.eventType == deleteEvent: + p.gc.absentOwnerCache.Add(accessor.GetUID()) if !found { glog.V(6).Infof("%v doesn't exist in the graph, this shouldn't happen", accessor.GetUID()) return diff --git a/pkg/controller/garbagecollector/garbagecollector_test.go b/pkg/controller/garbagecollector/garbagecollector_test.go index 4909eac8c07..be1c900e629 100644 --- a/pkg/controller/garbagecollector/garbagecollector_test.go +++ b/pkg/controller/garbagecollector/garbagecollector_test.go @@ -298,8 +298,9 @@ func TestProcessEvent(t *testing.T) { uidToNode: make(map[types.UID]*node), }, gc: &GarbageCollector{ - dirtyQueue: workqueue.NewTimedWorkQueue(), - clock: clock.RealClock{}, + dirtyQueue: workqueue.NewTimedWorkQueue(), + clock: clock.RealClock{}, + absentOwnerCache: NewUIDCache(2), }, } for i := 0; i < len(scenario.events); i++ {