Skip to content

Commit e8bc945

Browse files
authored
Merge pull request #3169 from sttts/sttts-no-syncs-secondary-informers
🐛 reconcilers: ignore sync events for secondary informers
2 parents 8cdddb0 + 5ce1a43 commit e8bc945

File tree

21 files changed

+214
-123
lines changed

21 files changed

+214
-123
lines changed

pkg/proxy/options/authentication.go

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,8 @@ import (
4040
kcpauthentication "github.com/kcp-dev/kcp/pkg/proxy/authentication"
4141
)
4242

43+
const resyncPeriod = 10 * time.Hour
44+
4345
// Authentication wraps BuiltInAuthenticationOptions so we can minimize the
4446
// dependencies on apiserver auth machinery, specifically by overriding the
4547
// ApplyTo so we can remove those config dependencies not relevant to the
@@ -113,7 +115,7 @@ func (c *Authentication) ApplyTo(ctx context.Context, authenticationInfo *generi
113115
return fmt.Errorf("failed to create client for ServiceAccountTokenGetter: %w", err)
114116
}
115117

116-
versionedInformers := kcpkubernetesinformers.NewSharedInformerFactory(tokenGetterClient, 10*time.Minute)
118+
versionedInformers := kcpkubernetesinformers.NewSharedInformerFactory(tokenGetterClient, resyncPeriod)
117119

118120
authenticatorConfig.ServiceAccountTokenGetter = serviceaccountcontroller.NewClusterGetterFromClient(
119121
tokenGetterClient,

pkg/reconciler/apis/apibinding/apibinding_controller.go

Lines changed: 13 additions & 12 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ import (
4545
"github.com/kcp-dev/kcp/pkg/informer"
4646
"github.com/kcp-dev/kcp/pkg/logging"
4747
"github.com/kcp-dev/kcp/pkg/reconciler/committer"
48+
"github.com/kcp-dev/kcp/pkg/reconciler/events"
4849
apisv1alpha1 "github.com/kcp-dev/kcp/sdk/apis/apis/v1alpha1"
4950
"github.com/kcp-dev/kcp/sdk/apis/core"
5051
kcpclientset "github.com/kcp-dev/kcp/sdk/client/clientset/versioned/cluster"
@@ -162,7 +163,7 @@ func NewController(
162163
})
163164

164165
// CRD handlers
165-
_, _ = crdInformer.Informer().AddEventHandler(cache.FilteringResourceEventHandler{
166+
_, _ = crdInformer.Informer().AddEventHandler(events.WithoutSyncs(cache.FilteringResourceEventHandler{
166167
FilterFunc: func(obj interface{}) bool {
167168
crd := obj.(*apiextensionsv1.CustomResourceDefinition)
168169
return logicalcluster.From(crd) == SystemBoundCRDsClusterName
@@ -185,22 +186,22 @@ func NewController(
185186
c.enqueueCRD(crd, logger)
186187
},
187188
},
188-
})
189+
}))
189190

190191
// APIExport handlers
191-
_, _ = apiExportInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
192+
_, _ = apiExportInformer.Informer().AddEventHandler(events.WithoutSyncs(cache.ResourceEventHandlerFuncs{
192193
AddFunc: func(obj interface{}) { c.enqueueAPIExport(objOrTombstone[*apisv1alpha1.APIExport](obj), logger, "") },
193194
UpdateFunc: func(_, obj interface{}) { c.enqueueAPIExport(objOrTombstone[*apisv1alpha1.APIExport](obj), logger, "") },
194195
DeleteFunc: func(obj interface{}) { c.enqueueAPIExport(objOrTombstone[*apisv1alpha1.APIExport](obj), logger, "") },
195-
})
196-
_, _ = globalAPIExportInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
196+
}))
197+
_, _ = globalAPIExportInformer.Informer().AddEventHandler(events.WithoutSyncs(cache.ResourceEventHandlerFuncs{
197198
AddFunc: func(obj interface{}) { c.enqueueAPIExport(objOrTombstone[*apisv1alpha1.APIExport](obj), logger, "") },
198199
UpdateFunc: func(_, obj interface{}) { c.enqueueAPIExport(objOrTombstone[*apisv1alpha1.APIExport](obj), logger, "") },
199200
DeleteFunc: func(obj interface{}) { c.enqueueAPIExport(objOrTombstone[*apisv1alpha1.APIExport](obj), logger, "") },
200-
})
201+
}))
201202

