summaryrefslogtreecommitdiffstats
path: root/metrics
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2016-11-21 00:57:53 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2016-11-21 00:57:53 +0000
commit24d600f20e50b44a11e9f929fa0e57ff9cce242a (patch)
treec3ac34dcbee55f0fcb6274282d13d92021861bda /metrics
parent0921416b19923a6a162924dd6097f402361b950c (diff)
Avoid generating code in multiple translation units.
Diffstat (limited to 'metrics')
-rw-r--r--metrics/src/vespa/metrics/countmetric.cpp9
-rw-r--r--metrics/src/vespa/metrics/countmetric.h6
-rw-r--r--metrics/src/vespa/metrics/countmetric.hpp32
-rw-r--r--metrics/src/vespa/metrics/metricmanager.cpp17
-rw-r--r--metrics/src/vespa/metrics/valuemetric.cpp6
-rw-r--r--metrics/src/vespa/metrics/valuemetric.h2
-rw-r--r--metrics/src/vespa/metrics/valuemetric.hpp9
7 files changed, 45 insertions, 36 deletions
diff --git a/metrics/src/vespa/metrics/countmetric.cpp b/metrics/src/vespa/metrics/countmetric.cpp
index 9f5ae741b30..aa8a61785fb 100644
--- a/metrics/src/vespa/metrics/countmetric.cpp
+++ b/metrics/src/vespa/metrics/countmetric.cpp
@@ -10,14 +10,15 @@ LOG_SETUP(".metrics.metric.count");
namespace metrics {
void
-AbstractCountMetric::logWarning(const char* msg) const
+AbstractCountMetric::logWarning(const char* msg, const char * op) const
{
- LOG(warning, "%s", msg);
+ vespalib::asciistream ost;
+ ost << msg << " in count metric " << getPath() << " op " << op << ". Resetting it.";
+ LOG(warning, "%s", ost.str().c_str());
}
void
-AbstractCountMetric::sendLogCountEvent(
- Metric::String name, uint64_t value) const
+AbstractCountMetric::sendLogCountEvent(Metric::String name, uint64_t value) const
{
EV_COUNT(name.c_str(), value);
}
diff --git a/metrics/src/vespa/metrics/countmetric.h b/metrics/src/vespa/metrics/countmetric.h
index e09168f54db..55f3b8a78b3 100644
--- a/metrics/src/vespa/metrics/countmetric.h
+++ b/metrics/src/vespa/metrics/countmetric.h
@@ -45,7 +45,7 @@ protected:
{
}
- void logWarning(const char* msg) const;
+ void logWarning(const char* msg, const char * op) const;
void sendLogCountEvent(Metric::String name, uint64_t value) const;
};
@@ -80,8 +80,8 @@ public:
CountMetric & operator++() { inc(); return *this; }
CountMetric & operator--() { dec(); return *this; }
- CountMetric operator++(int) { CountMetric tmp(*this); inc(); return tmp; }
- CountMetric operator--(int) { CountMetric tmp(*this); inc(); return tmp; }
+ CountMetric operator++(int);
+ CountMetric operator--(int);
CountMetric & operator+=(const CountMetric &);
CountMetric & operator-=(const CountMetric &);
diff --git a/metrics/src/vespa/metrics/countmetric.hpp b/metrics/src/vespa/metrics/countmetric.hpp
index 885da17e718..187048ce596 100644
--- a/metrics/src/vespa/metrics/countmetric.hpp
+++ b/metrics/src/vespa/metrics/countmetric.hpp
@@ -50,9 +50,7 @@ CountMetric<T, SumOnAdd>::operator+=(const CountMetric<T, SumOnAdd>& other)
} while (!_values.setValues(values));
if (overflow) {
_values.reset();
- std::ostringstream ost;
- ost << "Overflow in metric " << getPath() << " op +=. Resetting it.";
- logWarning(ost.str().c_str());
+ logWarning("Overflow", "+=");
}
return *this;
}
@@ -71,14 +69,28 @@ CountMetric<T, SumOnAdd>::operator-=(const CountMetric<T, SumOnAdd>& other)
} while (!_values.setValues(values));
if (underflow) {
_values.reset();
- std::ostringstream ost;
- ost << "Underflow in metric " << getPath() << " op -=. Resetting it.";
- logWarning(ost.str().c_str());
+ logWarning("Underflow", "-=");
}
return *this;
}
template <typename T, bool SumOnAdd>
+CountMetric<T, SumOnAdd>
+CountMetric<T, SumOnAdd>:: operator++(int) {
+ CountMetric tmp(*this);
+ inc();
+ return tmp;
+}
+
+template <typename T, bool SumOnAdd>
+CountMetric<T, SumOnAdd>
+CountMetric<T, SumOnAdd>::operator--(int) {
+ CountMetric tmp(*this);
+ inc();
+ return tmp;
+}
+
+template <typename T, bool SumOnAdd>
void
CountMetric<T, SumOnAdd>::set(T value)
{
@@ -100,9 +112,7 @@ CountMetric<T, SumOnAdd>::inc(T value)
} while (!_values.setValues(values));
if (overflow) {
_values.reset();
- std::ostringstream ost;
- ost << "Overflow in metric " << getPath() << ". Resetting it.";
- logWarning(ost.str().c_str());
+ logWarning("Overflow", "inc");
}
}
@@ -119,9 +129,7 @@ CountMetric<T, SumOnAdd>::dec(T value)
} while (!_values.setValues(values));
if (underflow) {
_values.reset();
- std::ostringstream ost;
- ost << "Underflow in metric " << getPath() << ". Resetting it.";
- logWarning(ost.str().c_str());
+ logWarning("Underflow", "dec");
}
}
diff --git a/metrics/src/vespa/metrics/metricmanager.cpp b/metrics/src/vespa/metrics/metricmanager.cpp
index df7316610a0..7e56087887a 100644
--- a/metrics/src/vespa/metrics/metricmanager.cpp
+++ b/metrics/src/vespa/metrics/metricmanager.cpp
@@ -229,11 +229,8 @@ namespace {
};
std::list<Result> result;
- ConsumerMetricBuilder(const Config::Consumer& c)
- : _consumer(c), _matchedMetrics()
- {
- LOG(spam, "Adding metrics for consumer %s", c.name.c_str());
- }
+ ConsumerMetricBuilder(const Config::Consumer& c) __attribute__((noinline));
+ ~ConsumerMetricBuilder() __attribute__((noinline));
bool tagAdded(const Metric& metric) {
for (const auto& s : _consumer.tags) {
@@ -322,6 +319,12 @@ namespace {
}
};
+ ConsumerMetricBuilder::ConsumerMetricBuilder(const Config::Consumer& c)
+ : _consumer(c), _matchedMetrics()
+ {
+ LOG(spam, "Adding metrics for consumer %s", c.name.c_str());
+ }
+ ConsumerMetricBuilder::~ConsumerMetricBuilder() { }
}
@@ -352,10 +355,10 @@ MetricManager::handleMetricsAltered(const MetricLockGuard & guard)
} else {
LOG(info, "Metrics registration changes detected. Handling changes.");
}
- std::map<Metric::String, ConsumerSpec::SP> configMap;
_activeMetrics.getMetrics().clearRegistrationAltered();
+ std::map<Metric::String, ConsumerSpec::SP> configMap;
LOG(debug, "Calculating new consumer config");
- for (auto consumer : _config->consumer) {
+ for (const auto & consumer : _config->consumer) {
ConsumerMetricBuilder consumerMetricBuilder(consumer);
_activeMetrics.getMetrics().visit(consumerMetricBuilder);
configMap[consumer.name] = ConsumerSpec::SP(
diff --git a/metrics/src/vespa/metrics/valuemetric.cpp b/metrics/src/vespa/metrics/valuemetric.cpp
index 1b00bf8cbeb..821bbaf99f2 100644
--- a/metrics/src/vespa/metrics/valuemetric.cpp
+++ b/metrics/src/vespa/metrics/valuemetric.cpp
@@ -15,9 +15,11 @@ std::atomic<bool> hasWarned {false};
}
void
-AbstractValueMetric::logWarning(const char* msg) const
+AbstractValueMetric::logWarning(const char* msg, const char * op) const
{
- LOG(warning, "%s", msg);
+ vespalib::asciistream ost;
+ ost << msg << " in value metric " << getPath() << " op " << op << ". Resetting it.";
+ LOG(warning, "%s", ost.str().c_str());
}
void
diff --git a/metrics/src/vespa/metrics/valuemetric.h b/metrics/src/vespa/metrics/valuemetric.h
index 48fa1005127..ce132e3ffdd 100644
--- a/metrics/src/vespa/metrics/valuemetric.h
+++ b/metrics/src/vespa/metrics/valuemetric.h
@@ -41,7 +41,7 @@ protected:
AbstractValueMetric(const AbstractValueMetric& other, MetricSet* owner)
: Metric(other, owner) {}
- void logWarning(const char* msg) const;
+ void logWarning(const char* msg, const char *op) const;
void logNonFiniteValueWarning() const;
void sendLogEvent(Metric::String name, double value) const;
};
diff --git a/metrics/src/vespa/metrics/valuemetric.hpp b/metrics/src/vespa/metrics/valuemetric.hpp
index 96a59e9f347..08c639e8069 100644
--- a/metrics/src/vespa/metrics/valuemetric.hpp
+++ b/metrics/src/vespa/metrics/valuemetric.hpp
@@ -130,11 +130,8 @@ ValueMetric<AvgVal, TotVal, SumOnAdd>::add(const Values& values2, bool sumOnAdd)
if (values._max < values2._max) values._max = values2._max;
} while (!_values.setValues(values));
if (overflow) {
- std::ostringstream ost;
- ost << "ValueMetric " << getPath() << " overflowed. Resetting it. Old value = (";
- ost << values << "), Incoming = (" << values2 << ")";
- logWarning(ost.str().c_str());
_values.reset();
+ logWarning("Overflow", "add");
}
}
@@ -153,9 +150,7 @@ ValueMetric<AvgVal, TotVal, SumOnAdd>::dec(const Values& values2)
} while (!_values.setValues(values));
if (underflow) {
_values.reset();
- std::ostringstream ost;
- ost << "ValueMetric " << getPath() << " underflowed. Resetting it.";
- logWarning(ost.str().c_str());
+ logWarning("Underflow", "dec");
}
}