Skip to content

Commit

Permalink
Stop counterCache only when already started (elastic#19103)
Browse files Browse the repository at this point in the history
(cherry picked from commit 4a45bb4)
  • Loading branch information
ChrsMark committed Jun 17, 2020
1 parent 673cc86 commit c1ffe8b
Show file tree
Hide file tree
Showing 3 changed files with 22 additions and 14 deletions.
1 change: 1 addition & 0 deletions CHANGELOG.next.asciidoc
Original file line number Diff line number Diff line change
Expand Up @@ -285,6 +285,7 @@ field. You can revert this change by configuring tags for the module and omittin
- Fix compute and pubsub dashboard for googlecloud module. {issue}18962[18962] {pull}18980[18980]
- Fix crash on vsphere module when Host information is not available. {issue}18996[18996] {pull}19078[19078]
- Fix incorrect usage of hints builder when exposed port is a substring of the hint {pull}19052[19052]
- Stop counterCache only when already started {pull}19103[19103]

*Packetbeat*

Expand Down
33 changes: 19 additions & 14 deletions metricbeat/module/prometheus/collector/collector.go
Original file line number Diff line number Diff line change
Expand Up @@ -19,7 +19,6 @@ package collector

import (
"regexp"
"sync"

"github.com/pkg/errors"
dto "github.com/prometheus/client_model/go"
Expand Down Expand Up @@ -76,13 +75,13 @@ type PromEventsGeneratorFactory func(ms mb.BaseMetricSet) (PromEventsGenerator,
// MetricSet for fetching prometheus data
type MetricSet struct {
mb.BaseMetricSet
prometheus p.Prometheus
includeMetrics []*regexp.Regexp
excludeMetrics []*regexp.Regexp
namespace string
promEventsGen PromEventsGenerator
once sync.Once
host string
prometheus p.Prometheus
includeMetrics []*regexp.Regexp
excludeMetrics []*regexp.Regexp
namespace string
promEventsGen PromEventsGenerator
host string
eventGenStarted bool
}

// MetricSetBuilder returns a builder function for a new Prometheus metricset using
Expand All @@ -104,10 +103,11 @@ func MetricSetBuilder(namespace string, genFactory PromEventsGeneratorFactory) f
}

ms := &MetricSet{
BaseMetricSet: base,
prometheus: prometheus,
namespace: namespace,
promEventsGen: promEventsGen,
BaseMetricSet: base,
prometheus: prometheus,
namespace: namespace,
promEventsGen: promEventsGen,
eventGenStarted: false,
}
// store host here to use it as a pointer when building `up` metric
ms.host = ms.Host()
Expand All @@ -126,7 +126,10 @@ func MetricSetBuilder(namespace string, genFactory PromEventsGeneratorFactory) f

// Fetch fetches data and reports it
func (m *MetricSet) Fetch(reporter mb.ReporterV2) error {
m.once.Do(m.promEventsGen.Start)
if !m.eventGenStarted {
m.promEventsGen.Start()
m.eventGenStarted = true
}

families, err := m.prometheus.GetFamilies()
eventList := map[string]common.MapStr{}
Expand Down Expand Up @@ -186,7 +189,9 @@ func (m *MetricSet) Fetch(reporter mb.ReporterV2) error {

// Close stops the metricset
func (m *MetricSet) Close() error {
m.promEventsGen.Stop()
if m.eventGenStarted {
m.promEventsGen.Stop()
}
return nil
}

Expand Down
2 changes: 2 additions & 0 deletions x-pack/metricbeat/module/prometheus/collector/data.go
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,7 @@ import (

"github.com/elastic/beats/v7/libbeat/common"
"github.com/elastic/beats/v7/libbeat/common/cfgwarn"
"github.com/elastic/beats/v7/libbeat/logp"
"github.com/elastic/beats/v7/metricbeat/mb"
"github.com/elastic/beats/v7/metricbeat/module/prometheus/collector"

Expand Down Expand Up @@ -54,6 +55,7 @@ func (g *typedGenerator) Start() {
}

func (g *typedGenerator) Stop() {
logp.Debug("prometheus.collector.cache", "stopping counterCache")
g.counterCache.Stop()
}

Expand Down

0 comments on commit c1ffe8b

Please sign in to comment.