From 0921416b19923a6a162924dd6097f402361b950c Mon Sep 17 00:00:00 2001 From: Henning Baldersheim Date: Sun, 20 Nov 2016 23:47:33 +0000 Subject: Hide most of the costly metrics in header files stuff --- metrics/src/tests/loadmetrictest.cpp | 6 ++++-- metrics/src/tests/metricmanagertest.cpp | 1 - metrics/src/tests/snapshottest.cpp | 4 ++-- metrics/src/tests/stresstest.cpp | 7 ++++--- metrics/src/tests/summetrictest.cpp | 1 - metrics/src/vespa/metrics/countmetric.h | 5 +++-- metrics/src/vespa/metrics/countmetric.hpp | 3 +++ metrics/src/vespa/metrics/loadmetric.h | 3 ++- metrics/src/vespa/metrics/loadmetric.hpp | 5 ++++- metrics/src/vespa/metrics/metric.cpp | 2 ++ metrics/src/vespa/metrics/metric.h | 2 +- metrics/src/vespa/metrics/metricmanager.cpp | 3 ++- metrics/src/vespa/metrics/metricmanager.h | 2 +- metrics/src/vespa/metrics/metricset.cpp | 2 ++ metrics/src/vespa/metrics/metricset.h | 11 ++++------- metrics/src/vespa/metrics/metricsnapshot.cpp | 2 +- metrics/src/vespa/metrics/metricsnapshot.h | 2 +- metrics/src/vespa/metrics/summetric.cpp | 1 + metrics/src/vespa/metrics/summetric.h | 5 +++-- metrics/src/vespa/metrics/summetric.hpp | 3 +++ metrics/src/vespa/metrics/valuemetric.h | 4 +++- metrics/src/vespa/metrics/valuemetric.hpp | 3 +++ 22 files changed, 49 insertions(+), 28 deletions(-) (limited to 'metrics') diff --git a/metrics/src/tests/loadmetrictest.cpp b/metrics/src/tests/loadmetrictest.cpp index 3585f4adf32..ff4658d6bb2 100644 --- a/metrics/src/tests/loadmetrictest.cpp +++ b/metrics/src/tests/loadmetrictest.cpp @@ -62,7 +62,7 @@ namespace { { } - Metric* clone(std::vector& ownerList, + MetricSet* clone(std::vector& ownerList, CopyType copyType, MetricSet* owner, bool includeUnused = false) const @@ -71,7 +71,9 @@ namespace { return MetricSet::clone(ownerList, copyType, owner, includeUnused); } - return (new MyMetricSet(owner))->assignValues(*this); + MyMetricSet * myset = new MyMetricSet(owner); + myset->assignValues(*this); + return myset; } }; } diff --git a/metrics/src/tests/metricmanagertest.cpp b/metrics/src/tests/metricmanagertest.cpp index d3349d2e91d..31471cc40ed 100644 --- a/metrics/src/tests/metricmanagertest.cpp +++ b/metrics/src/tests/metricmanagertest.cpp @@ -3,7 +3,6 @@ #include #include #include -#include #include #include #include diff --git a/metrics/src/tests/snapshottest.cpp b/metrics/src/tests/snapshottest.cpp index 626b53f7d90..5683363ab42 100644 --- a/metrics/src/tests/snapshottest.cpp +++ b/metrics/src/tests/snapshottest.cpp @@ -67,7 +67,7 @@ struct SubSubMetricSet : public MetricSet { averageSum.addMetricToSum(average2); } - virtual Metric* clone(std::vector& ownerList, + virtual MetricSet* clone(std::vector& ownerList, CopyType copyType, metrics::MetricSet* owner, bool includeUnused) const { @@ -119,7 +119,7 @@ struct SubMetricSet : public MetricSet { setSum.addMetricToSum(set2); } - virtual Metric* clone(std::vector& ownerList, + virtual MetricSet* clone(std::vector& ownerList, CopyType copyType, metrics::MetricSet* owner, bool includeUnused) const { diff --git a/metrics/src/tests/stresstest.cpp b/metrics/src/tests/stresstest.cpp index cb069f27300..f164bf03ee1 100644 --- a/metrics/src/tests/stresstest.cpp +++ b/metrics/src/tests/stresstest.cpp @@ -43,15 +43,16 @@ namespace { _valueSum.addMetricToSum(_value2); } - Metric* clone(std::vector& ownerList, CopyType copyType, + MetricSet* clone(std::vector& ownerList, CopyType copyType, MetricSet* owner, bool includeUnused) const { if (copyType != CLONE) { return MetricSet::clone(ownerList, copyType, owner, includeUnused); } - return (new InnerMetricSet(getName().c_str(), _loadTypes, owner)) - ->assignValues(*this); + InnerMetricSet * myset = new InnerMetricSet(getName().c_str(), _loadTypes, owner); + myset->assignValues(*this); + return myset; } }; struct OuterMetricSet : public MetricSet { diff --git a/metrics/src/tests/summetrictest.cpp b/metrics/src/tests/summetrictest.cpp index 3b5812f363f..0343174e0b3 100644 --- a/metrics/src/tests/summetrictest.cpp +++ b/metrics/src/tests/summetrictest.cpp @@ -1,7 +1,6 @@ // Copyright 2016 Yahoo Inc. Licensed under the terms of the Apache 2.0 license. See LICENSE in the project root. #include #include -#include #include namespace metrics { diff --git a/metrics/src/vespa/metrics/countmetric.h b/metrics/src/vespa/metrics/countmetric.h index 65281fb5b3a..e09168f54db 100644 --- a/metrics/src/vespa/metrics/countmetric.h +++ b/metrics/src/vespa/metrics/countmetric.h @@ -66,8 +66,9 @@ public: CountMetric(const String& name, Tags dimensions, const String& description, MetricSet* owner = 0); - CountMetric(const CountMetric& other, - CopyType, MetricSet* owner); + CountMetric(const CountMetric& other, CopyType, MetricSet* owner); + + ~CountMetric(); virtual MetricValueClass::UP getValues() const { return MetricValueClass::UP(new Values(_values.getValues())); } diff --git a/metrics/src/vespa/metrics/countmetric.hpp b/metrics/src/vespa/metrics/countmetric.hpp index f2f7b953a31..885da17e718 100644 --- a/metrics/src/vespa/metrics/countmetric.hpp +++ b/metrics/src/vespa/metrics/countmetric.hpp @@ -33,6 +33,9 @@ CountMetric::CountMetric(const CountMetric& other, { } +template +CountMetric::~CountMetric() { } + template CountMetric& CountMetric::operator+=(const CountMetric& other) diff --git a/metrics/src/vespa/metrics/loadmetric.h b/metrics/src/vespa/metrics/loadmetric.h index c141c2d9e61..e23973d1681 100644 --- a/metrics/src/vespa/metrics/loadmetric.h +++ b/metrics/src/vespa/metrics/loadmetric.h @@ -64,7 +64,8 @@ public: * the load metric alters this data in supplied metric) */ LoadMetric(const LoadMetric& other, MetricSet* owner); - Metric* clone(std::vector& ownerList, + ~LoadMetric(); + MetricSet* clone(std::vector& ownerList, CopyType copyType, MetricSet* owner, bool includeUnused = false) const override; diff --git a/metrics/src/vespa/metrics/loadmetric.hpp b/metrics/src/vespa/metrics/loadmetric.hpp index 68a0a4981a7..ea456ece92c 100644 --- a/metrics/src/vespa/metrics/loadmetric.hpp +++ b/metrics/src/vespa/metrics/loadmetric.hpp @@ -53,7 +53,10 @@ LoadMetric::LoadMetric(const LoadMetric& other, MetricSe } template -Metric* +LoadMetric::~LoadMetric() { } + +template +MetricSet* LoadMetric::clone(std::vector& ownerList, CopyType copyType, MetricSet* owner, bool includeUnused) const diff --git a/metrics/src/vespa/metrics/metric.cpp b/metrics/src/vespa/metrics/metric.cpp index 01ab46d1093..dbb58882670 100644 --- a/metrics/src/vespa/metrics/metric.cpp +++ b/metrics/src/vespa/metrics/metric.cpp @@ -92,6 +92,8 @@ Metric::Metric(const Metric& other, MetricSet* owner) registerWithOwnerIfRequired(owner); } +Metric::~Metric() { } + bool Metric::tagsSpecifyAtLeastOneDimension(const Tags& tags) const { diff --git a/metrics/src/vespa/metrics/metric.h b/metrics/src/vespa/metrics/metric.h index 40b267652fc..850d712ebf5 100644 --- a/metrics/src/vespa/metrics/metric.h +++ b/metrics/src/vespa/metrics/metric.h @@ -122,7 +122,7 @@ public: MetricSet* owner = 0); Metric(const Metric& other, MetricSet* owner); - virtual ~Metric() {} + ~Metric(); const String& getName() const { return _name; } /** diff --git a/metrics/src/vespa/metrics/metricmanager.cpp b/metrics/src/vespa/metrics/metricmanager.cpp index b915786afcf..df7316610a0 100644 --- a/metrics/src/vespa/metrics/metricmanager.cpp +++ b/metrics/src/vespa/metrics/metricmanager.cpp @@ -340,8 +340,9 @@ MetricManager::checkMetricsAltered(const MetricLockGuard & guard) // When calling this function, the metric lock is already taken. The thread // monitor lock might be taken. void -MetricManager::handleMetricsAltered(const MetricLockGuard &) +MetricManager::handleMetricsAltered(const MetricLockGuard & guard) { + (void) guard; if (_config.get() == NULL) { LOG(info, "_config is NULL -> very odd indeed."); return; diff --git a/metrics/src/vespa/metrics/metricmanager.h b/metrics/src/vespa/metrics/metricmanager.h index 594fa5c43f5..ffa73c5eff1 100644 --- a/metrics/src/vespa/metrics/metricmanager.h +++ b/metrics/src/vespa/metrics/metricmanager.h @@ -303,7 +303,7 @@ private: time_t updatePeriodicMetrics(const MetricLockGuard & guard, time_t updateTime, bool outOfSchedule); void updateSnapshotMetrics(const MetricLockGuard & guard); - void handleMetricsAltered(const MetricLockGuard &); + void handleMetricsAltered(const MetricLockGuard & guard); typedef std::pair SnapSpec; static std::vector createSnapshotPeriods( diff --git a/metrics/src/vespa/metrics/metricset.cpp b/metrics/src/vespa/metrics/metricset.cpp index 4fc925f0218..96bd87c7102 100644 --- a/metrics/src/vespa/metrics/metricset.cpp +++ b/metrics/src/vespa/metrics/metricset.cpp @@ -54,6 +54,8 @@ MetricSet::MetricSet(const MetricSet& other, } } +MetricSet::~MetricSet() { } + const Metric* MetricSet::getMetricInternal(const String& name) const { diff --git a/metrics/src/vespa/metrics/metricset.h b/metrics/src/vespa/metrics/metricset.h index 444d7491e7c..47a29deda34 100644 --- a/metrics/src/vespa/metrics/metricset.h +++ b/metrics/src/vespa/metrics/metricset.h @@ -26,9 +26,6 @@ class MetricSet : public Metric // If so, the name of the metric is used as dimension value. public: - typedef std::unique_ptr UP; - typedef std::shared_ptr SP; - MetricSet(const String& name, const String& tags, const String& description, MetricSet* owner = 0, const std::string& dimensionKey = ""); @@ -38,7 +35,7 @@ public: MetricSet(const MetricSet&, std::vector& ownerList, CopyType, MetricSet* owner = 0, bool includeUnused = false); - virtual ~MetricSet() {} + ~MetricSet(); // If no path, this metric is not registered within another bool isTopSet() const { return _owner == 0; } @@ -55,9 +52,9 @@ public: void registerMetric(Metric& m); void unregisterMetric(Metric& m); - virtual Metric* clone(std::vector& ownerList, - CopyType type, MetricSet* owner, - bool includeUnused = false) const + virtual MetricSet* clone(std::vector& ownerList, + CopyType type, MetricSet* owner, + bool includeUnused = false) const { return new MetricSet(*this, ownerList, type, owner, includeUnused); } void reset(); diff --git a/metrics/src/vespa/metrics/metricsnapshot.cpp b/metrics/src/vespa/metrics/metricsnapshot.cpp index afb4aa305d4..fee30760f91 100644 --- a/metrics/src/vespa/metrics/metricsnapshot.cpp +++ b/metrics/src/vespa/metrics/metricsnapshot.cpp @@ -49,7 +49,7 @@ MetricSnapshot::recreateSnapshot(const MetricSet& metrics, bool copyUnset) std::vector newMetrics; Metric* m = metrics.clone(newMetrics, Metric::INACTIVE, 0, copyUnset); assert(m->isMetricSet()); - MetricSet::UP newSnapshot(static_cast(m)); + std::unique_ptr newSnapshot(static_cast(m)); newSnapshot->reset(); _snapshot->addToSnapshot(*newSnapshot, newMetrics); _snapshot = std::move(newSnapshot); diff --git a/metrics/src/vespa/metrics/metricsnapshot.h b/metrics/src/vespa/metrics/metricsnapshot.h index ba4cfe9df53..c10ec204a84 100644 --- a/metrics/src/vespa/metrics/metricsnapshot.h +++ b/metrics/src/vespa/metrics/metricsnapshot.h @@ -26,7 +26,7 @@ class MetricSnapshot // If set to 0, use _fromTime + _period. time_t _toTime; // Keeps the metrics set view of the snapshot - MetricSet::UP _snapshot; + std::unique_ptr _snapshot; // Snapshots must own their own metrics mutable std::vector _metrics; diff --git a/metrics/src/vespa/metrics/summetric.cpp b/metrics/src/vespa/metrics/summetric.cpp index a1658bf0781..bb75e9dc36c 100644 --- a/metrics/src/vespa/metrics/summetric.cpp +++ b/metrics/src/vespa/metrics/summetric.cpp @@ -11,6 +11,7 @@ template class SumMetric>; template class SumMetric>; template class SumMetric>; template class SumMetric>; +template class SumMetric; } // metrics diff --git a/metrics/src/vespa/metrics/summetric.h b/metrics/src/vespa/metrics/summetric.h index f40495a0334..cb213cc36c1 100644 --- a/metrics/src/vespa/metrics/summetric.h +++ b/metrics/src/vespa/metrics/summetric.h @@ -27,14 +27,14 @@ public: { private: std::vector _startValueChildren; - std::unique_ptr _startValue; + Metric::UP _startValue; public: typedef std::shared_ptr SP; StartValue(const AddendMetric &metric) : _startValueChildren(), _startValue(metric.clone(_startValueChildren, CLONE, 0, false)) {} - const AddendMetric &getStartValue() const { return *_startValue; } + const AddendMetric &getStartValue() const { return static_cast(*_startValue); } }; private: @@ -44,6 +44,7 @@ private: public: SumMetric(const String& name, const String& tags, const String& description, MetricSet* owner = 0); SumMetric(const SumMetric& other, std::vector& ownerList, MetricSet* owner = 0); + ~SumMetric(); virtual Metric* clone( std::vector&, CopyType, MetricSet* owner, bool includeUnused = false) const; diff --git a/metrics/src/vespa/metrics/summetric.hpp b/metrics/src/vespa/metrics/summetric.hpp index 59739779901..b881bb43f9a 100644 --- a/metrics/src/vespa/metrics/summetric.hpp +++ b/metrics/src/vespa/metrics/summetric.hpp @@ -92,6 +92,9 @@ SumMetric::SumMetric(const SumMetric& other, } } +template +SumMetric::~SumMetric() { } + template Metric* SumMetric::clone(std::vector& ownerList, diff --git a/metrics/src/vespa/metrics/valuemetric.h b/metrics/src/vespa/metrics/valuemetric.h index 81edca7ac16..48fa1005127 100644 --- a/metrics/src/vespa/metrics/valuemetric.h +++ b/metrics/src/vespa/metrics/valuemetric.h @@ -88,13 +88,15 @@ public: ValueMetric(const String& name, Tags dimensions, const String& description, MetricSet* owner = 0); + ~ValueMetric(); + virtual MetricValueClass::UP getValues() const { return MetricValueClass::UP(new Values(_values.getValues())); } void unsetOnZeroValue() { _values.setFlag(UNSET_ON_ZERO_VALUE); } void logOnlyIfSet() { _values.removeFlag(LOG_IF_UNSET); } - virtual ValueMetric* clone( + virtual ValueMetric * clone( std::vector&, CopyType type, MetricSet* owner, bool /*includeUnused*/) const { return new ValueMetric(*this, type, owner); } diff --git a/metrics/src/vespa/metrics/valuemetric.hpp b/metrics/src/vespa/metrics/valuemetric.hpp index 0a196ec420f..96a59e9f347 100644 --- a/metrics/src/vespa/metrics/valuemetric.hpp +++ b/metrics/src/vespa/metrics/valuemetric.hpp @@ -37,6 +37,9 @@ ValueMetric::ValueMetric( { } +template +ValueMetric::~ValueMetric() { } + template void ValueMetric::inc(AvgVal incVal) { -- cgit v1.2.3