diff options
author | Arne Juul <arnej@yahoo-inc.com> | 2018-10-04 11:08:42 +0000 |
---|---|---|
committer | Arne Juul <arnej@yahoo-inc.com> | 2018-10-07 17:29:35 +0000 |
commit | f958dcf8bc346e883eaccde054b1d0e84da85688 (patch) | |
tree | 654f48c379211899657bcd3d603ed064b0d1c105 /metrics | |
parent | a6b1087226906c77fe992e9ae9d3a4ddad3648eb (diff) |
use repo for metric name and mangled name
Diffstat (limited to 'metrics')
-rw-r--r-- | metrics/src/tests/metrictest.cpp | 12 | ||||
-rw-r--r-- | metrics/src/vespa/metrics/countmetric.hpp | 2 | ||||
-rw-r--r-- | metrics/src/vespa/metrics/metric.cpp | 33 | ||||
-rw-r--r-- | metrics/src/vespa/metrics/metric.h | 16 | ||||
-rw-r--r-- | metrics/src/vespa/metrics/metricset.cpp | 2 | ||||
-rw-r--r-- | metrics/src/vespa/metrics/valuemetric.hpp | 2 |
6 files changed, 36 insertions, 31 deletions
diff --git a/metrics/src/tests/metrictest.cpp b/metrics/src/tests/metrictest.cpp index 04f6b6e85b4..d9c39ef5cd2 100644 --- a/metrics/src/tests/metrictest.cpp +++ b/metrics/src/tests/metrictest.cpp @@ -41,7 +41,7 @@ void MetricTest::testMetricsGetDimensionsAsPartOfMangledNameImpl() { MetricImpl m("test", {{"foo", "bar"}}, "description goes here"); - CPPUNIT_ASSERT_EQUAL(std::string("test{foo:bar}"), m.getMangledName()); + CPPUNIT_ASSERT_EQUAL(vespalib::string("test{foo:bar}"), m.getMangledName()); } template <typename MetricImpl> @@ -51,7 +51,7 @@ MetricTest::testMangledNameMayContainMultipleDimensionsImpl() MetricImpl m("test", {{"flarn", "yarn"}, {"foo", "bar"}}, "description goes here"); - CPPUNIT_ASSERT_EQUAL(std::string("test{flarn:yarn,foo:bar}"), + CPPUNIT_ASSERT_EQUAL(vespalib::string("test{flarn:yarn,foo:bar}"), m.getMangledName()); } @@ -88,7 +88,7 @@ MetricTest::mangledNameListsDimensionsInLexicographicOrder() LongValueMetric m("test", {{"xyz", "bar"}, {"abc", "foo"}, {"def", "baz"}}, ""); - CPPUNIT_ASSERT_EQUAL(std::string("test{abc:foo,def:baz,xyz:bar}"), + CPPUNIT_ASSERT_EQUAL(vespalib::string("test{abc:foo,def:baz,xyz:bar}"), m.getMangledName()); } @@ -96,15 +96,15 @@ void MetricTest::manglingDoesNotChangeOriginalMetricName() { LongValueMetric m("test", {{"foo", "bar"}}, ""); - CPPUNIT_ASSERT_EQUAL(std::string("test"), m.getName()); + CPPUNIT_ASSERT_EQUAL(vespalib::string("test"), m.getName()); } void MetricTest::legacyTagsDoNotCreateMangledName() { LongValueMetric m("test", "foo bar", ""); - CPPUNIT_ASSERT_EQUAL(std::string("test"), m.getName()); - CPPUNIT_ASSERT_EQUAL(std::string("test"), m.getMangledName()); + CPPUNIT_ASSERT_EQUAL(vespalib::string("test"), m.getName()); + CPPUNIT_ASSERT_EQUAL(vespalib::string("test"), m.getMangledName()); } } // metrics diff --git a/metrics/src/vespa/metrics/countmetric.hpp b/metrics/src/vespa/metrics/countmetric.hpp index e150ce0d632..b46d45d690f 100644 --- a/metrics/src/vespa/metrics/countmetric.hpp +++ b/metrics/src/vespa/metrics/countmetric.hpp @@ -160,7 +160,7 @@ CountMetric<T, SumOnAdd>::print(std::ostream& out, bool verbose, (void) indent; Values values(_values.getValues()); if (values._value == 0 && !verbose) return; - out << this->_name << (SumOnAdd ? " count=" : " value=") << values._value; + out << this->getName() << (SumOnAdd ? " count=" : " value=") << values._value; if (SumOnAdd) { if (secondsPassed != 0) { double avgDiff = values._value / ((double) secondsPassed); diff --git a/metrics/src/vespa/metrics/metric.cpp b/metrics/src/vespa/metrics/metric.cpp index e67398e4626..30d063dac1f 100644 --- a/metrics/src/vespa/metrics/metric.cpp +++ b/metrics/src/vespa/metrics/metric.cpp @@ -64,7 +64,8 @@ Metric::Metric(const String& name, const String& tags, const String& description, MetricSet* owner) - : _name(name), + : _name(Repo::metricId(name)), + _mangledName(_name), _description(description), _tags(legacyTagStringToKeyedTags(tags)), _owner(nullptr) // Set later by registry @@ -78,7 +79,8 @@ Metric::Metric(const String& name, Tags dimensions, const String& description, MetricSet* owner) - : _name(name), + : _name(Repo::metricId(name)), + _mangledName(_name), _description(description), _tags(std::move(dimensions)), _owner(nullptr) @@ -92,6 +94,7 @@ Metric::Metric(const String& name, Metric::Metric(const Metric& other, MetricSet* owner) : Printable(other), _name(other._name), + _mangledName(other._mangledName), _description(other._description), _tags(other._tags), _owner(nullptr) @@ -120,7 +123,8 @@ Metric::assignMangledNameWithDimensions() return; } sortTagsInDeterministicOrder(); - _mangledName = createMangledNameWithDimensions(); + vespalib::string mangled = createMangledNameWithDimensions(); + _mangledName = Repo::metricId(mangled); } void @@ -131,11 +135,11 @@ Metric::sortTagsInDeterministicOrder() }); } -std::string +vespalib::string Metric::createMangledNameWithDimensions() const { vespalib::asciistream s; - s << _name << '{'; + s << getName() << '{'; const size_t sz = _tags.size(); for (size_t i = 0; i < sz; ++i) { const Tag& dimension(_tags[i]); @@ -154,13 +158,13 @@ Metric::createMangledNameWithDimensions() const void Metric::verifyConstructionParameters() { - if (_name.size() == 0) { + if (getName().size() == 0) { throw vespalib::IllegalArgumentException( "Metric cannot have empty name", VESPA_STRLOC); } - if (!_namePattern.match(_name)) { + if (!_namePattern.match(getName())) { throw vespalib::IllegalArgumentException( - "Illegal metric name '" + _name + "'. Names must match pattern " + "Illegal metric name '" + getName() + "'. Names must match pattern " + namePattern, VESPA_STRLOC); } } @@ -185,9 +189,9 @@ vespalib::string Metric::getPath() const { if (_owner == 0 || _owner->_owner == 0) { - return _name; + return getName(); } else { - return _owner->getPath() + "." + _name; + return _owner->getPath() + "." + getName(); } } @@ -195,10 +199,10 @@ std::vector<Metric::String> Metric::getPathVector() const { std::vector<String> result; - result.push_back(_name); + result.push_back(getName()); const MetricSet* owner(_owner); while (owner != 0) { - result.push_back(owner->_name); + result.push_back(owner->getName()); owner = owner->_owner; } std::reverse(result.begin(), result.end()); @@ -217,7 +221,7 @@ void Metric::addMemoryUsage(MemoryConsumption& mc) const { ++mc._metricCount; - mc._metricName += mc.getStringMemoryUsage(_name, mc._metricNameUnique); + mc._metricName += mc.getStringMemoryUsage(getName(), mc._metricNameUnique); mc._metricDescription += mc.getStringMemoryUsage( _description, mc._metricDescriptionUnique); mc._metricTagCount += _tags.size(); @@ -231,7 +235,6 @@ void Metric::updateNames(NameHash& hash) const { Metric& m(const_cast<Metric&>(*this)); - hash.updateName(m._name); hash.updateName(m._description); // Tags use vespalib::string which isn't refcounted under the hood and // use small string optimizations, meaning the implicit ref sharing hack @@ -242,7 +245,7 @@ void Metric::printDebug(std::ostream& out, const std::string& indent) const { (void) indent; - out << "name=" << _name << ", instance=" << ((const void*) this) + out << "name=" << getName() << ", instance=" << ((const void*) this) << ", owner=" << ((const void*) _owner); } diff --git a/metrics/src/vespa/metrics/metric.h b/metrics/src/vespa/metrics/metric.h index 91ad88fecf7..a272c54a10f 100644 --- a/metrics/src/vespa/metrics/metric.h +++ b/metrics/src/vespa/metrics/metric.h @@ -4,6 +4,7 @@ #include <vespa/vespalib/util/printable.h> #include <vespa/vespalib/stllike/string.h> #include <vespa/vespalib/util/regexp.h> +#include "repo.h" namespace metrics { @@ -120,13 +121,13 @@ public: Metric & operator = (Metric && rhs) = default; ~Metric(); - const String& getName() const { return _name; } + const vespalib::string& getName() const { return Repo::metricName(_name); } /** * Get mangled name iff the metric contains any dimensions, otherwise * the original metric name is returned. */ - const String& getMangledName() const { - return (_mangledName.empty() ? _name : _mangledName); + const vespalib::string& getMangledName() const { + return Repo::metricName(_mangledName); } vespalib::string getPath() const; std::vector<String> getPathVector() const; @@ -216,7 +217,8 @@ public: /** Used by sum metric to alter name of cloned metric for sum. */ void setName(const String& name) { - _name = name; + MetricNameId newName = Repo::metricId(name); + _name = newName; assignMangledNameWithDimensions(); } @@ -282,7 +284,7 @@ private: */ void sortTagsInDeterministicOrder(); - std::string createMangledNameWithDimensions() const; + vespalib::string createMangledNameWithDimensions() const; void verifyConstructionParameters(); /** @@ -292,8 +294,8 @@ private: void registerWithOwnerIfRequired(MetricSet* owner); protected: - String _name; - String _mangledName; + MetricNameId _name; + MetricNameId _mangledName; String _description; std::vector<Tag> _tags; MetricSet* _owner; diff --git a/metrics/src/vespa/metrics/metricset.cpp b/metrics/src/vespa/metrics/metricset.cpp index cfaeb8b6f02..216073b497d 100644 --- a/metrics/src/vespa/metrics/metricset.cpp +++ b/metrics/src/vespa/metrics/metricset.cpp @@ -321,7 +321,7 @@ void MetricSet::print(std::ostream& out, bool verbose, const std::string& indent, uint64_t secondsPassed) const { - out << _name << ":"; + out << getName() << ":"; for (const Metric* metric : _metricOrder) { out << "\n" << indent << " "; metric->print(out, verbose, indent + " ", secondsPassed); diff --git a/metrics/src/vespa/metrics/valuemetric.hpp b/metrics/src/vespa/metrics/valuemetric.hpp index 60ed219edec..8fe8769e9ad 100644 --- a/metrics/src/vespa/metrics/valuemetric.hpp +++ b/metrics/src/vespa/metrics/valuemetric.hpp @@ -213,7 +213,7 @@ ValueMetric<AvgVal, TotVal, SumOnAdd>::print( (void) secondsPassed; Values values(_values.getValues()); if (!inUse(values) && !verbose) return; - out << this->_name << " average=" << (values._count == 0 + out << this->getName() << " average=" << (values._count == 0 ? 0 : static_cast<double>(values._total) / values._count) << " last=" << values._last; if (!summedAverage()) { |