202203
// APIResourceSchema handlers
203-
_, _ = apiResourceSchemaInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
204+
_, _ = apiResourceSchemaInformer.Informer().AddEventHandler(events.WithoutSyncs(cache.ResourceEventHandlerFuncs{
204205
AddFunc: func(obj interface{}) {
205206
c.enqueueAPIResourceSchema(objOrTombstone[*apisv1alpha1.APIResourceSchema](obj), logger, "")
206207
},
@@ -210,8 +211,8 @@ func NewController(
210211
DeleteFunc: func(obj interface{}) {
211212
c.enqueueAPIResourceSchema(objOrTombstone[*apisv1alpha1.APIResourceSchema](obj), logger, "")
212213
},
213-
})
214-
_, _ = globalAPIResourceSchemaInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
214+
}))
215+
_, _ = globalAPIResourceSchemaInformer.Informer().AddEventHandler(events.WithoutSyncs(cache.ResourceEventHandlerFuncs{
215216
AddFunc: func(obj interface{}) {
216217
c.enqueueAPIResourceSchema(objOrTombstone[*apisv1alpha1.APIResourceSchema](obj), logger, "")
217218
},
@@ -221,10 +222,10 @@ func NewController(
221222
DeleteFunc: func(obj interface{}) {
222223
c.enqueueAPIResourceSchema(objOrTombstone[*apisv1alpha1.APIResourceSchema](obj), logger, "")
223224
},
224-
})
225+
}))
225226

226227
// APIConversion handlers
227-
_, _ = apiConversionInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
228+
_, _ = apiConversionInformer.Informer().AddEventHandler(events.WithoutSyncs(cache.ResourceEventHandlerFuncs{
228229
AddFunc: func(obj interface{}) {
229230
c.enqueueAPIConversion(objOrTombstone[*apisv1alpha1.APIConversion](obj), logger)
230231
},
@@ -234,7 +235,7 @@ func NewController(
234235
DeleteFunc: func(obj interface{}) {
235236
c.enqueueAPIConversion(objOrTombstone[*apisv1alpha1.APIConversion](obj), logger)
236237
},
237-
})
238+
}))
238239

239240
return c, nil
240241
}

pkg/reconciler/apis/apiexport/apiexport_controller.go

Lines changed: 14 additions & 14 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ import (
4040
"github.com/kcp-dev/kcp/pkg/indexers"
4141
"github.com/kcp-dev/kcp/pkg/logging"
4242
"github.com/kcp-dev/kcp/pkg/reconciler/committer"
43+
"github.com/kcp-dev/kcp/pkg/reconciler/events"
4344
apisv1alpha1 "github.com/kcp-dev/kcp/sdk/apis/apis/v1alpha1"
4445
corev1alpha1 "github.com/kcp-dev/kcp/sdk/apis/core/v1alpha1"
4546
kcpclientset "github.com/kcp-dev/kcp/sdk/client/clientset/versioned/cluster"
@@ -136,7 +137,7 @@ func NewController(
136137
},
137138
})
138139

139-
_, _ = secretInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
140+
_, _ = secretInformer.Informer().AddEventHandler(events.WithoutSyncs(cache.ResourceEventHandlerFuncs{
140141
AddFunc: func(obj interface{}) {
141142
c.enqueueSecret(obj.(*corev1.Secret))
142143
},
@@ -146,21 +147,20 @@ func NewController(
146147
DeleteFunc: func(obj interface{}) {
147148
c.enqueueSecret(obj.(*corev1.Secret))
148149
},
149-
})
150+
}))
150151

151-
_, _ = globalShardInformer.Informer().AddEventHandler(
152-
cache.ResourceEventHandlerFuncs{
153-
AddFunc: func(obj interface{}) {
154-
c.enqueueAllAPIExports(obj.(*corev1alpha1.Shard))
155-
},
156-
UpdateFunc: func(_, newObj interface{}) {
157-
c.enqueueAllAPIExports(newObj.(*corev1alpha1.Shard))
158-
},
159-
DeleteFunc: func(obj interface{}) {
160-
c.enqueueAllAPIExports(obj.(*corev1alpha1.Shard))
161-
},
152+
_, _ = globalShardInformer.Informer().AddEventHandler(events.WithoutSyncs(cache.ResourceEventHandlerFuncs{
153+
AddFunc: func(obj interface{}) {
154+
c.enqueueAllAPIExports(obj.(*corev1alpha1.Shard))
162155
},
163-
)
156+
UpdateFunc: func(_, newObj interface{}) {
157+
c.enqueueAllAPIExports(newObj.(*corev1alpha1.Shard))
158+
},
159+
DeleteFunc: func(obj interface{}) {
160+
c.enqueueAllAPIExports(obj.(*corev1alpha1.Shard))
161+
},
162+
},
163+
))
164164

165165
return c, nil
166166
}

