Skip to content

Commit c71896b

Browse files
authored
enable parallel reconciliation (#2717)
1 parent 3840cce commit c71896b

File tree

19 files changed

+139
-176
lines changed

19 files changed

+139
-176
lines changed

internal/controller/atlasbackupcompliancepolicy/atlasbackupcompliancepolicy_controller.go

Lines changed: 6 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,7 @@ type AtlasBackupCompliancePolicyReconciler struct {
5252
Log *zap.SugaredLogger
5353
ObjectDeletionProtection bool
5454
SubObjectDeletionProtection bool
55+
maxConcurrentReconciles int
5556
}
5657

5758
// +kubebuilder:rbac:groups=atlas.mongodb.com,resources=atlasbackupcompliancepolicies,verbs=get;list;watch;create;update;patch;delete
@@ -125,18 +126,13 @@ func (r *AtlasBackupCompliancePolicyReconciler) SetupWithManager(mgr ctrl.Manage
125126
builder.WithPredicates(predicate.GenerationChangedPredicate{}),
126127
).
127128
WithOptions(controller.TypedOptions[reconcile.Request]{
128-
RateLimiter: ratelimit.NewRateLimiter[reconcile.Request](),
129-
SkipNameValidation: pointer.MakePtr(skipNameValidation)}).
129+
RateLimiter: ratelimit.NewRateLimiter[reconcile.Request](),
130+
SkipNameValidation: pointer.MakePtr(skipNameValidation),
131+
MaxConcurrentReconciles: r.maxConcurrentReconciles}).
130132
Complete(r)
131133
}
132134

