9
9
10
10
#include " opentelemetry/nostd/shared_ptr.h"
11
11
#include " opentelemetry/sdk/common/attributemap_hash.h"
12
+ #include " opentelemetry/sdk/metrics/aggregation/aggregation_config.h"
12
13
#include " opentelemetry/sdk/metrics/aggregation/default_aggregation.h"
13
14
14
15
#ifdef ENABLE_METRICS_EXEMPLAR_PREVIEW
@@ -42,13 +43,11 @@ class AsyncMetricStorage : public MetricStorage, public AsyncWritableMetricStora
42
43
const AggregationConfig *aggregation_config)
43
44
: instrument_descriptor_(instrument_descriptor),
44
45
aggregation_type_{aggregation_type},
45
- aggregation_config_{aggregation_config},
46
- cumulative_hash_map_ (new AttributesHashMap(aggregation_config
47
- ? aggregation_config->cardinality_limit_
48
- : kAggregationCardinalityLimit )),
49
- delta_hash_map_ (new AttributesHashMap(aggregation_config
50
- ? aggregation_config->cardinality_limit_
51
- : kAggregationCardinalityLimit )),
46
+ aggregation_config_{aggregation_config ? aggregation_config : &default_aggregation_config_},
47
+ cumulative_hash_map_ (
48
+ std::make_unique<AttributesHashMap>(aggregation_config_->cardinality_limit_)),
49
+ delta_hash_map_ (
50
+ std::make_unique<AttributesHashMap>(aggregation_config_->cardinality_limit_)),
52
51
#ifdef ENABLE_METRICS_EXEMPLAR_PREVIEW
53
52
exemplar_filter_type_ (exempler_filter_type),
54
53
exemplar_reservoir_(exemplar_reservoir),
@@ -129,9 +128,8 @@ class AsyncMetricStorage : public MetricStorage, public AsyncWritableMetricStora
129
128
{
130
129
std::lock_guard<opentelemetry::common::SpinLockMutex> guard (hashmap_lock_);
131
130
delta_metrics = std::move (delta_hash_map_);
132
- delta_hash_map_.reset (new AttributesHashMap (aggregation_config_
133
- ? aggregation_config_->cardinality_limit_
134
- : kAggregationCardinalityLimit ));
131
+ delta_hash_map_ =
132
+ std::make_unique<AttributesHashMap>(aggregation_config_->cardinality_limit_ );
135
133
}
136
134
137
135
auto status =
@@ -141,6 +139,7 @@ class AsyncMetricStorage : public MetricStorage, public AsyncWritableMetricStora
141
139
}
142
140
143
141
private:
142
+ static inline const AggregationConfig default_aggregation_config_{};
144
143
InstrumentDescriptor instrument_descriptor_;
145
144
AggregationType aggregation_type_;
146
145
const AggregationConfig *aggregation_config_;
0 commit comments