From 7e894b33ee20d67bccb7635926eb1111f4295819 Mon Sep 17 00:00:00 2001 From: xuzhonghu Date: Tue, 15 May 2018 17:08:35 +0800 Subject: [PATCH 1/2] pass stop channel to node-controller --- cmd/cloud-controller-manager/app/controllermanager.go | 5 ++--- pkg/controller/cloud/node_controller.go | 6 +++--- 2 files changed, 5 insertions(+), 6 deletions(-) diff --git a/cmd/cloud-controller-manager/app/controllermanager.go b/cmd/cloud-controller-manager/app/controllermanager.go index b0fe7b02ce3..8589ba35d5c 100644 --- a/cmd/cloud-controller-manager/app/controllermanager.go +++ b/cmd/cloud-controller-manager/app/controllermanager.go @@ -216,13 +216,12 @@ func startControllers(c *cloudcontrollerconfig.CompletedConfig, rootClientBuilde c.Generic.ComponentConfig.KubeCloudShared.NodeMonitorPeriod.Duration, c.Extra.NodeStatusUpdateFrequency) - nodeController.Run() + nodeController.Run(stop) time.Sleep(wait.Jitter(c.Generic.ComponentConfig.GenericComponent.ControllerStartInterval.Duration, ControllerStartJitter)) // Start the PersistentVolumeLabelController pvlController := cloudcontrollers.NewPersistentVolumeLabelController(client("pvl-controller"), cloud) - threads := 5 - go pvlController.Run(threads, stop) + go pvlController.Run(5, stop) time.Sleep(wait.Jitter(c.Generic.ComponentConfig.GenericComponent.ControllerStartInterval.Duration, ControllerStartJitter)) // Start the service controller diff --git a/pkg/controller/cloud/node_controller.go b/pkg/controller/cloud/node_controller.go index 50050702304..0867ee8bbbc 100644 --- a/pkg/controller/cloud/node_controller.go +++ b/pkg/controller/cloud/node_controller.go @@ -112,7 +112,7 @@ func NewCloudNodeController( // This controller deletes a node if kubelet is not reporting // and the node is gone from the cloud provider. -func (cnc *CloudNodeController) Run() { +func (cnc *CloudNodeController) Run(stopCh <-chan struct{}) { defer utilruntime.HandleCrash() // The following loops run communicate with the APIServer with a worst case complexity @@ -120,10 +120,10 @@ func (cnc *CloudNodeController) Run() { // very infrequently. DO NOT MODIFY this to perform frequent operations. // Start a loop to periodically update the node addresses obtained from the cloud - go wait.Until(cnc.UpdateNodeStatus, cnc.nodeStatusUpdateFrequency, wait.NeverStop) + go wait.Until(cnc.UpdateNodeStatus, cnc.nodeStatusUpdateFrequency, stopCh) // Start a loop to periodically check if any nodes have been deleted from cloudprovider - go wait.Until(cnc.MonitorNode, cnc.nodeMonitorPeriod, wait.NeverStop) + go wait.Until(cnc.MonitorNode, cnc.nodeMonitorPeriod, stopCh) } // UpdateNodeStatus updates the node status, such as node addresses From f7aa5037c8c09eabd636c10b532ba7e2cc13766f Mon Sep 17 00:00:00 2001 From: xuzhonghu Date: Tue, 15 May 2018 17:22:40 +0800 Subject: [PATCH 2/2] fix ut --- pkg/controller/cloud/node_controller_test.go | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/pkg/controller/cloud/node_controller_test.go b/pkg/controller/cloud/node_controller_test.go index 6214c9d85fa..ee25f12f737 100644 --- a/pkg/controller/cloud/node_controller_test.go +++ b/pkg/controller/cloud/node_controller_test.go @@ -252,7 +252,7 @@ func TestNodeShutdown(t *testing.T) { } eventBroadcaster.StartLogging(glog.Infof) - cloudNodeController.Run() + cloudNodeController.Run(wait.NeverStop) select { case <-fnh.PatchWaitChan: @@ -351,7 +351,7 @@ func TestNodeDeleted(t *testing.T) { } eventBroadcaster.StartLogging(glog.Infof) - cloudNodeController.Run() + cloudNodeController.Run(wait.NeverStop) select { case <-fnh.DeleteWaitChan: @@ -768,7 +768,7 @@ func TestNodeAddresses(t *testing.T) { }, } - cloudNodeController.Run() + cloudNodeController.Run(wait.NeverStop) <-time.After(2 * time.Second) @@ -872,7 +872,7 @@ func TestNodeProvidedIPAddresses(t *testing.T) { assert.Equal(t, "node0", fnh.UpdatedNodes[0].Name, "Node was not updated") assert.Equal(t, 3, len(fnh.UpdatedNodes[0].Status.Addresses), "Node status unexpectedly updated") - cloudNodeController.Run() + cloudNodeController.Run(wait.NeverStop) <-time.After(2 * time.Second)