From 0e5a49f6672ab76972961b80cbe9aa448ca6f599 Mon Sep 17 00:00:00 2001 From: Anirudh Date: Fri, 19 Aug 2016 11:49:05 -0700 Subject: [PATCH] Petset hotlooping issue. --- pkg/controller/petset/pet_set.go | 8 +++++--- 1 file changed, 5 insertions(+), 3 deletions(-) diff --git a/pkg/controller/petset/pet_set.go b/pkg/controller/petset/pet_set.go index bc77dd02004..25c1a44bda8 100644 --- a/pkg/controller/petset/pet_set.go +++ b/pkg/controller/petset/pet_set.go @@ -73,7 +73,7 @@ type PetSetController struct { blockingPetStore *unhealthyPetTracker // Controllers that need to be synced. - queue *workqueue.Type + queue workqueue.RateLimitingInterface // syncHandler handles sync events for petsets. // Abstracted as a func to allow injection for testing. @@ -94,7 +94,7 @@ func NewPetSetController(podInformer framework.SharedIndexInformer, kubeClient * newSyncer: func(blockingPet *pcb) *petSyncer { return &petSyncer{pc, blockingPet} }, - queue: workqueue.New(), + queue: workqueue.NewRateLimitingQueue(workqueue.DefaultControllerRateLimiter()), } podInformer.AddEventHandler(framework.ResourceEventHandlerFuncs{ @@ -268,7 +268,9 @@ func (psc *PetSetController) worker() { defer psc.queue.Done(key) if errs := psc.syncHandler(key.(string)); len(errs) != 0 { glog.Errorf("Error syncing PetSet %v, requeuing: %v", key.(string), errs) - psc.queue.Add(key) + psc.queue.AddRateLimited(key) + } else { + psc.queue.Forget(key) } }() }