Use the generic/typed workqueue throughout

This change makes us use the generic workqueue throughout the project in
order to improve type safety and readability of the code.
This commit is contained in:
Alvaro Aleman
2024-04-28 18:26:18 +02:00
parent d387c0c903
commit 6d0ac8c561
94 changed files with 830 additions and 603 deletions

View File

@@ -54,7 +54,7 @@ type ResourceVersionController struct {
metadataClient metadata.Interface
svmListers svmlisters.StorageVersionMigrationLister
svmSynced cache.InformerSynced
queue workqueue.RateLimitingInterface
queue workqueue.TypedRateLimitingInterface[string]
kubeClient clientset.Interface
mapper meta.ResettableRESTMapper
}
@@ -76,7 +76,10 @@ func NewResourceVersionController(
svmListers: svmInformer.Lister(),
svmSynced: svmInformer.Informer().HasSynced,
mapper: mapper,
queue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), ResourceVersionControllerName),
queue: workqueue.NewTypedRateLimitingQueueWithConfig(
workqueue.DefaultTypedControllerRateLimiter[string](),
workqueue.TypedRateLimitingQueueConfig[string]{Name: ResourceVersionControllerName},
),
}
_, _ = svmInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
@@ -137,13 +140,12 @@ func (rv *ResourceVersionController) worker(ctx context.Context) {
}
func (rv *ResourceVersionController) processNext(ctx context.Context) bool {
eKey, quit := rv.queue.Get()
key, quit := rv.queue.Get()
if quit {
return false
}
defer rv.queue.Done(eKey)
defer rv.queue.Done(key)
key := eKey.(string)
err := rv.sync(ctx, key)
if err == nil {
rv.queue.Forget(key)

View File

@@ -55,7 +55,7 @@ type SVMController struct {
dynamicClient *dynamic.DynamicClient
svmListers svmlisters.StorageVersionMigrationLister
svmSynced cache.InformerSynced
queue workqueue.RateLimitingInterface
queue workqueue.TypedRateLimitingInterface[string]
restMapper meta.RESTMapper
dependencyGraphBuilder *garbagecollector.GraphBuilder
}
@@ -79,7 +79,10 @@ func NewSVMController(
svmSynced: svmInformer.Informer().HasSynced,
restMapper: mapper,
dependencyGraphBuilder: dependencyGraphBuilder,
queue: workqueue.NewNamedRateLimitingQueue(workqueue.DefaultControllerRateLimiter(), controllerName),
queue: workqueue.NewTypedRateLimitingQueueWithConfig(
workqueue.DefaultTypedControllerRateLimiter[string](),
workqueue.TypedRateLimitingQueueConfig[string]{Name: controllerName},
),
}
_, _ = svmInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
@@ -146,13 +149,12 @@ func (svmc *SVMController) worker(ctx context.Context) {
}
func (svmc *SVMController) processNext(ctx context.Context) bool {
svmKey, quit := svmc.queue.Get()
key, quit := svmc.queue.Get()
if quit {
return false
}
defer svmc.queue.Done(svmKey)
defer svmc.queue.Done(key)
key := svmKey.(string)
err := svmc.sync(ctx, key)
if err == nil {
svmc.queue.Forget(key)