summaryrefslogtreecommitdiffstats
path: root/staging_vespalib
diff options
context:
space:
mode:
authorArne Juul <arnej@yahoo-inc.com>2018-10-03 13:19:31 +0000
committerArne Juul <arnej@yahoo-inc.com>2018-10-03 13:19:31 +0000
commit710d4aa836405fab9155004ce4c3d336ff067a16 (patch)
tree131c194c7c8b428551b7348fb6c70b6a4060585d /staging_vespalib
parentb6cd868da06258ccc0a0fcde48373494932e0ce9 (diff)
use NameRepo instance
Diffstat (limited to 'staging_vespalib')
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/simple_metrics_manager.cpp61
-rw-r--r--staging_vespalib/src/vespa/vespalib/metrics/simple_metrics_manager.h15
2 files changed, 39 insertions, 37 deletions
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/simple_metrics_manager.cpp b/staging_vespalib/src/vespa/vespalib/metrics/simple_metrics_manager.cpp
index 049be4fd328..4df44755c0b 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/simple_metrics_manager.cpp
+++ b/staging_vespalib/src/vespa/vespalib/metrics/simple_metrics_manager.cpp
@@ -12,11 +12,7 @@ using Guard = std::lock_guard<std::mutex>;
SimpleMetricsManager::SimpleMetricsManager(const SimpleManagerConfig &config,
Tick::UP tick_supplier)
- : _metricNames(),
- _dimensionNames(),
- _labelValues(),
- _pointMaps(),
- _currentSamples(),
+ : _currentSamples(),
_tickSupplier(std::move(tick_supplier)),
_startTime(_tickSupplier->first()),
_curTime(_startTime),
@@ -55,19 +51,19 @@ SimpleMetricsManager::createForTest(const SimpleManagerConfig &config,
Counter
SimpleMetricsManager::counter(const vespalib::string &name, const vespalib::string &)
{
- size_t id = _metricNames.resolve(name);
- _metricTypes.check(id, name, MetricTypes::MetricType::COUNTER);
- LOG(debug, "counter with metric name %s -> %zu", name.c_str(), id);
- return Counter(shared_from_this(), MetricName(id));
+ MetricName mn = NameRepo::instance.metric(name);
+ _metricTypes.check(mn.id(), name, MetricTypes::MetricType::COUNTER);
+ LOG(debug, "counter with metric name %s -> %zu", name.c_str(), mn.id());
+ return Counter(shared_from_this(), mn);
}
Gauge
SimpleMetricsManager::gauge(const vespalib::string &name, const vespalib::string &)
{
- size_t id = _metricNames.resolve(name);
- _metricTypes.check(id, name, MetricTypes::MetricType::GAUGE);
- LOG(debug, "gauge with metric name %s -> %zu", name.c_str(), id);
- return Gauge(shared_from_this(), MetricName(id));
+ MetricName mn = NameRepo::instance.metric(name);
+ _metricTypes.check(mn.id(), name, MetricTypes::MetricType::GAUGE);
+ LOG(debug, "gauge with metric name %s -> %zu", name.c_str(), mn.id());
+ return Gauge(shared_from_this(), mn);
}
Bucket
@@ -102,10 +98,18 @@ SimpleMetricsManager::snapshotFrom(const Bucket &bucket)
double s = bucket.startTime.count();
double e = bucket.endTime.count();
+
+ size_t max_point_id = 0;
+ for (const CounterAggregator& entry : bucket.counters) {
+ max_point_id = std::max(max_point_id, entry.idx.point().id());
+ }
+ for (const GaugeAggregator& entry : bucket.gauges) {
+ max_point_id = std::max(max_point_id, entry.idx.point().id());
+ }
Snapshot snap(s, e);
{
- for (size_t i = 0; i < _pointMaps.size(); ++i) {
- const PointMap::BackingMap &map = _pointMaps.lookup(i).backingMap();
+ for (size_t point_id = 0; point_id <= max_point_id; ++point_id) {
+ const PointMap::BackingMap &map = NameRepo::instance.pointMap(Point(point_id));
PointSnapshot point;
for (const PointMap::BackingMap::value_type &kv : map) {
point.dimensions.emplace_back(nameFor(kv.first), valueFor(kv.second));
@@ -114,16 +118,16 @@ SimpleMetricsManager::snapshotFrom(const Bucket &bucket)
}
}
for (const CounterAggregator& entry : bucket.counters) {
- size_t ni = entry.idx.name().id();
+ MetricName mn = entry.idx.name();
size_t pi = entry.idx.point().id();
- const vespalib::string &name = _metricNames.lookup(ni);
+ const vespalib::string &name = NameRepo::instance.metricName(mn);
CounterSnapshot val(name, snap.points()[pi], entry);
snap.add(val);
}
for (const GaugeAggregator& entry : bucket.gauges) {
- size_t ni = entry.idx.name().id();
+ MetricName mn = entry.idx.name();
size_t pi = entry.idx.point().id();
- const vespalib::string &name = _metricNames.lookup(ni);
+ const vespalib::string &name = NameRepo::instance.metricName(mn);
GaugeSnapshot val(name, snap.points()[pi], entry);
snap.add(val);
}
@@ -166,31 +170,30 @@ SimpleMetricsManager::collectCurrentSamples(TimeStamp prev,
Dimension
SimpleMetricsManager::dimension(const vespalib::string &name)
{
- size_t id = _dimensionNames.resolve(name);
- LOG(debug, "dimension name %s -> %zu", name.c_str(), id);
- return Dimension(id);
+ Dimension dim = NameRepo::instance.dimension(name);
+ LOG(debug, "dimension name %s -> %zu", name.c_str(), dim.id());
+ return dim;
}
Label
SimpleMetricsManager::label(const vespalib::string &value)
{
- size_t id = _labelValues.resolve(value);
- LOG(debug, "label value %s -> %zu", value.c_str(), id);
- return Label(id);
+ Label l = NameRepo::instance.label(value);
+ LOG(debug, "label value %s -> %zu", value.c_str(), l.id());
+ return l;
}
PointBuilder
SimpleMetricsManager::pointBuilder(Point from)
{
- const PointMap &map = _pointMaps.lookup(from.id());
- return PointBuilder(shared_from_this(), map.backingMap());
+ const PointMap::BackingMap &map = NameRepo::instance.pointMap(from);
+ return PointBuilder(shared_from_this(), map);
}
Point
SimpleMetricsManager::pointFrom(PointMap::BackingMap map)
{
- size_t id = _pointMaps.resolve(PointMap(std::move(map)));
- return Point(id);
+ return NameRepo::instance.pointFrom(std::move(map));
}
diff --git a/staging_vespalib/src/vespa/vespalib/metrics/simple_metrics_manager.h b/staging_vespalib/src/vespa/vespalib/metrics/simple_metrics_manager.h
index 01725bb1739..4d4b6eb87db 100644
--- a/staging_vespalib/src/vespa/vespalib/metrics/simple_metrics_manager.h
+++ b/staging_vespalib/src/vespa/vespalib/metrics/simple_metrics_manager.h
@@ -6,13 +6,12 @@
#include <memory>
#include <thread>
#include <vespa/vespalib/stllike/string.h>
-#include "name_collection.h"
+#include "name_repo.h"
#include "current_samples.h"
#include "snapshots.h"
#include "metrics_manager.h"
#include "metric_types.h"
#include "clock.h"
-#include "point_map_collection.h"
#include "bucket.h"
namespace vespalib {
@@ -35,14 +34,14 @@ struct SimpleManagerConfig {
class SimpleMetricsManager : public MetricsManager
{
private:
- NameCollection _metricNames;
MetricTypes _metricTypes;
- NameCollection _dimensionNames;
- NameCollection _labelValues;
- PointMapCollection _pointMaps;
- const vespalib::string& nameFor(Dimension dimension) { return _dimensionNames.lookup(dimension.id()); }
- const vespalib::string& valueFor(Label label) { return _labelValues.lookup(label.id()); }
+ const vespalib::string& nameFor(Dimension dimension) {
+ return NameRepo::instance.dimensionName(dimension);
+ }
+ const vespalib::string& valueFor(Label label) {
+ return NameRepo::instance.labelValue(label);
+ }
CurrentSamples _currentSamples;