From 27d75054b3ed24b09766f176d923878f2c30fb82 Mon Sep 17 00:00:00 2001 From: Wojciech Tyczynski Date: Sun, 18 Sep 2016 07:09:11 +0200 Subject: [PATCH] Avoid unnecessary API calls from GC --- pkg/controller/garbagecollector/garbagecollector.go | 6 ++++-- 1 file changed, 4 insertions(+), 2 deletions(-) diff --git a/pkg/controller/garbagecollector/garbagecollector.go b/pkg/controller/garbagecollector/garbagecollector.go index 9c19cb69c1b..d69d3e3a7f1 100644 --- a/pkg/controller/garbagecollector/garbagecollector.go +++ b/pkg/controller/garbagecollector/garbagecollector.go @@ -410,7 +410,6 @@ 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 @@ -418,6 +417,9 @@ func (p *Propagator) processEvent() { p.removeNode(existingNode) existingNode.dependentsLock.RLock() defer existingNode.dependentsLock.RUnlock() + if len(existingNode.dependents) > 0 { + p.gc.absentOwnerCache.Add(accessor.GetUID()) + } for dep := range existingNode.dependents { p.gc.dirtyQueue.Add(&workqueue.TimedWorkQueueItem{StartTime: p.gc.clock.Now(), Object: dep}) } @@ -546,7 +548,7 @@ func NewGarbageCollector(metaOnlyClientPool dynamic.ClientPool, clientPool dynam orphanQueue: workqueue.NewTimedWorkQueue(), registeredRateLimiter: NewRegisteredRateLimiter(resources), registeredRateLimiterForMonitors: NewRegisteredRateLimiter(resources), - absentOwnerCache: NewUIDCache(100), + absentOwnerCache: NewUIDCache(500), } gc.propagator = &Propagator{ eventQueue: workqueue.NewTimedWorkQueue(),