From b103403ff706d3fe33a91bdbba860b1b6713ab0d Mon Sep 17 00:00:00 2001 From: James Munnelly Date: Wed, 21 Nov 2018 20:37:57 +0000 Subject: [PATCH] Add default rate limiter used by all controllers Signed-off-by: James Munnelly --- pkg/controller/acmechallenges/controller.go | 2 +- pkg/controller/acmechallenges/scheduler/controller.go | 2 +- pkg/controller/acmeorders/controller.go | 2 +- pkg/controller/certificates/controller.go | 2 +- pkg/controller/clusterissuers/controller.go | 2 +- pkg/controller/ingress-shim/controller.go | 2 +- pkg/controller/issuers/controller.go | 2 +- pkg/controller/util.go | 5 +++++ 8 files changed, 12 insertions(+), 7 deletions(-) diff --git a/pkg/controller/acmechallenges/controller.go b/pkg/controller/acmechallenges/controller.go index 87ce5745c..c1f20e48d 100644 --- a/pkg/controller/acmechallenges/controller.go +++ b/pkg/controller/acmechallenges/controller.go @@ -67,7 +67,7 @@ func New(ctx *controllerpkg.Context) *Controller { ctrl.syncHandler = ctrl.processNextWorkItem // exponentially back-off self checks, with a base of 2s and max wait of 20s - ctrl.queue = workqueue.NewNamedRateLimitingQueue(workqueue.NewItemExponentialFailureRateLimiter(time.Second*2, time.Second*20), "challenges") + ctrl.queue = workqueue.NewNamedRateLimitingQueue(controllerpkg.DefaultItemBasedRateLimiter(), "challenges") challengeInformer := ctrl.SharedInformerFactory.Certmanager().V1alpha1().Challenges() challengeInformer.Informer().AddEventHandler(&controllerpkg.QueuingEventHandler{Queue: ctrl.queue}) diff --git a/pkg/controller/acmechallenges/scheduler/controller.go b/pkg/controller/acmechallenges/scheduler/controller.go index 141a3ed56..085d4883b 100644 --- a/pkg/controller/acmechallenges/scheduler/controller.go +++ b/pkg/controller/acmechallenges/scheduler/controller.go @@ -51,7 +51,7 @@ func New(ctx *controllerpkg.Context) *Controller { ctrl := &Controller{Context: *ctx} ctrl.syncHandler = ctrl.processNextWorkItem - ctrl.queue = workqueue.NewNamedRateLimitingQueue(workqueue.NewItemExponentialFailureRateLimiter(time.Second*1, time.Second*10), "challenges-scheduler") + ctrl.queue = workqueue.NewNamedRateLimitingQueue(controllerpkg.DefaultItemBasedRateLimiter(), "challenges-scheduler") challengeInformer := ctrl.SharedInformerFactory.Certmanager().V1alpha1().Challenges() challengeInformer.Informer().AddEventHandler(&controllerpkg.QueuingEventHandler{Queue: ctrl.queue}) diff --git a/pkg/controller/acmeorders/controller.go b/pkg/controller/acmeorders/controller.go index 601e419ad..ae980852c 100644 --- a/pkg/controller/acmeorders/controller.go +++ b/pkg/controller/acmeorders/controller.go @@ -65,7 +65,7 @@ func New(ctx *controllerpkg.Context) *Controller { ctrl := &Controller{Context: *ctx} ctrl.syncHandler = ctrl.processNextWorkItem - ctrl.queue = workqueue.NewNamedRateLimitingQueue(workqueue.NewItemExponentialFailureRateLimiter(time.Second*2, time.Minute*1), "orders") + ctrl.queue = workqueue.NewNamedRateLimitingQueue(controllerpkg.DefaultItemBasedRateLimiter(), "orders") orderInformer := ctrl.SharedInformerFactory.Certmanager().V1alpha1().Orders() orderInformer.Informer().AddEventHandler(&controllerpkg.QueuingEventHandler{Queue: ctrl.queue}) diff --git a/pkg/controller/certificates/controller.go b/pkg/controller/certificates/controller.go index e14bf6a5b..4420c75eb 100644 --- a/pkg/controller/certificates/controller.go +++ b/pkg/controller/certificates/controller.go @@ -58,7 +58,7 @@ type Controller struct { func New(ctx *controllerpkg.Context) *Controller { ctrl := &Controller{Context: ctx} ctrl.syncHandler = ctrl.processNextWorkItem - ctrl.queue = workqueue.NewNamedRateLimitingQueue(workqueue.NewItemExponentialFailureRateLimiter(time.Second*2, time.Minute*1), "certificates") + ctrl.queue = workqueue.NewNamedRateLimitingQueue(controllerpkg.DefaultItemBasedRateLimiter(), "certificates") // Create a scheduled work queue that calls the ctrl.queue.Add method for // each object in the queue. This is used to schedule re-checks of diff --git a/pkg/controller/clusterissuers/controller.go b/pkg/controller/clusterissuers/controller.go index 482ab0f33..605ad4903 100644 --- a/pkg/controller/clusterissuers/controller.go +++ b/pkg/controller/clusterissuers/controller.go @@ -54,7 +54,7 @@ type Controller struct { func New(ctx *controllerpkg.Context) *Controller { ctrl := &Controller{Context: *ctx} ctrl.syncHandler = ctrl.processNextWorkItem - ctrl.queue = workqueue.NewNamedRateLimitingQueue(workqueue.NewItemExponentialFailureRateLimiter(time.Second*5, time.Minute*1), "clusterissuers") + ctrl.queue = workqueue.NewNamedRateLimitingQueue(controllerpkg.DefaultItemBasedRateLimiter(), "clusterissuers") clusterIssuerInformer := ctrl.SharedInformerFactory.Certmanager().V1alpha1().ClusterIssuers() clusterIssuerInformer.Informer().AddEventHandler(&controllerpkg.QueuingEventHandler{Queue: ctrl.queue}) diff --git a/pkg/controller/ingress-shim/controller.go b/pkg/controller/ingress-shim/controller.go index 5db252c27..cbd5462cc 100644 --- a/pkg/controller/ingress-shim/controller.go +++ b/pkg/controller/ingress-shim/controller.go @@ -85,7 +85,7 @@ func New( ) *Controller { ctrl := &Controller{Client: client, CMClient: cmClient, Recorder: recorder, defaults: defaults} ctrl.syncHandler = ctrl.processNextWorkItem - ctrl.queue = workqueue.NewNamedRateLimitingQueue(workqueue.NewItemExponentialFailureRateLimiter(time.Second*5, time.Minute*1), "ingresses") + ctrl.queue = workqueue.NewNamedRateLimitingQueue(controllerpkg.DefaultItemBasedRateLimiter(), "ingresses") ingressInformer.Informer().AddEventHandler(&controllerpkg.QueuingEventHandler{Queue: ctrl.queue}) ctrl.ingressLister = ingressInformer.Lister() diff --git a/pkg/controller/issuers/controller.go b/pkg/controller/issuers/controller.go index 2dbb4f861..3bac04226 100644 --- a/pkg/controller/issuers/controller.go +++ b/pkg/controller/issuers/controller.go @@ -55,7 +55,7 @@ func New(ctx *controllerpkg.Context) *Controller { } ctrl.syncHandler = ctrl.processNextWorkItem - ctrl.queue = workqueue.NewNamedRateLimitingQueue(workqueue.NewItemExponentialFailureRateLimiter(time.Second*5, time.Minute*1), "issuers") + ctrl.queue = workqueue.NewNamedRateLimitingQueue(controllerpkg.DefaultItemBasedRateLimiter(), "issuers") issuerInformer := ctrl.SharedInformerFactory.Certmanager().V1alpha1().Issuers() issuerInformer.Informer().AddEventHandler(&controllerpkg.QueuingEventHandler{Queue: ctrl.queue}) diff --git a/pkg/controller/util.go b/pkg/controller/util.go index 86c15b292..dc338f3fa 100644 --- a/pkg/controller/util.go +++ b/pkg/controller/util.go @@ -18,6 +18,7 @@ package controller import ( "reflect" + "time" "k8s.io/apimachinery/pkg/util/runtime" "k8s.io/client-go/tools/cache" @@ -28,6 +29,10 @@ var ( KeyFunc = cache.DeletionHandlingMetaNamespaceKeyFunc ) +func DefaultItemBasedRateLimiter() workqueue.RateLimiter { + return workqueue.NewItemExponentialFailureRateLimiter(time.Second*5, time.Minute*5) +} + // QueuingEventHandler is an implementation of cache.ResourceEventHandler that // simply queues objects that are added/updated/deleted. type QueuingEventHandler struct {