Skip to content

Commit 56e88c1

Browse files
committed
Allow metrics to be registered twice
1 parent c6a0567 commit 56e88c1

File tree

3 files changed

+19
-18
lines changed

3 files changed

+19
-18
lines changed

cpp/arcticdb/entity/metrics.cpp

+14-15
Original file line numberDiff line numberDiff line change
@@ -30,8 +30,8 @@ namespace arcticdb {
3030
arcticdb::log::version().debug("PrometheusInstance created");
3131
}
3232

33-
void PrometheusInstance::configure(const MetricsConfig& config, const bool reconfigure) {
34-
if (configured_ && !reconfigure) {
33+
void PrometheusInstance::configure(const MetricsConfig& config) {
34+
if (configured_) {
3535
arcticdb::log::version().warn("Prometheus already configured; Existing setting will be used");
3636
if (config.host != cfg_.host) {
3737
arcticdb::log::version().warn("New Prometheus host is different from the existing: {} vs {}", config.host, cfg_.host);
@@ -108,35 +108,34 @@ namespace arcticdb {
108108
}
109109

110110
std::scoped_lock lock{metrics_mutex_};
111-
bool inserted{false};
112111
if (type == prometheus::MetricType::Counter) {
113-
inserted = map_counter_.insert({name, &prometheus::BuildCounter()
112+
map_counter_[name] = &prometheus::BuildCounter()
114113
.Name(name)
115114
.Help(help)
116115
.Labels(labels)
117-
.Register(*registry_)}).second;
116+
.Register(*registry_);
118117
} else if (type == prometheus::MetricType::Gauge) {
119-
inserted = map_gauge_.insert({name, &prometheus::BuildGauge()
118+
map_gauge_[name] = &prometheus::BuildGauge()
120119
.Name(name)
121120
.Help(help)
122121
.Labels(labels)
123-
.Register(*registry_)}).second;
122+
.Register(*registry_);
124123
} else if (type == prometheus::MetricType::Histogram) {
125-
inserted = map_histogram_.insert({name, HistogramInfo{&prometheus::BuildHistogram()
126-
.Name(name)
127-
.Help(help)
128-
.Labels(labels)
129-
.Register(*registry_), buckets_list}}).second;
124+
prometheus::Family<prometheus::Histogram>* histogram = &prometheus::BuildHistogram()
125+
.Name(name)
126+
.Help(help)
127+
.Labels(labels)
128+
.Register(*registry_);
129+
map_histogram_[name] = HistogramInfo(histogram, buckets_list);
130130
} else if (type == prometheus::MetricType::Summary) {
131-
inserted = map_summary_.insert({name, &prometheus::BuildSummary()
131+
map_summary_[name] = &prometheus::BuildSummary()
132132
.Name(name)
133133
.Help(help)
134134
.Labels(labels)
135-
.Register(*registry_)}).second;
135+
.Register(*registry_);
136136
} else {
137137
util::raise_rte("Unsupported metric type");
138138
}
139-
util::check(inserted, "Expected to register metric {} but was already present", name);
140139
}
141140

142141
void PrometheusInstance::incrementCounter(const std::string& name, double value, const Labels& labels) {

cpp/arcticdb/entity/metrics.hpp

+4-2
Original file line numberDiff line numberDiff line change
@@ -150,7 +150,7 @@ class PrometheusInstance {
150150

151151
int push();
152152

153-
void configure(const MetricsConfig& config, const bool reconfigure = false);
153+
void configure(const MetricsConfig& config);
154154

155155
// Intended for testing.
156156
std::vector<prometheus::MetricFamily> get_metrics();
@@ -160,13 +160,15 @@ class PrometheusInstance {
160160
private:
161161

162162
struct HistogramInfo {
163+
HistogramInfo() = default;
164+
163165
HistogramInfo(prometheus::Family<prometheus::Histogram>* histogram,
164166
prometheus::Histogram::BucketBoundaries buckets_list) : histogram_(histogram),
165167
buckets_list_(std::move(buckets_list)) {
166168

167169
}
168170

169-
prometheus::Family<prometheus::Histogram>* histogram_;
171+
prometheus::Family<prometheus::Histogram>* histogram_ = nullptr;
170172
prometheus::Histogram::BucketBoundaries buckets_list_;
171173
};
172174

cpp/arcticdb/entity/test/test_metrics.cpp

+1-1
Original file line numberDiff line numberDiff line change
@@ -44,7 +44,7 @@ TEST(Metrics, RegisterTwice) {
4444
PrometheusInstance instance{};
4545
instance.configure(MetricsConfig{"host", "port", "job", "instance", "local", MetricsConfig::Model::PUSH});
4646
instance.registerMetric(prometheus::MetricType::Counter, "name", "help");
47-
ASSERT_THROW(instance.registerMetric(prometheus::MetricType::Counter, "name", "help"), ArcticException);
47+
instance.registerMetric(prometheus::MetricType::Counter, "name", "help");
4848
}
4949

5050
TEST(Metrics, IncrementCounterSpecific) {

0 commit comments

Comments
 (0)