From fd874ab1731b082115c8cb206d41b15221de1fb4 Mon Sep 17 00:00:00 2001 From: gmarek Date: Fri, 14 Oct 2016 14:40:08 +0200 Subject: [PATCH] PodGCController waits for informer sync before doing anything. --- pkg/controller/podgc/gc_controller.go | 4 ++++ pkg/controller/podgc/gc_controller_test.go | 12 ++++++++++++ 2 files changed, 16 insertions(+) diff --git a/pkg/controller/podgc/gc_controller.go b/pkg/controller/podgc/gc_controller.go index f2ff32f9c09..b5aa442793f 100644 --- a/pkg/controller/podgc/gc_controller.go +++ b/pkg/controller/podgc/gc_controller.go @@ -112,6 +112,10 @@ func (gcc *PodGCController) Run(stop <-chan struct{}) { } func (gcc *PodGCController) gc() { + if !gcc.podController.HasSynced() || !gcc.nodeController.HasSynced() { + glog.V(2).Infof("PodGCController is waiting for informer sync...") + return + } pods, err := gcc.podStore.List(labels.Everything()) if err != nil { glog.Errorf("Error while listing all Pods: %v", err) diff --git a/pkg/controller/podgc/gc_controller_test.go b/pkg/controller/podgc/gc_controller_test.go index f0b9a8e3811..ab94d874cca 100644 --- a/pkg/controller/podgc/gc_controller_test.go +++ b/pkg/controller/podgc/gc_controller_test.go @@ -28,6 +28,14 @@ import ( "k8s.io/kubernetes/pkg/util/sets" ) +type FakeController struct{} + +func (*FakeController) Run(<-chan struct{}) {} + +func (*FakeController) HasSynced() bool { + return true +} + func TestGCTerminated(t *testing.T) { type nameToPhase struct { name string @@ -111,6 +119,8 @@ func TestGCTerminated(t *testing.T) { ObjectMeta: api.ObjectMeta{Name: "node"}, }) gcc.nodeStore = cache.StoreToNodeLister{Store: store} + gcc.podController = &FakeController{} + gcc.nodeController = &FakeController{} gcc.gc() @@ -181,6 +191,8 @@ func TestGCOrphaned(t *testing.T) { store := cache.NewStore(cache.MetaNamespaceKeyFunc) gcc.nodeStore = cache.StoreToNodeLister{Store: store} + gcc.podController = &FakeController{} + gcc.nodeController = &FakeController{} gcc.gc()