From e82a4f0830c4df21e28111bcee774264931d842f Mon Sep 17 00:00:00 2001 From: Min Jin Date: Tue, 14 Jan 2025 11:01:10 -0800 Subject: [PATCH] use typed client-go constructors for rate-limit related objects Signed-off-by: Min Jin --- pkg/controllers/tagging/tagging_controller.go | 24 ++++++++++--------- 1 file changed, 13 insertions(+), 11 deletions(-) diff --git a/pkg/controllers/tagging/tagging_controller.go b/pkg/controllers/tagging/tagging_controller.go index 909c8237eb..600b8f96a0 100644 --- a/pkg/controllers/tagging/tagging_controller.go +++ b/pkg/controllers/tagging/tagging_controller.go @@ -116,30 +116,32 @@ func NewTaggingController( return nil, err } - var rateLimiter workqueue.RateLimiter + var rateLimiter workqueue.TypedRateLimiter[any] var rateLimitEnabled bool if rateLimit > 0.0 && burstLimit > 0 { klog.Infof("Rate limit enabled on controller with rate %f and burst %d.", rateLimit, burstLimit) // This is the workqueue.DefaultControllerRateLimiter() but in case where throttling is enabled on the controller, // the rate and burst values are set to the provided values. - rateLimiter = workqueue.NewMaxOfRateLimiter( - workqueue.NewItemExponentialFailureRateLimiter(5*time.Millisecond, 1000*time.Second), - &workqueue.BucketRateLimiter{Limiter: rate.NewLimiter(rate.Limit(rateLimit), burstLimit)}, + rateLimiter = workqueue.NewTypedMaxOfRateLimiter( + workqueue.NewTypedItemExponentialFailureRateLimiter[any](5*time.Millisecond, 1000*time.Second), + &workqueue.TypedBucketRateLimiter[any]{Limiter: rate.NewLimiter(rate.Limit(rateLimit), burstLimit)}, ) rateLimitEnabled = true } else { klog.Infof("Rate limit disabled on controller.") - rateLimiter = workqueue.DefaultControllerRateLimiter() + rateLimiter = workqueue.DefaultTypedControllerRateLimiter[any]() rateLimitEnabled = false } tc := &Controller{ - nodeInformer: nodeInformer, - kubeClient: kubeClient, - cloud: awsCloud, - tags: tags, - resources: resources, - workqueue: workqueue.NewNamedRateLimitingQueue(rateLimiter, TaggingControllerClientName), + nodeInformer: nodeInformer, + kubeClient: kubeClient, + cloud: awsCloud, + tags: tags, + resources: resources, + workqueue: workqueue.NewTypedRateLimitingQueueWithConfig[any](rateLimiter, workqueue.TypedRateLimitingQueueConfig[any]{ + Name: TaggingControllerClientName, + }), nodesSynced: nodeInformer.Informer().HasSynced, nodeMonitorPeriod: nodeMonitorPeriod, rateLimitEnabled: rateLimitEnabled,