diff options
author | Henning Baldersheim <balder@yahoo-inc.com> | 2016-11-21 00:57:53 +0000 |
---|---|---|
committer | Henning Baldersheim <balder@yahoo-inc.com> | 2016-11-21 00:57:53 +0000 |
commit | 24d600f20e50b44a11e9f929fa0e57ff9cce242a (patch) | |
tree | c3ac34dcbee55f0fcb6274282d13d92021861bda /metrics | |
parent | 0921416b19923a6a162924dd6097f402361b950c (diff) |
Avoid generating code in multiple translation units.
Diffstat (limited to 'metrics')
-rw-r--r-- | metrics/src/vespa/metrics/countmetric.cpp | 9 | ||||
-rw-r--r-- | metrics/src/vespa/metrics/countmetric.h | 6 | ||||
-rw-r--r-- | metrics/src/vespa/metrics/countmetric.hpp | 32 | ||||
-rw-r--r-- | metrics/src/vespa/metrics/metricmanager.cpp | 17 | ||||
-rw-r--r-- | metrics/src/vespa/metrics/valuemetric.cpp | 6 | ||||
-rw-r--r-- | metrics/src/vespa/metrics/valuemetric.h | 2 | ||||
-rw-r--r-- | metrics/src/vespa/metrics/valuemetric.hpp | 9 |
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"); } } |