pkg/reconciler/apis/apiexportendpointslice/apiexportendpointslice_controller.go

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -38,6 +38,7 @@ import (
3838
"github.com/kcp-dev/kcp/pkg/indexers"
3939
"github.com/kcp-dev/kcp/pkg/logging"
4040
"github.com/kcp-dev/kcp/pkg/reconciler/committer"
41+
"github.com/kcp-dev/kcp/pkg/reconciler/events"
4142
apisv1alpha1 "github.com/kcp-dev/kcp/sdk/apis/apis/v1alpha1"
4243
"github.com/kcp-dev/kcp/sdk/apis/core"
4344
corev1alpha1 "github.com/kcp-dev/kcp/sdk/apis/core/v1alpha1"
@@ -115,16 +116,16 @@ func NewController(
115116
},
116117
})
117118

118-
_, _ = globalAPIExportClusterInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
119+
_, _ = globalAPIExportClusterInformer.Informer().AddEventHandler(events.WithoutSyncs(cache.ResourceEventHandlerFuncs{
119120
AddFunc: func(obj interface{}) {
120121
c.enqueueAPIExportEndpointSlicesForAPIExport(obj)
121122
},
122123
DeleteFunc: func(obj interface{}) {
123124
c.enqueueAPIExportEndpointSlicesForAPIExport(obj)
124125
},
125-
})
126+
}))
126127

127-
_, _ = globalShardClusterInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
128+
_, _ = globalShardClusterInformer.Informer().AddEventHandler(events.WithoutSyncs(cache.ResourceEventHandlerFuncs{
128129
AddFunc: func(obj interface{}) {
129130
c.enqueueAllAPIExportEndpointSlices(obj)
130131
},
@@ -136,22 +137,19 @@ func NewController(
136137
DeleteFunc: func(obj interface{}) {
137138
c.enqueueAllAPIExportEndpointSlices(obj)
138139
},
139-
},
140-
)
140+
}))
141141

142-
_, _ = partitionClusterInformer.Informer().AddEventHandler(
143-
cache.ResourceEventHandlerFuncs{
144-
AddFunc: func(obj interface{}) {
145-
c.enqueuePartition(obj)
146-
},
147-
UpdateFunc: func(_, newObj interface{}) {
148-
c.enqueuePartition(newObj)
149-
},
150-
DeleteFunc: func(obj interface{}) {
151-
c.enqueuePartition(obj)
152-
},
142+
_, _ = partitionClusterInformer.Informer().AddEventHandler(events.WithoutSyncs(cache.ResourceEventHandlerFuncs{
143+
AddFunc: func(obj interface{}) {
144+
c.enqueuePartition(obj)
145+
},
146+
UpdateFunc: func(_, newObj interface{}) {
147+
c.enqueuePartition(newObj)
148+
},
149+
DeleteFunc: func(obj interface{}) {
150+
c.enqueuePartition(obj)
153151
},
154-
)
152+
}))
155153

156154
return c, nil
157155
}

pkg/reconciler/apis/crdcleanup/crdcleanup_controller.go

Lines changed: 8 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -39,6 +39,7 @@ import (
3939
"github.com/kcp-dev/kcp/pkg/indexers"
4040
"github.com/kcp-dev/kcp/pkg/logging"
4141
"github.com/kcp-dev/kcp/pkg/reconciler/apis/apibinding"
42+
"github.com/kcp-dev/kcp/pkg/reconciler/events"
4243
apisv1alpha1 "github.com/kcp-dev/kcp/sdk/apis/apis/v1alpha1"
4344
apisv1alpha1informers "github.com/kcp-dev/kcp/sdk/client/informers/externalversions/apis/v1alpha1"
4445
)
@@ -92,16 +93,14 @@ func NewController(
9293
},
9394
})
9495