133-
func NewAtlasBackupCompliancePolicyReconciler(
134-
c cluster.Cluster,
135-
predicates []predicate.Predicate,
136-
atlasProvider atlas.Provider,
137-
deletionProtection bool,
138-
logger *zap.Logger,
139-
) *AtlasBackupCompliancePolicyReconciler {
135+
func NewAtlasBackupCompliancePolicyReconciler(c cluster.Cluster, predicates []predicate.Predicate, atlasProvider atlas.Provider, deletionProtection bool, logger *zap.Logger, maxConcurrentReconciles int) *AtlasBackupCompliancePolicyReconciler {
140136
return &AtlasBackupCompliancePolicyReconciler{
141137
Scheme: c.GetScheme(),
142138
Client: c.GetClient(),
@@ -145,6 +141,7 @@ func NewAtlasBackupCompliancePolicyReconciler(
145141
Log: logger.Named("controllers").Named("AtlasBackupCompliancePolicy").Sugar(),
146142
AtlasProvider: atlasProvider,
147143
ObjectDeletionProtection: deletionProtection,
144+
maxConcurrentReconciles: maxConcurrentReconciles,
148145
}
149146
}
150147

internal/controller/atlascustomrole/atlascustomrole_controller.go

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -55,17 +55,10 @@ type AtlasCustomRoleReconciler struct {
5555
ObjectDeletionProtection bool
5656
SubObjectDeletionProtection bool
5757
independentSyncPeriod time.Duration
58+
maxConcurrentReconciles int
5859
}
5960

60-
func NewAtlasCustomRoleReconciler(
61-
c cluster.Cluster,
62-
predicates []predicate.Predicate,
63-
atlasProvider atlas.Provider,
64-
deletionProtection bool,
65-
independentSyncPeriod time.Duration,
66-
logger *zap.Logger,
67-
globalSecretRef client.ObjectKey,
68-
) *AtlasCustomRoleReconciler {
61+
func NewAtlasCustomRoleReconciler(c cluster.Cluster, predicates []predicate.Predicate, atlasProvider atlas.Provider, deletionProtection bool, independentSyncPeriod time.Duration, logger *zap.Logger, globalSecretRef client.ObjectKey, maxConcurrentReconciles int) *AtlasCustomRoleReconciler {
6962
return &AtlasCustomRoleReconciler{
7063
AtlasReconciler: reconciler.AtlasReconciler{
7164
Client: c.GetClient(),
@@ -78,6 +71,7 @@ func NewAtlasCustomRoleReconciler(
7871
GlobalPredicates: predicates,
7972
ObjectDeletionProtection: deletionProtection,
8073
independentSyncPeriod: independentSyncPeriod,
74+
maxConcurrentReconciles: maxConcurrentReconciles,
8175
}
8276
}
8377

@@ -218,8 +212,9 @@ func (r *AtlasCustomRoleReconciler) SetupWithManager(mgr ctrl.Manager, skipNameV
218212
handler.EnqueueRequestsFromMapFunc(r.customRolesCredentials()),
219213
builder.WithPredicates(predicate.ResourceVersionChangedPredicate{})).
220214
WithOptions(controller.TypedOptions[reconcile.Request]{
221-
RateLimiter: ratelimit.NewRateLimiter[reconcile.Request](),
222-
SkipNameValidation: pointer.MakePtr(skipNameValidation)}).
215+
RateLimiter: ratelimit.NewRateLimiter[reconcile.Request](),
216+
SkipNameValidation: pointer.MakePtr(skipNameValidation),
217+
MaxConcurrentReconciles: r.maxConcurrentReconciles}).
223218
Complete(r)
224219
}
225220

internal/controller/atlasdatabaseuser/atlasdatabaseuser_controller.go

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ type AtlasDatabaseUserReconciler struct {
6060
ObjectDeletionProtection bool
6161
SubObjectDeletionProtection bool
6262
independentSyncPeriod time.Duration
63+
maxConcurrentReconciles int
6364
}
6465

6566
// +kubebuilder:rbac:groups=atlas.mongodb.com,resources=atlasdatabaseusers,verbs=get;list;watch;create;update;patch;delete
@@ -221,8 +222,9 @@ func (r *AtlasDatabaseUserReconciler) SetupWithManager(mgr ctrl.Manager, skipNam
221222
builder.WithPredicates(predicate.ResourceVersionChangedPredicate{}),
222223
).
223224
WithOptions(controller.TypedOptions[reconcile.Request]{
224-
RateLimiter: ratelimit.NewRateLimiter[reconcile.Request](),
225-
SkipNameValidation: pointer.MakePtr(skipNameValidation)}).
225+
RateLimiter: ratelimit.NewRateLimiter[reconcile.Request](),
226+
SkipNameValidation: pointer.MakePtr(skipNameValidation),
227+
MaxConcurrentReconciles: r.maxConcurrentReconciles}).
226228
Complete(r)
227229
}
228230

@@ -273,16 +275,7 @@ func (r *AtlasDatabaseUserReconciler) databaseUsersForCredentialMapFunc() handle
273275
)
274276
}
275277

