@@ -136,20 +136,24 @@ func NewOperator(ctx context.Context, kubeconfigPath string, clock utilclock.Clo
136
136
serviceAccountQuerier : scoped .NewUserDefinedServiceAccountQuerier (logger , crClient ),
137
137
clientAttenuator : scoped .NewClientAttenuator (logger , config , opClient , crClient ),
138
138
}
139
- op .sources = grpc .NewSourceStore (logger , op .syncSourceState )
139
+ op .sources = grpc .NewSourceStore (logger , 10 * time . Second , 10 * time . Minute , op .syncSourceState )
140
140
op .reconciler = reconciler .NewRegistryReconcilerFactory (lister , opClient , configmapRegistryImage , op .now )
141
141
142
142
// Set up syncing for namespace-scoped resources
143
143
for _ , namespace := range watchedNamespaces {
144
- // Wire OLM CR informers
144
+ // Wire OLM CR sharedIndexInformers
145
145
crInformerFactory := externalversions .NewSharedInformerFactoryWithOptions (op .client , resyncPeriod , externalversions .WithNamespace (namespace ))
146
146
147
147
// Wire CSVs
148
148
csvInformer := crInformerFactory .Operators ().V1alpha1 ().ClusterServiceVersions ()
149
149
op .lister .OperatorsV1alpha1 ().RegisterClusterServiceVersionLister (namespace , csvInformer .Lister ())
150
- op .RegisterInformer (csvInformer .Informer ())
150
+ if err := op .RegisterInformer (csvInformer .Informer ()); err != nil {
151
+ return nil , err
152
+ }
151
153
152
- csvInformer .Informer ().AddIndexers (cache.Indexers {index .ProvidedAPIsIndexFuncKey : index .ProvidedAPIsIndexFunc })
154
+ if err := csvInformer .Informer ().AddIndexers (cache.Indexers {index .ProvidedAPIsIndexFuncKey : index .ProvidedAPIsIndexFunc }); err != nil {
155
+ return nil , err
156
+ }
153
157
csvIndexer := csvInformer .Informer ().GetIndexer ()
154
158
op .csvProvidedAPIsIndexer [namespace ] = csvIndexer
155
159
@@ -228,43 +232,43 @@ func NewOperator(ctx context.Context, kubeconfigPath string, clock utilclock.Clo
228
232
return nil , err
229
233
}
230
234
231
- // Wire k8s informers
235
+ // Wire k8s sharedIndexInformers
232
236
k8sInformerFactory := informers .NewSharedInformerFactoryWithOptions (op .opClient .KubernetesInterface (), resyncPeriod , informers .WithNamespace (namespace ))
233
- informers := []cache.SharedIndexInformer {}
237
+ sharedIndexInformers := []cache.SharedIndexInformer {}
234
238
235
239
// Wire Roles
236
240
roleInformer := k8sInformerFactory .Rbac ().V1 ().Roles ()
237
241
op .lister .RbacV1 ().RegisterRoleLister (namespace , roleInformer .Lister ())
238
- informers = append (informers , roleInformer .Informer ())
242
+ sharedIndexInformers = append (sharedIndexInformers , roleInformer .Informer ())
239
243
240
244
// Wire RoleBindings
241
245
roleBindingInformer := k8sInformerFactory .Rbac ().V1 ().RoleBindings ()
242
246
op .lister .RbacV1 ().RegisterRoleBindingLister (namespace , roleBindingInformer .Lister ())
243
- informers = append (informers , roleBindingInformer .Informer ())
247
+ sharedIndexInformers = append (sharedIndexInformers , roleBindingInformer .Informer ())
244
248
245
249
// Wire ServiceAccounts
246
250
serviceAccountInformer := k8sInformerFactory .Core ().V1 ().ServiceAccounts ()
247
251
op .lister .CoreV1 ().RegisterServiceAccountLister (namespace , serviceAccountInformer .Lister ())
248
- informers = append (informers , serviceAccountInformer .Informer ())
252
+ sharedIndexInformers = append (sharedIndexInformers , serviceAccountInformer .Informer ())
249
253
250
254
// Wire Services
251
255
serviceInformer := k8sInformerFactory .Core ().V1 ().Services ()
252
256
op .lister .CoreV1 ().RegisterServiceLister (namespace , serviceInformer .Lister ())
253
- informers = append (informers , serviceInformer .Informer ())
257
+ sharedIndexInformers = append (sharedIndexInformers , serviceInformer .Informer ())
254
258
255
259
// Wire Pods
256
260
podInformer := k8sInformerFactory .Core ().V1 ().Pods ()
257
261
op .lister .CoreV1 ().RegisterPodLister (namespace , podInformer .Lister ())
258
- informers = append (informers , podInformer .Informer ())
262
+ sharedIndexInformers = append (sharedIndexInformers , podInformer .Informer ())
259
263
260
264
// Wire ConfigMaps
261
265
configMapInformer := k8sInformerFactory .Core ().V1 ().ConfigMaps ()
262
266
op .lister .CoreV1 ().RegisterConfigMapLister (namespace , configMapInformer .Lister ())
263
- informers = append (informers , configMapInformer .Informer ())
267
+ sharedIndexInformers = append (sharedIndexInformers , configMapInformer .Informer ())
264
268
265
269
// Generate and register QueueInformers for k8s resources
266
270
k8sSyncer := queueinformer .LegacySyncHandler (op .syncObject ).ToSyncerWithDelete (op .handleDeletion )
267
- for _ , informer := range informers {
271
+ for _ , informer := range sharedIndexInformers {
268
272
queueInformer , err := queueinformer .NewQueueInformer (
269
273
ctx ,
270
274
queueinformer .WithLogger (op .logger ),
@@ -294,7 +298,9 @@ func NewOperator(ctx context.Context, kubeconfigPath string, clock utilclock.Clo
294
298
if err != nil {
295
299
return nil , err
296
300
}
297
- op .RegisterQueueInformer (crdQueueInformer )
301
+ if err := op .RegisterQueueInformer (crdQueueInformer ); err != nil {
302
+ return nil , err
303
+ }
298
304
299
305
// Namespace sync for resolving subscriptions
300
306
namespaceInformer := informers .NewSharedInformerFactory (op .opClient .KubernetesInterface (), resyncPeriod ).Core ().V1 ().Namespaces ()
@@ -328,7 +334,7 @@ func (o *Operator) syncSourceState(state grpc.SourceState) {
328
334
329
335
switch state .State {
330
336
case connectivity .Ready :
331
- o .resolveNamespace (state .Key .Namespace )
337
+ o .nsResolveQueue . Add (state .Key .Namespace )
332
338
default :
333
339
if err := o .catsrcQueueSet .Requeue (state .Key .Namespace , state .Key .Name ); err != nil {
334
340
o .logger .WithError (err ).Info ("couldn't requeue catalogsource from catalog status change" )
@@ -509,12 +515,6 @@ func (o *Operator) syncCatalogSources(obj interface{}) (syncError error) {
509
515
return err
510
516
}
511
517
512
- logger .Debug ("updating catsrc status" )
513
- if _ , err := o .client .OperatorsV1alpha1 ().CatalogSources (out .GetNamespace ()).UpdateStatus (out ); err != nil {
514
- return err
515
- }
516
- logger .Debug ("registry server recreated" )
517
-
518
518
if err := o .sources .Remove (sourceKey ); err != nil {
519
519
o .logger .WithError (err ).Debug ("error closing client connection" )
520
520
}
@@ -672,10 +672,6 @@ func (o *Operator) syncSubscriptions(obj interface{}) error {
672
672
return nil
673
673
}
674
674
675
- func (o * Operator ) resolveNamespace (namespace string ) {
676
- o .nsResolveQueue .Add (namespace )
677
- }
678
-
679
675
func (o * Operator ) nothingToUpdate (logger * logrus.Entry , sub * v1alpha1.Subscription ) bool {
680
676
// Only sync if catalog has been updated since last sync time
681
677
if o .sourcesLastUpdate .Before (& sub .Status .LastUpdated ) && sub .Status .State != v1alpha1 .SubscriptionStateNone && sub .Status .State != v1alpha1 .SubscriptionStateUpgradeAvailable {
0 commit comments