diff --git a/metric/prometheus.go b/metric/prometheus.go index 1be333e..9663db3 100644 --- a/metric/prometheus.go +++ b/metric/prometheus.go @@ -119,10 +119,6 @@ func (pe *prometheusExporter) loop(ctx context.Context) { case nm := <-pe.registerChan: var nextmetrics map[string]*prometheusMetricDesc if collector != nil { - if collector.metrics[nm.key] != nil { - break - } - nextmetrics = collector.metrics prometheus.Unregister(collector) nextmetrics[nm.key] = nm @@ -132,12 +128,14 @@ func (pe *prometheusExporter) loop(ctx context.Context) { } } - collector = &prometheusCollector{ + nextcollector := &prometheusCollector{ metrics: nextmetrics, } - if err := prometheus.Register(collector); err != nil { + if err := prometheus.Register(nextcollector); err != nil { logger.Error("prometheus register err :", *nm, err) + } else { + collector = nextcollector } } }