276-
func NewAtlasDatabaseUserReconciler(
277-
c cluster.Cluster,
278-
predicates []predicate.Predicate,
279-
atlasProvider atlas.Provider,
280-
deletionProtection bool,
281-
independentSyncPeriod time.Duration,
282-
featureFlags *featureflags.FeatureFlags,
283-
logger *zap.Logger,
284-
globalSecretRef client.ObjectKey,
285-
) *AtlasDatabaseUserReconciler {
278+
func NewAtlasDatabaseUserReconciler(c cluster.Cluster, predicates []predicate.Predicate, atlasProvider atlas.Provider, deletionProtection bool, independentSyncPeriod time.Duration, featureFlags *featureflags.FeatureFlags, logger *zap.Logger, globalSecretRef client.ObjectKey, maxConcurrentReconciles int) *AtlasDatabaseUserReconciler {
286279
return &AtlasDatabaseUserReconciler{
287280
AtlasReconciler: reconciler.AtlasReconciler{
288281
Client: c.GetClient(),
@@ -295,5 +288,6 @@ func NewAtlasDatabaseUserReconciler(
295288
GlobalPredicates: predicates,
296289
ObjectDeletionProtection: deletionProtection,
297290
independentSyncPeriod: independentSyncPeriod,
291+
maxConcurrentReconciles: maxConcurrentReconciles,
298292
}
299293
}

internal/controller/atlasdatafederation/datafederation_controller.go

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -60,6 +60,7 @@ type AtlasDataFederationReconciler struct {
6060
ObjectDeletionProtection bool
6161
SubObjectDeletionProtection bool
6262
GlobalSecretRef client.ObjectKey
63+
maxConcurrentReconciles int
6364
}
6465

6566
// +kubebuilder:rbac:groups=atlas.mongodb.com,resources=atlasdatafederations,verbs=get;list;watch;create;update;patch;delete
@@ -244,8 +245,9 @@ func (r *AtlasDataFederationReconciler) SetupWithManager(mgr ctrl.Manager, skipN
244245
builder.WithPredicates(predicate.GenerationChangedPredicate{}),
245246
).
246247
WithOptions(controller.TypedOptions[reconcile.Request]{
247-
RateLimiter: ratelimit.NewRateLimiter[reconcile.Request](),
248-
SkipNameValidation: pointer.MakePtr(skipNameValidation)}).
248+
RateLimiter: ratelimit.NewRateLimiter[reconcile.Request](),
249+
SkipNameValidation: pointer.MakePtr(skipNameValidation),
250+
MaxConcurrentReconciles: r.maxConcurrentReconciles}).
249251
Complete(r)
250252
}
251253

@@ -276,14 +278,7 @@ func (r *AtlasDataFederationReconciler) findAtlasDataFederationForProjects(ctx c
276278
return requests
277279
}
278280

279-
func NewAtlasDataFederationReconciler(
280-
c cluster.Cluster,
281-
predicates []predicate.Predicate,
282-
atlasProvider atlas.Provider,
283-
deletionProtection bool,
284-
logger *zap.Logger,
285-
globalSecretRef client.ObjectKey,
286-
) *AtlasDataFederationReconciler {
281+
func NewAtlasDataFederationReconciler(c cluster.Cluster, predicates []predicate.Predicate, atlasProvider atlas.Provider, deletionProtection bool, logger *zap.Logger, globalSecretRef client.ObjectKey, maxConcurrentReconciles int) *AtlasDataFederationReconciler {
287282
return &AtlasDataFederationReconciler{
288283
Scheme: c.GetScheme(),
289284
Client: c.GetClient(),
@@ -293,6 +288,7 @@ func NewAtlasDataFederationReconciler(
293288
AtlasProvider: atlasProvider,
294289
ObjectDeletionProtection: deletionProtection,
295290
GlobalSecretRef: globalSecretRef,
291+
maxConcurrentReconciles: maxConcurrentReconciles,
296292
}
297293
}
298294

internal/controller/atlasdeployment/atlasdeployment_controller.go

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -64,6 +64,7 @@ type AtlasDeploymentReconciler struct {
6464
ObjectDeletionProtection bool
6565
SubObjectDeletionProtection bool
6666
independentSyncPeriod time.Duration
67+
maxConcurrentReconciles int
6768
}
6869

6970
// +kubebuilder:rbac:groups=atlas.mongodb.com,resources=atlasdeployments,verbs=get;list;watch;create;update;patch;delete
@@ -405,20 +406,13 @@ func (r *AtlasDeploymentReconciler) SetupWithManager(mgr ctrl.Manager, skipNameV
405406
builder.WithPredicates(predicate.ResourceVersionChangedPredicate{}),
406407
).
407408
WithOptions(controller.TypedOptions[reconcile.Request]{
408-
RateLimiter: ratelimit.NewRateLimiter[reconcile.Request](),
409-
SkipNameValidation: pointer.MakePtr(skipNameValidation)}).
409+
RateLimiter: ratelimit.NewRateLimiter[reconcile.Request](),
410+
SkipNameValidation: pointer.MakePtr(skipNameValidation),
411+
MaxConcurrentReconciles: r.maxConcurrentReconciles}).
410412
Complete(r)
411413
}
412414

