Skip to content

Commit 125c5bc

Browse files
author
Paulo Gomes
authored
Merge pull request #664 from pjbgf/rate-limit
Add flags to configure exponential back-off retry
2 parents 711780c + 4198191 commit 125c5bc

File tree

7 files changed

+33
-47
lines changed

7 files changed

+33
-47
lines changed

controllers/bucket_controller.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ import (
4040
"sigs.k8s.io/controller-runtime/pkg/controller"
4141
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
4242
"sigs.k8s.io/controller-runtime/pkg/predicate"
43+
"sigs.k8s.io/controller-runtime/pkg/ratelimiter"
4344

4445
"github.com/fluxcd/pkg/apis/meta"
4546
"github.com/fluxcd/pkg/runtime/conditions"
@@ -122,6 +123,7 @@ type BucketReconciler struct {
122123

123124
type BucketReconcilerOptions struct {
124125
MaxConcurrentReconciles int
126+
RateLimiter ratelimiter.RateLimiter
125127
}
126128

127129
// BucketProvider is an interface for fetching objects from a storage provider
@@ -235,7 +237,10 @@ func (r *BucketReconciler) SetupWithManagerAndOptions(mgr ctrl.Manager, opts Buc
235237
return ctrl.NewControllerManagedBy(mgr).
236238
For(&sourcev1.Bucket{}).
237239
WithEventFilter(predicate.Or(predicate.GenerationChangedPredicate{}, predicates.ReconcileRequestedPredicate{})).
238-
WithOptions(controller.Options{MaxConcurrentReconciles: opts.MaxConcurrentReconciles}).
240+
WithOptions(controller.Options{
241+
MaxConcurrentReconciles: opts.MaxConcurrentReconciles,
242+
RateLimiter: opts.RateLimiter,
243+
}).
239244
Complete(r)
240245
}
241246

controllers/gitrepository_controller.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import (
3737
"sigs.k8s.io/controller-runtime/pkg/controller"
3838
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
3939
"sigs.k8s.io/controller-runtime/pkg/predicate"
40+
"sigs.k8s.io/controller-runtime/pkg/ratelimiter"
4041

4142
"github.com/fluxcd/pkg/apis/meta"
4243
"github.com/fluxcd/pkg/runtime/conditions"
@@ -118,6 +119,7 @@ type GitRepositoryReconciler struct {
118119
type GitRepositoryReconcilerOptions struct {
119120
MaxConcurrentReconciles int
120121
DependencyRequeueInterval time.Duration
122+
RateLimiter ratelimiter.RateLimiter
121123
}
122124

123125
// gitRepositoryReconcileFunc is the function type for all the
@@ -135,7 +137,10 @@ func (r *GitRepositoryReconciler) SetupWithManagerAndOptions(mgr ctrl.Manager, o
135137
For(&sourcev1.GitRepository{}, builder.WithPredicates(
136138
predicate.Or(predicate.GenerationChangedPredicate{}, predicates.ReconcileRequestedPredicate{}),
137139
)).
138-
WithOptions(controller.Options{MaxConcurrentReconciles: opts.MaxConcurrentReconciles}).
140+
WithOptions(controller.Options{
141+
MaxConcurrentReconciles: opts.MaxConcurrentReconciles,
142+
RateLimiter: opts.RateLimiter,
143+
}).
139144
Complete(r)
140145
}
141146

controllers/helmchart_controller.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ import (
4343
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
4444
"sigs.k8s.io/controller-runtime/pkg/handler"
4545
"sigs.k8s.io/controller-runtime/pkg/predicate"
46+
"sigs.k8s.io/controller-runtime/pkg/ratelimiter"
4647
"sigs.k8s.io/controller-runtime/pkg/reconcile"
4748
"sigs.k8s.io/controller-runtime/pkg/source"
4849

@@ -130,6 +131,7 @@ func (r *HelmChartReconciler) SetupWithManager(mgr ctrl.Manager) error {
130131

131132
type HelmChartReconcilerOptions struct {
132133
MaxConcurrentReconciles int
134+
RateLimiter ratelimiter.RateLimiter
133135
}
134136

135137
// helmChartReconcileFunc is the function type for all the v1beta2.HelmChart
@@ -166,7 +168,10 @@ func (r *HelmChartReconciler) SetupWithManagerAndOptions(mgr ctrl.Manager, opts
166168
handler.EnqueueRequestsFromMapFunc(r.requestsForBucketChange),
167169
builder.WithPredicates(SourceRevisionChangePredicate{}),
168170
).
169-
WithOptions(controller.Options{MaxConcurrentReconciles: opts.MaxConcurrentReconciles}).
171+
WithOptions(controller.Options{
172+
MaxConcurrentReconciles: opts.MaxConcurrentReconciles,
173+
RateLimiter: opts.RateLimiter,
174+
}).
170175
Complete(r)
171176
}
172177

controllers/helmrepository_controller.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -35,6 +35,7 @@ import (
3535
"sigs.k8s.io/controller-runtime/pkg/controller"
3636
"sigs.k8s.io/controller-runtime/pkg/controller/controllerutil"
3737
"sigs.k8s.io/controller-runtime/pkg/predicate"
38+
"sigs.k8s.io/controller-runtime/pkg/ratelimiter"
3839

3940
"github.com/fluxcd/pkg/apis/meta"
4041
"github.com/fluxcd/pkg/runtime/conditions"
@@ -106,6 +107,7 @@ type HelmRepositoryReconciler struct {
106107

107108
type HelmRepositoryReconcilerOptions struct {
108109
MaxConcurrentReconciles int
110+
RateLimiter ratelimiter.RateLimiter
109111
}
110112

111113
// helmRepositoryReconcileFunc is the function type for all the
@@ -122,7 +124,10 @@ func (r *HelmRepositoryReconciler) SetupWithManagerAndOptions(mgr ctrl.Manager,
122124
return ctrl.NewControllerManagedBy(mgr).
123125
For(&sourcev1.HelmRepository{}).
124126
WithEventFilter(predicate.Or(predicate.GenerationChangedPredicate{}, predicates.ReconcileRequestedPredicate{})).
125-
WithOptions(controller.Options{MaxConcurrentReconciles: opts.MaxConcurrentReconciles}).
127+
WithOptions(controller.Options{
128+
MaxConcurrentReconciles: opts.MaxConcurrentReconciles,
129+
RateLimiter: opts.RateLimiter,
130+
}).
126131
Complete(r)
127132
}
128133

go.mod

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -24,7 +24,7 @@ require (
2424
github.com/fluxcd/pkg/gitutil v0.1.0
2525
github.com/fluxcd/pkg/helmtestserver v0.7.1
2626
github.com/fluxcd/pkg/lockedfile v0.1.0
27-
github.com/fluxcd/pkg/runtime v0.13.4
27+
github.com/fluxcd/pkg/runtime v0.14.0
2828
github.com/fluxcd/pkg/ssh v0.3.2
2929
github.com/fluxcd/pkg/testserver v0.2.0
3030
github.com/fluxcd/pkg/untar v0.1.0

0 commit comments

Comments
 (0)