99
1010#include " opentelemetry/nostd/shared_ptr.h"
1111#include " opentelemetry/sdk/common/attributemap_hash.h"
12+ #include " opentelemetry/sdk/metrics/aggregation/aggregation_config.h"
1213#include " opentelemetry/sdk/metrics/aggregation/default_aggregation.h"
1314
1415#ifdef ENABLE_METRICS_EXEMPLAR_PREVIEW
@@ -42,13 +43,11 @@ class AsyncMetricStorage : public MetricStorage, public AsyncWritableMetricStora
4243 const AggregationConfig *aggregation_config)
4344 : instrument_descriptor_(instrument_descriptor),
4445 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_)),
5251#ifdef ENABLE_METRICS_EXEMPLAR_PREVIEW
5352 exemplar_filter_type_ (exempler_filter_type),
5453 exemplar_reservoir_(exemplar_reservoir),
@@ -129,9 +128,8 @@ class AsyncMetricStorage : public MetricStorage, public AsyncWritableMetricStora
129128 {
130129 std::lock_guard<opentelemetry::common::SpinLockMutex> guard (hashmap_lock_);
131130 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_ );
135133 }
136134
137135 auto status =
@@ -141,6 +139,7 @@ class AsyncMetricStorage : public MetricStorage, public AsyncWritableMetricStora
141139 }
142140
143141private:
142+ static inline const AggregationConfig default_aggregation_config_{};
144143 InstrumentDescriptor instrument_descriptor_;
145144 AggregationType aggregation_type_;
146145 const AggregationConfig *aggregation_config_;
0 commit comments