From d5a9784792221063590db572ca6f75095461f438 Mon Sep 17 00:00:00 2001 From: rene <41963722+renaynay@users.noreply.github.com> Date: Tue, 26 Mar 2024 17:58:45 +0100 Subject: [PATCH] fix(pruner): unregister callbck from meter on stop --- pruner/metrics.go | 14 +++++++++++++- pruner/service.go | 2 ++ 2 files changed, 15 insertions(+), 1 deletion(-) diff --git a/pruner/metrics.go b/pruner/metrics.go index b43adda3fd..c43217dc3d 100644 --- a/pruner/metrics.go +++ b/pruner/metrics.go @@ -17,6 +17,8 @@ type metrics struct { lastPruned metric.Int64ObservableGauge failedPrunes metric.Int64ObservableGauge + + clientReg metric.Registration } func (s *Service) WithMetrics() error { @@ -44,7 +46,8 @@ func (s *Service) WithMetrics() error { return nil } - if _, err := meter.RegisterCallback(callback, lastPruned, failedPrunes); err != nil { + clientReg, err := meter.RegisterCallback(callback, lastPruned, failedPrunes) + if err != nil { return err } @@ -52,10 +55,19 @@ func (s *Service) WithMetrics() error { prunedCounter: prunedCounter, lastPruned: lastPruned, failedPrunes: failedPrunes, + clientReg: clientReg, } return nil } +func (m *metrics) close() error { + if m == nil { + return nil + } + + return m.clientReg.Unregister() +} + func (m *metrics) observePrune(ctx context.Context, failed bool) { if m == nil { return diff --git a/pruner/service.go b/pruner/service.go index 26e4cb286b..65935e75d8 100644 --- a/pruner/service.go +++ b/pruner/service.go @@ -84,6 +84,8 @@ func (s *Service) Start(context.Context) error { func (s *Service) Stop(ctx context.Context) error { s.cancel() + s.metrics.close() + select { case <-s.doneCh: return nil