From 47f0e738e902fe5158730b4f62086fc100db9d80 Mon Sep 17 00:00:00 2001 From: Marcin Wielgus Date: Mon, 10 Oct 2016 16:53:15 +0200 Subject: [PATCH] Move periodic backoff gc to federation utils --- .../deployment/deploymentcontroller.go | 12 +------ .../ingress/ingress_controller.go | 14 ++------ .../namespace/namespace_controller.go | 9 +---- .../replicaset/replicasetcontroller.go | 9 +---- .../secret/secret_controller.go | 9 +---- .../pkg/federation-controller/util/backoff.go | 36 +++++++++++++++++++ 6 files changed, 43 insertions(+), 46 deletions(-) create mode 100644 federation/pkg/federation-controller/util/backoff.go diff --git a/federation/pkg/federation-controller/deployment/deploymentcontroller.go b/federation/pkg/federation-controller/deployment/deploymentcontroller.go index 74833527871..36be591ca8a 100644 --- a/federation/pkg/federation-controller/deployment/deploymentcontroller.go +++ b/federation/pkg/federation-controller/deployment/deploymentcontroller.go @@ -228,17 +228,7 @@ func (fdc *DeploymentController) Run(workers int, stopCh <-chan struct{}) { go wait.Until(fdc.worker, time.Second, stopCh) } - go func() { - for { - // Perform backof registry cleanup from time to time. - select { - case <-time.After(time.Minute): - fdc.deploymentBackoff.GC() - case <-stopCh: - return - } - } - }() + fedutil.StartBackoffGC(fdc.deploymentBackoff, stopCh) <-stopCh glog.Infof("Shutting down DeploymentController") diff --git a/federation/pkg/federation-controller/ingress/ingress_controller.go b/federation/pkg/federation-controller/ingress/ingress_controller.go index 68236ddeb23..ae209a06439 100644 --- a/federation/pkg/federation-controller/ingress/ingress_controller.go +++ b/federation/pkg/federation-controller/ingress/ingress_controller.go @@ -317,17 +317,9 @@ func (ic *IngressController) Run(stopChan <-chan struct{}) { } ic.reconcileConfigMapForCluster(clusterName) }) - go func() { - select { - case <-time.After(time.Minute): - glog.V(4).Infof("Ingress controller is garbage collecting") - ic.ingressBackoff.GC() - ic.configMapBackoff.GC() - glog.V(4).Infof("Ingress controller garbage collection complete") - case <-stopChan: - return - } - }() + + util.StartBackoffGC(ic.ingressBackoff, stopChan) + util.StartBackoffGC(ic.configMapBackoff, stopChan) } func (ic *IngressController) deliverIngressObj(obj interface{}, delay time.Duration, failed bool) { diff --git a/federation/pkg/federation-controller/namespace/namespace_controller.go b/federation/pkg/federation-controller/namespace/namespace_controller.go index 9e7fb98638b..47e4cef0d5b 100644 --- a/federation/pkg/federation-controller/namespace/namespace_controller.go +++ b/federation/pkg/federation-controller/namespace/namespace_controller.go @@ -180,14 +180,7 @@ func (nc *NamespaceController) Run(stopChan <-chan struct{}) { nc.clusterDeliverer.StartWithHandler(func(_ *util.DelayingDelivererItem) { nc.reconcileNamespacesOnClusterChange() }) - go func() { - select { - case <-time.After(time.Minute): - nc.namespaceBackoff.GC() - case <-stopChan: - return - } - }() + util.StartBackoffGC(nc.namespaceBackoff, stopChan) } func (nc *NamespaceController) deliverNamespaceObj(obj interface{}, delay time.Duration, failed bool) { diff --git a/federation/pkg/federation-controller/replicaset/replicasetcontroller.go b/federation/pkg/federation-controller/replicaset/replicasetcontroller.go index 585dc8a0ae6..d8eb56ff80a 100644 --- a/federation/pkg/federation-controller/replicaset/replicasetcontroller.go +++ b/federation/pkg/federation-controller/replicaset/replicasetcontroller.go @@ -228,14 +228,7 @@ func (frsc *ReplicaSetController) Run(workers int, stopCh <-chan struct{}) { go wait.Until(frsc.worker, time.Second, stopCh) } - go func() { - select { - case <-time.After(time.Minute): - frsc.replicaSetBackoff.GC() - case <-stopCh: - return - } - }() + fedutil.StartBackoffGC(frsc.replicaSetBackoff, stopCh) <-stopCh glog.Infof("Shutting down ReplicaSetController") diff --git a/federation/pkg/federation-controller/secret/secret_controller.go b/federation/pkg/federation-controller/secret/secret_controller.go index 3e60d6251c7..cbd983532e3 100644 --- a/federation/pkg/federation-controller/secret/secret_controller.go +++ b/federation/pkg/federation-controller/secret/secret_controller.go @@ -179,14 +179,7 @@ func (secretcontroller *SecretController) Run(stopChan <-chan struct{}) { secretcontroller.clusterDeliverer.StartWithHandler(func(_ *util.DelayingDelivererItem) { secretcontroller.reconcileSecretsOnClusterChange() }) - go func() { - select { - case <-time.After(time.Minute): - secretcontroller.secretBackoff.GC() - case <-stopChan: - return - } - }() + util.StartBackoffGC(secretcontroller.secretBackoff, stopChan) } func getSecretKey(namespace, name string) string { diff --git a/federation/pkg/federation-controller/util/backoff.go b/federation/pkg/federation-controller/util/backoff.go new file mode 100644 index 00000000000..ff18e8be9a0 --- /dev/null +++ b/federation/pkg/federation-controller/util/backoff.go @@ -0,0 +1,36 @@ +/* +Copyright 2016 The Kubernetes Authors. + +Licensed under the Apache License, Version 2.0 (the "License"); +you may not use this file except in compliance with the License. +You may obtain a copy of the License at + + http://www.apache.org/licenses/LICENSE-2.0 + +Unless required by applicable law or agreed to in writing, software +distributed under the License is distributed on an "AS IS" BASIS, +WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. +See the License for the specific language governing permissions and +limitations under the License. +*/ + +package util + +import ( + "time" + + "k8s.io/kubernetes/pkg/util/flowcontrol" +) + +func StartBackoffGC(backoff *flowcontrol.Backoff, stopCh <-chan struct{}) { + go func() { + for { + select { + case <-time.After(time.Minute): + backoff.GC() + case <-stopCh: + return + } + } + }() +}