aboutsummaryrefslogtreecommitdiffstats
path: root/metrics
diff options
context:
space:
mode:
authorHenning Baldersheim <balder@yahoo-inc.com>2016-11-20 23:47:33 +0000
committerHenning Baldersheim <balder@yahoo-inc.com>2016-11-20 23:47:33 +0000
commit0921416b19923a6a162924dd6097f402361b950c (patch)
treeed961564b6f215814a087b2c41a998c125490e0c /metrics
parentc4fe73e39d094ebdd83bc30039350c11226f560f (diff)
Hide most of the costly metrics in header files stuff
Diffstat (limited to 'metrics')
-rw-r--r--metrics/src/tests/loadmetrictest.cpp6
-rw-r--r--metrics/src/tests/metricmanagertest.cpp1
-rw-r--r--metrics/src/tests/snapshottest.cpp4
-rw-r--r--metrics/src/tests/stresstest.cpp7
-rw-r--r--metrics/src/tests/summetrictest.cpp1
-rw-r--r--metrics/src/vespa/metrics/countmetric.h5
-rw-r--r--metrics/src/vespa/metrics/countmetric.hpp3
-rw-r--r--metrics/src/vespa/metrics/loadmetric.h3
-rw-r--r--metrics/src/vespa/metrics/loadmetric.hpp5
-rw-r--r--metrics/src/vespa/metrics/metric.cpp2
-rw-r--r--metrics/src/vespa/metrics/metric.h2
-rw-r--r--metrics/src/vespa/metrics/metricmanager.cpp3
-rw-r--r--metrics/src/vespa/metrics/metricmanager.h2
-rw-r--r--metrics/src/vespa/metrics/metricset.cpp2
-rw-r--r--metrics/src/vespa/metrics/metricset.h11
-rw-r--r--metrics/src/vespa/metrics/metricsnapshot.cpp2
-rw-r--r--metrics/src/vespa/metrics/metricsnapshot.h2
-rw-r--r--metrics/src/vespa/metrics/summetric.cpp1
-rw-r--r--metrics/src/vespa/metrics/summetric.h5
-rw-r--r--metrics/src/vespa/metrics/summetric.hpp3
-rw-r--r--metrics/src/vespa/metrics/valuemetric.h4
-rw-r--r--metrics/src/vespa/metrics/valuemetric.hpp3
22 files changed, 49 insertions, 28 deletions
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<Metric::LP>& ownerList,
+ MetricSet* clone(std::vector<Metric::LP>& 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 <vespa/fastos/fastos.h>
#include <vespa/log/log.h>
#include <vespa/metrics/metrics.h>
-#include <vespa/metrics/summetric.hpp>
#include <vespa/metrics/xmlwriter.h>
#include <vespa/metrics/jsonwriter.h>
#include <vespa/metrics/textwriter.h>
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<Metric::LP>& ownerList,
+ virtual MetricSet* clone(std::vector<Metric::LP>& 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<Metric::LP>& ownerList,
+ virtual MetricSet* clone(std::vector<Metric::LP>& 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<Metric::LP>& ownerList, CopyType copyType,
+ MetricSet* clone(std::vector<Metric::LP>& 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 <vespa/fastos/fastos.h>
#include <vespa/metrics/metrics.h>
-#include <vespa/metrics/summetric.hpp>
#include <vespa/vdstestlib/cppunit/macros.h>
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<T, SumOnAdd>& other,
- CopyType, MetricSet* owner);
+ CountMetric(const CountMetric<T, SumOnAdd>& 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
@@ -34,6 +34,9 @@ CountMetric<T, SumOnAdd>::CountMetric(const CountMetric<T, SumOnAdd>& other,
}
template <typename T, bool SumOnAdd>
+CountMetric<T, SumOnAdd>::~CountMetric() { }
+
+template <typename T, bool SumOnAdd>
CountMetric<T, SumOnAdd>&
CountMetric<T, SumOnAdd>::operator+=(const CountMetric<T, SumOnAdd>& 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<MetricType>& other, MetricSet* owner);
- Metric* clone(std::vector<Metric::LP>& ownerList,
+ ~LoadMetric();
+ MetricSet* clone(std::vector<Metric::LP>& 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<MetricType>::LoadMetric(const LoadMetric<MetricType>& other, MetricSe
}
template<typename MetricType>
-Metric*
+LoadMetric<MetricType>::~LoadMetric() { }
+
+template<typename MetricType>
+MetricSet*
LoadMetric<MetricType>::clone(std::vector<Metric::LP>& 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<uint32_t, std::string> SnapSpec;
static std::vector<SnapSpec> 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<MetricSet> UP;
- typedef std::shared_ptr<MetricSet> 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<Metric::LP>& 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<Metric::LP>& ownerList,
- CopyType type, MetricSet* owner,
- bool includeUnused = false) const
+ virtual MetricSet* clone(std::vector<Metric::LP>& 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<Metric::LP> newMetrics;
Metric* m = metrics.clone(newMetrics, Metric::INACTIVE, 0, copyUnset);
assert(m->isMetricSet());
- MetricSet::UP newSnapshot(static_cast<MetricSet*>(m));
+ std::unique_ptr<MetricSet> newSnapshot(static_cast<MetricSet*>(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<MetricSet> _snapshot;
// Snapshots must own their own metrics
mutable std::vector<Metric::LP> _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<ValueMetric<int64_t, int64_t, true>>;
template class SumMetric<ValueMetric<double, double, false>>;
template class SumMetric<ValueMetric<double, double, true>>;
template class SumMetric<CountMetric<uint64_t, true>>;
+template class SumMetric<MetricSet>;
} // 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<Metric::LP> _startValueChildren;
- std::unique_ptr<AddendMetric> _startValue;
+ Metric::UP _startValue;
public:
typedef std::shared_ptr<StartValue> 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<const AddendMetric &>(*_startValue); }
};
private:
@@ -44,6 +44,7 @@ private:
public:
SumMetric(const String& name, const String& tags, const String& description, MetricSet* owner = 0);
SumMetric(const SumMetric<AddendMetric>& other, std::vector<Metric::LP>& ownerList, MetricSet* owner = 0);
+ ~SumMetric();
virtual Metric* clone( std::vector<Metric::LP>&, 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
@@ -93,6 +93,9 @@ SumMetric<AddendMetric>::SumMetric(const SumMetric<AddendMetric>& other,
}
template<typename AddendMetric>
+SumMetric<AddendMetric>::~SumMetric() { }
+
+template<typename AddendMetric>
Metric*
SumMetric<AddendMetric>::clone(std::vector<Metric::LP>& ownerList,
CopyType copyType, MetricSet* owner,
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<AvgVal, TotVal, SumOnAdd>* clone(
+ virtual ValueMetric * clone(
std::vector<Metric::LP>&, CopyType type, MetricSet* owner,
bool /*includeUnused*/) const
{ return new ValueMetric<AvgVal,TotVal,SumOnAdd>(*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
@@ -38,6 +38,9 @@ ValueMetric<AvgVal, TotVal, SumOnAdd>::ValueMetric(
}
template<typename AvgVal, typename TotVal, bool SumOnAdd>
+ValueMetric<AvgVal, TotVal, SumOnAdd>::~ValueMetric() { }
+
+template<typename AvgVal, typename TotVal, bool SumOnAdd>
void ValueMetric<AvgVal, TotVal, SumOnAdd>::inc(AvgVal incVal)
{
if (!checkFinite(incVal, std::is_floating_point<AvgVal>())) {