413-
func NewAtlasDeploymentReconciler(
414-
c cluster.Cluster,
415-
predicates []predicate.Predicate,
416-
atlasProvider atlas.Provider,
417-
deletionProtection bool,
418-
independentSyncPeriod time.Duration,
419-
logger *zap.Logger,
420-
globalSecretref client.ObjectKey,
421-
) *AtlasDeploymentReconciler {
415+
func NewAtlasDeploymentReconciler(c cluster.Cluster, predicates []predicate.Predicate, atlasProvider atlas.Provider, deletionProtection bool, independentSyncPeriod time.Duration, logger *zap.Logger, globalSecretref client.ObjectKey, maxConcurrentReconciles int) *AtlasDeploymentReconciler {
422416
suggaredLogger := logger.Named("controllers").Named("AtlasDeployment").Sugar()
423417

424418
return &AtlasDeploymentReconciler{
@@ -433,6 +427,7 @@ func NewAtlasDeploymentReconciler(
433427
GlobalPredicates: predicates,
434428
ObjectDeletionProtection: deletionProtection,
435429
independentSyncPeriod: independentSyncPeriod,
430+
maxConcurrentReconciles: maxConcurrentReconciles,
436431
}
437432
}
438433

internal/controller/atlasfederatedauth/atlasfederated_auth_controller.go

Lines changed: 6 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -57,6 +57,7 @@ type AtlasFederatedAuthReconciler struct {
5757
ObjectDeletionProtection bool
5858
SubObjectDeletionProtection bool
5959
GlobalSecretRef client.ObjectKey
60+
maxConcurrentReconciles int
6061
}
6162

6263
// +kubebuilder:rbac:groups=atlas.mongodb.com,resources=atlasfederatedauths,verbs=get;list;watch;create;update;patch;delete
@@ -143,8 +144,9 @@ func (r *AtlasFederatedAuthReconciler) SetupWithManager(mgr ctrl.Manager, skipNa
143144
handler.EnqueueRequestsFromMapFunc(r.findAtlasFederatedAuthForSecret),
144145
).
145146
WithOptions(controller.TypedOptions[reconcile.Request]{
146-
RateLimiter: ratelimit.NewRateLimiter[reconcile.Request](),
147-
SkipNameValidation: pointer.MakePtr(skipNameValidation)}).
147+
RateLimiter: ratelimit.NewRateLimiter[reconcile.Request](),
148+
SkipNameValidation: pointer.MakePtr(skipNameValidation),
149+
MaxConcurrentReconciles: r.maxConcurrentReconciles}).
148150
Complete(r)
149151
}
150152

@@ -185,14 +187,7 @@ func (r *AtlasFederatedAuthReconciler) findAtlasFederatedAuthForSecret(ctx conte
185187
return requests
186188
}
187189

188-
func NewAtlasFederatedAuthReconciler(
189-
c cluster.Cluster,
190-
predicates []predicate.Predicate,
191-
atlasProvider atlas.Provider,
192-
deletionProtection bool,
193-
logger *zap.Logger,
194-
globalSecretRef client.ObjectKey,
195-
) *AtlasFederatedAuthReconciler {
190+
func NewAtlasFederatedAuthReconciler(c cluster.Cluster, predicates []predicate.Predicate, atlasProvider atlas.Provider, deletionProtection bool, logger *zap.Logger, globalSecretRef client.ObjectKey, maxConcurrentReconciles int) *AtlasFederatedAuthReconciler {
196191
return &AtlasFederatedAuthReconciler{
197192
Scheme: c.GetScheme(),
198193
Client: c.GetClient(),
@@ -202,6 +197,7 @@ func NewAtlasFederatedAuthReconciler(
202197
AtlasProvider: atlasProvider,
203198
ObjectDeletionProtection: deletionProtection,
204199
GlobalSecretRef: globalSecretRef,
200+
maxConcurrentReconciles: maxConcurrentReconciles,
205201
}
206202
}
207203

internal/controller/atlasipaccesslist/atlasipaccesslist_controller.go

Lines changed: 6 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,7 @@ type AtlasIPAccessListReconciler struct {
5151
GlobalPredicates []predicate.Predicate
5252
ObjectDeletionProtection bool
5353
independentSyncPeriod time.Duration
54+
maxConcurrentReconciles int
5455
}
5556

5657
// +kubebuilder:rbac:groups=atlas.mongodb.com,resources=atlasipaccesslists,verbs=get;list;watch;create;update;patch;delete
@@ -91,9 +92,9 @@ func (r *AtlasIPAccessListReconciler) SetupWithManager(mgr manager.Manager, skip
9192
builder.WithPredicates(predicate.ResourceVersionChangedPredicate{}),
9293
).
9394
WithOptions(controller.TypedOptions[reconcile.Request]{
94-
RateLimiter: ratelimit.NewRateLimiter[reconcile.Request](),
95-
SkipNameValidation: pointer.MakePtr(skipNameValidation),
96-
}).
95+
RateLimiter: ratelimit.NewRateLimiter[reconcile.Request](),
96+
SkipNameValidation: pointer.MakePtr(skipNameValidation),
97+
MaxConcurrentReconciles: r.maxConcurrentReconciles}).
9798
Complete(r)
9899
}
99100

