aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2023-03-01 07:51:03 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2023-03-01 17:03:02 +0000
commita763fc387a1444a425b630498fa9ab051ed8e400 (patch)
tree3e5ae9a27f2ebcfb86548c47ee95b5ac9e0d60ef
parent4ddd73423b5791ec69da4a65eb99fbeec5e62287 (diff)
Avoid spreading #ifdef around.
-rw-r--r--metrics/src/vespa/metrics/metricmanager.cpp56
1 files changed, 32 insertions, 24 deletions
diff --git a/metrics/src/vespa/metrics/metricmanager.cpp b/metrics/src/vespa/metrics/metricmanager.cpp
index 52226e32e19..3ba3837bf19 100644
--- a/metrics/src/vespa/metrics/metricmanager.cpp
+++ b/metrics/src/vespa/metrics/metricmanager.cpp
@@ -515,13 +515,27 @@ namespace {
struct ConsumerMetricVisitor : public MetricVisitor {
const MetricManager::ConsumerSpec& _metricsToMatch;
MetricVisitor& _client;
-#ifdef VERIFY_ALL_METRICS_VISITED
- std::set<Metric::String> _visitedMetrics;
-#endif
+ std::unique_ptr<std::set<Metric::String>> _visitedMetrics;
+
+ ConsumerMetricVisitor(const MetricManager::ConsumerSpec& spec, MetricVisitor& clientVisitor, bool verify)
+ : _metricsToMatch(spec),
+ _client(clientVisitor),
+ _visitedMetrics()
+ {
+ if (verify) {
+ _visitedMetrics = std::make_unique<std::set<Metric::String>>();
+ }
+ }
+ ~ConsumerMetricVisitor() {
+ if (_visitedMetrics) {
+ for (auto metric: _metricsToMatch.includedMetrics) {
+ if ( ! _visitedMetrics->contains(metric)) {
+ LOG(info, "Failed to find metric %s to be visited.", metric.c_str());
+ }
+ }
+ }
+ }
- ConsumerMetricVisitor(const MetricManager::ConsumerSpec& spec, MetricVisitor& clientVisitor)
- : _metricsToMatch(spec), _client(clientVisitor)
- {}
bool visitMetricSet(const MetricSet& metricSet, bool autoGenerated) override {
if (metricSet.isTopSet()) return true;
@@ -530,30 +544,29 @@ struct ConsumerMetricVisitor : public MetricVisitor {
}
void doneVisitingMetricSet(const MetricSet& metricSet) override {
if (!metricSet.isTopSet()) {
-#ifdef VERIFY_ALL_METRICS_VISITED
- _visitedMetrics.insert(metricSet.getPath());
-#endif
+ record(metricSet);
_client.doneVisitingMetricSet(metricSet);
}
}
bool visitCountMetric(const AbstractCountMetric& metric, bool autoGenerated) override {
if (_metricsToMatch.contains(metric)) {
-#ifdef VERIFY_ALL_METRICS_VISITED
- _visitedMetrics.insert(metric.getPath());
-#endif
+ record(metric);
return _client.visitCountMetric(metric, autoGenerated);
}
return true;
}
bool visitValueMetric(const AbstractValueMetric& metric, bool autoGenerated) override {
if (_metricsToMatch.contains(metric)) {
-#ifdef VERIFY_ALL_METRICS_VISITED
- _visitedMetrics.insert(metric.getPath());
-#endif
+ record(metric);
return _client.visitValueMetric(metric, autoGenerated);
}
return true;
}
+ void record(const Metric & m) {
+ if (_visitedMetrics) {
+ _visitedMetrics->insert(m.getPath());
+ }
+ }
};
}
@@ -568,17 +581,12 @@ MetricManager::visit(const MetricLockGuard & guard, const MetricSnapshot& snapsh
} else {
const ConsumerSpec * consumerSpec = getConsumerSpec(guard, consumer);
if (consumerSpec) {
- ConsumerMetricVisitor consumerVis(*consumerSpec, visitor);
- snapshot.getMetrics().visit(consumerVis);
#ifdef VERIFY_ALL_METRICS_VISITED
- for (auto metric = consumerSpec->includedMetrics) {
- if (consumerVis._visitedMetrics.find(metric)
- == consumerVis._visitedMetrics.end())
- {
- LOG(debug, "Failed to find metric %s to be visited.", metric.c_str());
- }
- }
+ ConsumerMetricVisitor consumerVis(*consumerSpec, visitor, true);
+#else
+ ConsumerMetricVisitor consumerVis(*consumerSpec, visitor, false);
#endif
+ snapshot.getMetrics().visit(consumerVis);
} else {
LOGBP(debug, "Requested metrics for non-defined consumer '%s'.", consumer.c_str());
}