From 2bb245aa38c1d59b671d5fb25b6fa802f408c521 Mon Sep 17 00:00:00 2001 From: Utku Ozdemir Date: Thu, 28 Nov 2024 13:34:40 +0100 Subject: [PATCH] fix: do not register storage metric collectors if it is not enabled If discovery service storage is not enabled, we were still wrongly registering it as prometheus metrics collector, because the nil check was done against the interface. It had to be done on the concrete type instead. Signed-off-by: Utku Ozdemir --- pkg/service/service.go | 16 ++++++---------- 1 file changed, 6 insertions(+), 10 deletions(-) diff --git a/pkg/service/service.go b/pkg/service/service.go index 1999eb0..43bd75c 100644 --- a/pkg/service/service.go +++ b/pkg/service/service.go @@ -181,7 +181,7 @@ func Run(ctx context.Context, options Options, logger *zap.Logger) error { return fmt.Errorf("failed to configure server: %w", err) } - if options.SnapshotsEnabled { + if stateStorage != nil { eg.Go(func() error { return stateStorage.Start(ctx, clockwork.NewRealClock(), options.SnapshotInterval) }) @@ -295,7 +295,11 @@ func Run(ctx context.Context, options Options, logger *zap.Logger) error { } if options.MetricsRegisterer != nil { - collectors := []prom.Collector{state, srv, metrics, stateStorage} + collectors := []prom.Collector{state, srv, metrics} + + if stateStorage != nil { + collectors = append(collectors, stateStorage) + } defer unregisterCollectors(options.MetricsRegisterer, collectors...) @@ -319,20 +323,12 @@ func recoveryHandler(logger *zap.Logger) grpc_recovery.RecoveryHandlerFunc { func unregisterCollectors(registerer prom.Registerer, collectors ...prom.Collector) { for _, collector := range collectors { - if collector == nil { - continue - } - registerer.Unregister(collector) } } func registerCollectors(registerer prom.Registerer, collectors ...prom.Collector) (err error) { for _, collector := range collectors { - if collector == nil { - continue - } - if err = registerer.Register(collector); err != nil { return fmt.Errorf("failed to register collector: %w", err) }