@@ -139,15 +140,7 @@ func (r *AtlasIPAccessListReconciler) ipAccessListForCredentialMapFunc() handler
139140
)
140141
}
141142

142-
func NewAtlasIPAccessListReconciler(
143-
c cluster.Cluster,
144-
predicates []predicate.Predicate,
145-
atlasProvider atlas.Provider,
146-
deletionProtection bool,
147-
independentSyncPeriod time.Duration,
148-
logger *zap.Logger,
149-
globalSecretRef client.ObjectKey,
150-
) *AtlasIPAccessListReconciler {
143+
func NewAtlasIPAccessListReconciler(c cluster.Cluster, predicates []predicate.Predicate, atlasProvider atlas.Provider, deletionProtection bool, independentSyncPeriod time.Duration, logger *zap.Logger, globalSecretRef client.ObjectKey, maxConcurrentReconciles int) *AtlasIPAccessListReconciler {
151144
return &AtlasIPAccessListReconciler{
152145
AtlasReconciler: reconciler.AtlasReconciler{
153146
Client: c.GetClient(),
@@ -160,5 +153,6 @@ func NewAtlasIPAccessListReconciler(
160153
GlobalPredicates: predicates,
161154
ObjectDeletionProtection: deletionProtection,
162155
independentSyncPeriod: independentSyncPeriod,
156+
maxConcurrentReconciles: maxConcurrentReconciles,
163157
}
164158
}

internal/controller/atlasnetworkcontainer/atlasnetworkcontainer_controller.go

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ type AtlasNetworkContainerReconciler struct {
4848
GlobalPredicates []predicate.Predicate
4949
ObjectDeletionProtection bool
5050
independentSyncPeriod time.Duration
51+
maxConcurrentReconciles int
5152
}
5253

5354
// +kubebuilder:rbac:groups=atlas.mongodb.com,resources=atlasnetworkcontainers,verbs=get;list;watch;create;update;patch;delete
@@ -86,8 +87,9 @@ func (r *AtlasNetworkContainerReconciler) SetupWithManager(mgr ctrl.Manager, ski
8687
builder.WithPredicates(predicate.ResourceVersionChangedPredicate{}),
8788
).
8889
WithOptions(controller.TypedOptions[reconcile.Request]{
89-
RateLimiter: ratelimit.NewRateLimiter[reconcile.Request](),
90-
SkipNameValidation: pointer.MakePtr(skipNameValidation)}).
90+
RateLimiter: ratelimit.NewRateLimiter[reconcile.Request](),
91+
SkipNameValidation: pointer.MakePtr(skipNameValidation),
92+
MaxConcurrentReconciles: r.maxConcurrentReconciles}).
9193
Complete(r)
9294
}
9395

