@@ -67,21 +67,6 @@ impl<T: Number<T>> ValueMap<T> {
67
67
// Use the 8 least significant bits directly, avoiding the modulus operation.
68
68
hasher. finish ( ) as u8 as usize
69
69
}
70
-
71
- // Calculate the total length of data points across all buckets.
72
- fn total_data_points_count ( & self ) -> usize {
73
- self . buckets
74
- . iter ( )
75
- . map ( |bucket_mutex| {
76
- bucket_mutex. lock ( )
77
- . map ( |locked_bucket| locked_bucket. as_ref ( ) . map_or ( 0 , |bucket| bucket. len ( ) ) )
78
- . unwrap_or_else ( |_| {
79
- global:: handle_error ( MetricsError :: Other ( "Failed to acquire lock on a bucket. Using default `0` as total data points." . into ( ) ) ) ;
80
- 0
81
- } )
82
- } )
83
- . sum :: < usize > ( )
84
- }
85
70
}
86
71
87
72
impl < T : Number < T > > ValueMap < T > {
@@ -178,7 +163,7 @@ impl<T: Number<T>> Sum<T> {
178
163
s_data. is_monotonic = self . monotonic ;
179
164
s_data. data_points . clear ( ) ;
180
165
181
- let total_len: usize = self . value_map . total_data_points_count ( ) + 1 ;
166
+ let total_len: usize = self . value_map . total_unique_entries . load ( Ordering :: Relaxed ) + 1 ;
182
167
if total_len > s_data. data_points . capacity ( ) {
183
168
let additional_space_needed = total_len - s_data. data_points . capacity ( ) ;
184
169
s_data. data_points . reserve_exact ( additional_space_needed) ;
@@ -264,7 +249,7 @@ impl<T: Number<T>> Sum<T> {
264
249
s_data. is_monotonic = self . monotonic ;
265
250
s_data. data_points . clear ( ) ;
266
251
267
- let total_len: usize = self . value_map . total_data_points_count ( ) + 1 ;
252
+ let total_len: usize = self . value_map . total_unique_entries . load ( Ordering :: Relaxed ) + 1 ;
268
253
if total_len > s_data. data_points . capacity ( ) {
269
254
let additional_space_needed = total_len - s_data. data_points . capacity ( ) ;
270
255
s_data. data_points . reserve_exact ( additional_space_needed) ;
@@ -368,7 +353,7 @@ impl<T: Number<T>> PrecomputedSum<T> {
368
353
s_data. temporality = Temporality :: Delta ;
369
354
s_data. is_monotonic = self . monotonic ;
370
355
371
- let total_len: usize = self . value_map . total_data_points_count ( ) + 1 ;
356
+ let total_len: usize = self . value_map . total_unique_entries . load ( Ordering :: Relaxed ) + 1 ;
372
357
if total_len > s_data. data_points . capacity ( ) {
373
358
let additional_space_needed = total_len - s_data. data_points . capacity ( ) ;
374
359
s_data. data_points . reserve_exact ( additional_space_needed) ;
@@ -465,7 +450,7 @@ impl<T: Number<T>> PrecomputedSum<T> {
465
450
s_data. temporality = Temporality :: Cumulative ;
466
451
s_data. is_monotonic = self . monotonic ;
467
452
468
- let total_len: usize = self . value_map . total_data_points_count ( ) + 1 ;
453
+ let total_len: usize = self . value_map . total_unique_entries . load ( Ordering :: Relaxed ) + 1 ;
469
454
if total_len > s_data. data_points . capacity ( ) {
470
455
let additional_space_needed = total_len - s_data. data_points . capacity ( ) ;
471
456
s_data. data_points . reserve_exact ( additional_space_needed) ;
0 commit comments