-
Notifications
You must be signed in to change notification settings - Fork 1.2k
Open
Labels
kind/designCategorizes issue or PR as related to design.Categorizes issue or PR as related to design.lifecycle/frozenIndicates that an issue or PR should not be auto-closed due to staleness.Indicates that an issue or PR should not be auto-closed due to staleness.priority/important-longtermImportant over the long term, but may not be staffed and/or may need multiple releases to complete.Important over the long term, but may not be staffed and/or may need multiple releases to complete.
Milestone
Description
Some of my controllers receive a bunch of reconciliation requests. However there's no improvement to the controller quality if I handle them all individually compared to handling them once every now and then.
I propose that we can optionally add a following controller option to these options:
controller-runtime/pkg/controller/controller.go
Lines 33 to 44 in 2361b05
type Options struct { | |
// MaxConcurrentReconciles is the maximum number of concurrent Reconciles which can be run. Defaults to 1. | |
MaxConcurrentReconciles int | |
// Reconciler reconciles an object | |
Reconciler reconcile.Reconciler | |
// RateLimiter is used to limit how frequently requests may be queued. | |
// Defaults to MaxOfRateLimiter which has both overall and per-item rate limiting. | |
// The overall is a token bucket and the per-item is exponential. | |
RateLimiter ratelimiter.RateLimiter | |
} |
I'm definitely not an expert, but I think the option could have the same interface as the rate limiting interface, but instead of working on retries, working on all requests?
vlad-tokarev, dfang, negz, pigletfly, damdo and 6 more
Metadata
Metadata
Assignees
Labels
kind/designCategorizes issue or PR as related to design.Categorizes issue or PR as related to design.lifecycle/frozenIndicates that an issue or PR should not be auto-closed due to staleness.Indicates that an issue or PR should not be auto-closed due to staleness.priority/important-longtermImportant over the long term, but may not be staffed and/or may need multiple releases to complete.Important over the long term, but may not be staffed and/or may need multiple releases to complete.