@@ -111,15 +113,7 @@ func (r *AtlasNetworkContainerReconciler) networkContainerForCredentialMapFunc()
111113
)
112114
}
113115

114-
func NewAtlasNetworkContainerReconciler(
115-
c cluster.Cluster,
116-
predicates []predicate.Predicate,
117-
atlasProvider atlas.Provider,
118-
deletionProtection bool,
119-
logger *zap.Logger,
120-
independentSyncPeriod time.Duration,
121-
globalSecretRef client.ObjectKey,
122-
) *AtlasNetworkContainerReconciler {
116+
func NewAtlasNetworkContainerReconciler(c cluster.Cluster, predicates []predicate.Predicate, atlasProvider atlas.Provider, deletionProtection bool, logger *zap.Logger, independentSyncPeriod time.Duration, globalSecretRef client.ObjectKey, maxConcurrentReconciles int) *AtlasNetworkContainerReconciler {
123117
return &AtlasNetworkContainerReconciler{
124118
AtlasReconciler: reconciler.AtlasReconciler{
125119
Client: c.GetClient(),
@@ -132,5 +126,6 @@ func NewAtlasNetworkContainerReconciler(
132126
GlobalPredicates: predicates,
133127
ObjectDeletionProtection: deletionProtection,
134128
independentSyncPeriod: independentSyncPeriod,
129+
maxConcurrentReconciles: maxConcurrentReconciles,
135130
}
136131
}

internal/controller/atlasnetworkpeering/atlasnetworkpeering_controller.go

Lines changed: 6 additions & 11 deletions
Original file line numberDiff line numberDiff line change
@@ -53,17 +53,10 @@ type AtlasNetworkPeeringReconciler struct {
5353
GlobalPredicates []predicate.Predicate
5454
ObjectDeletionProtection bool
5555
independentSyncPeriod time.Duration
56+
maxConcurrentReconciles int
5657
}
5758

58-
func NewAtlasNetworkPeeringsReconciler(
59-
c cluster.Cluster,
60-
predicates []predicate.Predicate,
61-
atlasProvider atlas.Provider,
62-
deletionProtection bool,
63-
logger *zap.Logger,
64-
independentSyncPeriod time.Duration,
65-
globalSecretRef client.ObjectKey,
66-
) *AtlasNetworkPeeringReconciler {
59+
func NewAtlasNetworkPeeringsReconciler(c cluster.Cluster, predicates []predicate.Predicate, atlasProvider atlas.Provider, deletionProtection bool, logger *zap.Logger, independentSyncPeriod time.Duration, globalSecretRef client.ObjectKey, maxConcurrentReconciles int) *AtlasNetworkPeeringReconciler {
6760
return &AtlasNetworkPeeringReconciler{
6861
AtlasReconciler: reconciler.AtlasReconciler{
6962
Client: c.GetClient(),
@@ -76,6 +69,7 @@ func NewAtlasNetworkPeeringsReconciler(
7669
GlobalPredicates: predicates,
7770
ObjectDeletionProtection: deletionProtection,
7871
independentSyncPeriod: independentSyncPeriod,
72+
maxConcurrentReconciles: maxConcurrentReconciles,
7973
}
8074
}
8175

@@ -131,8 +125,9 @@ func (r *AtlasNetworkPeeringReconciler) SetupWithManager(mgr ctrl.Manager, skipN
131125
builder.WithPredicates(predicate.ResourceVersionChangedPredicate{}),
132126
).
133127
WithOptions(controller.TypedOptions[reconcile.Request]{
134-
RateLimiter: ratelimit.NewRateLimiter[reconcile.Request](),
135-
SkipNameValidation: pointer.MakePtr(skipNameValidation)}).
128+
RateLimiter: ratelimit.NewRateLimiter[reconcile.Request](),
129+
SkipNameValidation: pointer.MakePtr(skipNameValidation),
130+
MaxConcurrentReconciles: r.maxConcurrentReconciles}).
136131
Complete(r)
137132
}
138133

0 commit comments

Comments
 (0)