95-
_, _ = apiBindingInformer.Informer().AddEventHandler(
96-
cache.ResourceEventHandlerFuncs{
97-
UpdateFunc: func(oldObj, newObj interface{}) {
98-
c.enqueueFromAPIBinding(oldObj.(*apisv1alpha1.APIBinding), newObj.(*apisv1alpha1.APIBinding))
99-
},
100-
DeleteFunc: func(obj interface{}) {
101-
c.enqueueFromAPIBinding(nil, obj.(*apisv1alpha1.APIBinding))
102-
},
96+
_, _ = apiBindingInformer.Informer().AddEventHandler(events.WithoutSyncs(cache.ResourceEventHandlerFuncs{
97+
UpdateFunc: func(oldObj, newObj interface{}) {
98+
c.enqueueFromAPIBinding(oldObj.(*apisv1alpha1.APIBinding), newObj.(*apisv1alpha1.APIBinding))
10399
},
104-
)
100+
DeleteFunc: func(obj interface{}) {
101+
c.enqueueFromAPIBinding(nil, obj.(*apisv1alpha1.APIBinding))
102+
},
103+
}))
105104

106105
return c, nil
107106
}

pkg/reconciler/apis/extraannotationsync/apibindingannotation_controller.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -40,6 +40,7 @@ import (
4040

4141
"github.com/kcp-dev/kcp/pkg/indexers"
4242
"github.com/kcp-dev/kcp/pkg/logging"
43+
"github.com/kcp-dev/kcp/pkg/reconciler/events"
4344
apisv1alpha1 "github.com/kcp-dev/kcp/sdk/apis/apis/v1alpha1"
4445
"github.com/kcp-dev/kcp/sdk/apis/core"
4546
kcpclientset "github.com/kcp-dev/kcp/sdk/client/clientset/versioned/cluster"
@@ -109,10 +110,10 @@ func NewController(
109110

110111
logger := logging.WithReconciler(klog.Background(), ControllerName)
111112

112-
_, _ = apiExportInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
113+
_, _ = apiExportInformer.Informer().AddEventHandler(events.WithoutSyncs(cache.ResourceEventHandlerFuncs{
113114
AddFunc: func(obj interface{}) { c.enqueueAPIExport(obj, logger) },
114115
UpdateFunc: func(_, obj interface{}) { c.enqueueAPIExport(obj, logger) },
115-
})
116+
}))
116117

