kubernetes/cmd
Kubernetes Submit Queue 7f0004de5a Merge pull request #44379 from guangyouyu/garyyu_master
Automatic merge from submit-queue

Bugfix: cloud-controller-manager routeController.run() block in WaitForCacheSync

**What this PR does / why we need it**:
cloud-controller-manager routeController.run not run in goroutine will block to  wait nodeListerSynced because sharedInformers not started


**Special notes for your reviewer**:

cloud-controller-manager routeController.run  should run in goroutine like the same code in kube-controller-manager,or it will block to  wait nodeListerSynced,but sharedInformers not startd.

```go
//controller-manager.go:197
func StartControllers(s *options.CloudControllerManagerServer, kubeconfig *restclient.Config, rootClientBuilder, clientBuilder controller.ControllerClientBuilder, stop <-chan struct{}, recorder record.EventRecorder, cloud cloudprovider.Interface) error {
	// Function to build the kube client object
	client := func(serviceAccountName string) clientset.Interface {
		return rootClientBuilder.ClientOrDie(serviceAccountName)
	}
	versionedClient := client("shared-informers")
	sharedInformers := informers.NewSharedInformerFactory(versionedClient, resyncPeriod(s)())
ocateNodeCIDRs && s.ConfigureCloudRoutes {
		if routes, ok := cloud.Routes(); !ok {
			glog.Warning("configure-cloud-routes is set, but cloud provider does not support routes. Will not configure cloud provider routes.")
		} else {
			routeController := routecontroller.New(routes, client("route-controller"), sharedInformers.Core().V1().Nodes(), s.ClusterName, clusterCIDR)
                       //should run in goroutine
----->		routeController.Run(stop, s.RouteReconciliationPeriod.Duration)
			time.Sleep(wait.Jitter(s.ControllerStartInterval.Duration, ControllerStartJitter))
		}
	} else {
		glog.Infof("Will not configure cloud provider routes for allocate-node-cidrs: %v, configure-cloud-routes: %v.", s.AllocateNodeCIDRs, s.ConfigureCloudRoutes)
	}

---> 	sharedInformers.Start(stop)

	select {}
}



//routecontroller.go:77
func (rc *RouteController) Run(stopCh <-chan struct{}, syncPeriod time.Duration) {
	defer utilruntime.HandleCrash()

	glog.Info("Starting the route controller")
       //will block
--->   	if !cache.WaitForCacheSync(stopCh, rc.nodeListerSynced) {
		utilruntime.HandleError(fmt.Errorf("timed out waiting for caches to sync"))
		return
	}

	go wait.NonSlidingUntil(func() {
		if err := rc.reconcileNodeRoutes(); err != nil {
			glog.Errorf("Couldn't reconcile node routes: %v", err)
		}
	}, syncPeriod, wait.NeverStop)
}
```
2017-04-12 23:58:57 -07:00
..
clicheck Enable auto-generating sources rules 2017-01-05 14:14:13 -08:00
cloud-controller-manager Bugfix: cloud-controller-manager routeController.run() block in WaitForCacheSync 2017-04-12 13:03:41 +08:00
gendocs Enable auto-generating sources rules 2017-01-05 14:14:13 -08:00
genkubedocs Enable auto-generating sources rules 2017-01-05 14:14:13 -08:00
genman Enable auto-generating sources rules 2017-01-05 14:14:13 -08:00
genslateyaml Enable auto-generating sources rules 2017-01-05 14:14:13 -08:00
genswaggertypedocs start the apimachinery repo 2017-01-11 09:09:48 -05:00
genutils Enable auto-generating sources rules 2017-01-05 14:14:13 -08:00
genyaml Enable auto-generating sources rules 2017-01-05 14:14:13 -08:00
gke-certificates-controller Better messaging when GKE certificate signing fails. 2017-03-21 21:00:47 -07:00
hyperkube bazel: implement git build stamping 2017-04-05 11:47:39 -07:00
kube-apiserver pkg/admission: make plugin registry non-global 2017-04-12 11:37:25 +02:00
kube-controller-manager Exit from NewController() for PersistentVolumeController when InitPlugins() failed just like NewAttachDetachController() does 2017-04-12 13:43:09 +08:00
kube-proxy Merge pull request #43702 from wojtek-t/edge_based_proxy 2017-04-12 00:30:53 -07:00
kubeadm Merge pull request #41914 from mikedanese/bzl-version 2017-04-10 19:46:14 -07:00
kubectl bazel: implement git build stamping 2017-04-05 11:47:39 -07:00
kubelet Make the dockershim root directory configurable 2017-04-12 09:06:21 -04:00
kubemark Use shared informers for proxy endpoints and service configs 2017-04-04 12:51:41 -04:00
libs/go2idl Merge pull request #43081 from sttts/sttts-conversion-gen-dup-func-error 2017-04-12 05:01:45 -07:00
linkcheck Enable auto-generating sources rules 2017-01-05 14:14:13 -08:00
mungedocs Enable auto-generating sources rules 2017-01-05 14:14:13 -08:00
BUILD Merge pull request #42070 from luxas/remove_kube_discovery 2017-03-04 12:58:23 -08:00
OWNERS Updated top level owners file to match new format 2017-01-19 11:29:16 -08:00