Skip to content

Commit f27e013

Browse files
author
Evsyukov Denis
committed
refactor: remove global factory store initialization and use instance-specific factory store in resource informer
Signed-off-by: Evsyukov Denis <denis.evsyukov@flant.com>
1 parent 6c02343 commit f27e013

3 files changed

Lines changed: 5 additions & 12 deletions

File tree

pkg/kube_events_manager/factory.go

Lines changed: 1 addition & 8 deletions
Original file line numberDiff line numberDiff line change
@@ -15,14 +15,7 @@ import (
1515
"k8s.io/client-go/tools/cache"
1616
)
1717

18-
var (
19-
DefaultFactoryStore *FactoryStore
20-
DefaultSyncTime = 100 * time.Millisecond
21-
)
22-
23-
func init() {
24-
DefaultFactoryStore = NewFactoryStore()
25-
}
18+
var DefaultSyncTime = 100 * time.Millisecond
2619

2720
type FactoryIndex struct {
2821
GVR schema.GroupVersionResource

pkg/kube_events_manager/resource_informer.go

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -37,6 +37,7 @@ type resourceInformer struct {
3737
GroupVersionResource schema.GroupVersionResource
3838
ListOptions metav1.ListOptions
3939

40+
defaultFactoryStore *FactoryStore
4041
// A cache of objects and filterResults. It is a part of the Monitor's snapshot.
4142
cachedObjects map[string]*kemtypes.ObjectAndFilterResult
4243
cacheLock sync.RWMutex
@@ -91,6 +92,7 @@ func newResourceInformer(ns, name string, cfg *resourceInformerConfig) *resource
9192
cachedObjectsInfo: &CachedObjectsInfo{},
9293
cachedObjectsIncrement: &CachedObjectsInfo{},
9394
logger: cfg.logger,
95+
defaultFactoryStore: NewFactoryStore(),
9496
}
9597
return informer
9698
}
@@ -455,13 +457,13 @@ func (ei *resourceInformer) start() {
455457
go func() {
456458
if ei.ctx != nil {
457459
<-ei.ctx.Done()
458-
DefaultFactoryStore.Stop(ei.id, ei.FactoryIndex)
460+
ei.defaultFactoryStore.Stop(ei.id, ei.FactoryIndex)
459461
}
460462
}()
461463

462464
// TODO: separate handler and informer
463465
errorHandler := newWatchErrorHandler(ei.Monitor.Metadata.DebugName, ei.Monitor.Kind, ei.Monitor.Metadata.LogLabels, ei.metricStorage, ei.logger.Named("watch-error-handler"))
464-
err := DefaultFactoryStore.Start(ei.ctx, ei.id, ei.KubeClient.Dynamic(), ei.FactoryIndex, ei, errorHandler)
466+
err := ei.defaultFactoryStore.Start(ei.ctx, ei.id, ei.KubeClient.Dynamic(), ei.FactoryIndex, ei, errorHandler)
465467
if err != nil {
466468
ei.Monitor.Logger.Error("cache is not synced for informer", slog.String("debugName", ei.Monitor.Metadata.DebugName))
467469
return

test/hook/context/generator.go

Lines changed: 0 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -67,8 +67,6 @@ func NewBindingContextController(config string, logger *log.Logger, version ...f
6767

6868
b.KubeEventsManager = kubeeventsmanager.NewKubeEventsManager(ctx, b.fakeCluster.Client, b.logger.Named("kube-events-manager"))
6969
b.KubeEventsManager.WithMetricStorage(metricstorage.NewMetricStorage(ctx, "metrics-prefix", false, log.NewNop()))
70-
// Re-create factory to drop informers created using different b.fakeCluster.Client.
71-
// kubeeventsmanager.DefaultFactoryStore = kubeeventsmanager.NewFactoryStore()
7270

7371
b.ScheduleManager = schedulemanager.NewScheduleManager(ctx, b.logger.Named("schedule-manager"))
7472

0 commit comments

Comments
 (0)