117118
_, _ = apiBindingInformer.Informer().AddEventHandler(cache.ResourceEventHandlerFuncs{
118119
AddFunc: func(obj interface{}) { c.enqueueAPIBinding(obj, logger, "") },

pkg/reconciler/apis/identitycache/api_export_identity_controller.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ import (
3737

3838
configshard "github.com/kcp-dev/kcp/config/shard"
3939
"github.com/kcp-dev/kcp/pkg/logging"
40+
"github.com/kcp-dev/kcp/pkg/reconciler/events"
4041
apisv1alpha1 "github.com/kcp-dev/kcp/sdk/apis/apis/v1alpha1"
4142
"github.com/kcp-dev/kcp/sdk/apis/core"
4243
apisv1alpha1informers "github.com/kcp-dev/kcp/sdk/client/informers/externalversions/apis/v1alpha1"
@@ -82,7 +83,7 @@ func NewApiExportIdentityProviderController(
8283
},
8384
}
8485

85-
_, _ = globalAPIExportInformer.Informer().AddEventHandler(cache.FilteringResourceEventHandler{
86+
_, _ = globalAPIExportInformer.Informer().AddEventHandler(events.WithoutSyncs(cache.FilteringResourceEventHandler{
8687
FilterFunc: func(obj interface{}) bool {
8788
key, err := kcpcache.DeletionHandlingMetaClusterNamespaceKeyFunc(obj)
8889
if err != nil {
@@ -102,7 +103,7 @@ func NewApiExportIdentityProviderController(
102103
UpdateFunc: func(old, new interface{}) { c.queue.Add(workKey) },
103104
DeleteFunc: func(obj interface{}) { c.queue.Add(workKey) },
104105
},
105-
})
106+
}))
106107

107108
_, _ = configMapInformer.Informer().AddEventHandler(cache.FilteringResourceEventHandler{
108109
FilterFunc: func(obj interface{}) bool {

pkg/reconciler/apis/permissionclaimlabel/permissionclaimlabel_resource_controller.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -45,7 +45,7 @@ const (
4545
ResourceControllerName = "kcp-resource-permissionclaimlabel"
4646
)
4747

48-
// NewController returns a new controller for labeling resources for accepted permission claims.
48+
// NewResourceController returns a new controller for labeling resources for accepted permission claims.
4949
func NewResourceController(
5050
kcpClusterClient kcpclientset.ClusterInterface,
5151
dynamicClusterClient kcpdynamic.ClusterInterface,

pkg/reconciler/cache/labelclusterrolebindings/labelclusterrolebinding_controller.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -43,6 +43,7 @@ import (
4343
"github.com/kcp-dev/kcp/pkg/reconciler/cache/labelclusterroles"
4444
"github.com/kcp-dev/kcp/pkg/reconciler/cache/replication"
4545
"github.com/kcp-dev/kcp/pkg/reconciler/committer"
46+
"github.com/kcp-dev/kcp/pkg/reconciler/events"
4647
)
4748

4849
type Controller interface {
@@ -101,7 +102,7 @@ func NewController(
101102
},
102103
})
103104

104-
_, _ = clusterRoleInformer.Informer().AddEventHandler(cache.FilteringResourceEventHandler{
105+
_, _ = clusterRoleInformer.Informer().AddEventHandler(events.WithoutSyncs(cache.FilteringResourceEventHandler{
105106
FilterFunc: replication.IsNoSystemClusterName,
106107
Handler: cache.ResourceEventHandlerFuncs{
107108
AddFunc: func(obj interface{}) {
@@ -114,7 +115,7 @@ func NewController(
114115
c.enqueueClusterRole(obj)
115116
},
116117
},
117-
})
118+
}))
118119

119120
return c
120121
}

pkg/reconciler/cache/labelclusterroles/labelclusterrole_controller.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -42,6 +42,7 @@ import (
4242
"github.com/kcp-dev/kcp/pkg/logging"
4343
"github.com/kcp-dev/kcp/pkg/reconciler/cache/replication"
4444
"github.com/kcp-dev/kcp/pkg/reconciler/committer"
45+
"github.com/kcp-dev/kcp/pkg/reconciler/events"
4546
)
4647

4748
type Controller interface {
@@ -100,7 +101,7 @@ func NewController(
100101
},
101102
})
102103

103-
_, _ = clusterRoleBindingInformer.Informer().AddEventHandler(cache.FilteringResourceEventHandler{
104+
_, _ = clusterRoleBindingInformer.Informer().AddEventHandler(events.WithoutSyncs(cache.FilteringResourceEventHandler{
104105
FilterFunc: replication.IsNoSystemClusterName,
105106
Handler: cache.ResourceEventHandlerFuncs{
106107
AddFunc: func(obj interface{}) {
@@ -113,7 +114,7 @@ func NewController(
113114
c.enqueueClusterRoleBinding(obj)
114115
},
115116
},
116-
})
117+
}))
117118

118119
return c
119120
}

pkg/reconciler/core/replicateclusterrole/replicateclusterrole_controller.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -27,6 +27,7 @@ import (
2727

2828
"github.com/kcp-dev/kcp/pkg/reconciler/cache/labelclusterroles"
2929
"github.com/kcp-dev/kcp/pkg/reconciler/cache/replication"
30+
"github.com/kcp-dev/kcp/pkg/reconciler/events"
3031
"github.com/kcp-dev/kcp/sdk/apis/core"
3132
corev1alpha1 "github.com/kcp-dev/kcp/sdk/apis/core/v1alpha1"
3233
corev1alpha1informers "github.com/kcp-dev/kcp/sdk/client/informers/externalversions/core/v1alpha1"
@@ -61,7 +62,7 @@ func NewController(
6162
)
6263

6364
// requeue all ClusterRoles when a LogicalCluster changes replication status
64-
_, _ = logicalClusterInformer.Informer().AddEventHandler(cache.FilteringResourceEventHandler{
65+
_, _ = logicalClusterInformer.Informer().AddEventHandler(events.WithoutSyncs(cache.FilteringResourceEventHandler{
6566
FilterFunc: replication.IsNoSystemClusterName,
6667
Handler: cache.ResourceEventHandlerFuncs{
6768
AddFunc: func(obj interface{}) {
@@ -82,7 +83,7 @@ func NewController(
8283
}
8384
},
8485
},
85-
})
86+
}))
8687

8788
return c
8889
}

0 commit comments

Comments
 (0)