Skip to content

Commit 16d927b

Browse files
authored
Update Histogram min max computation (#2029)
1 parent 0097d16 commit 16d927b

File tree

2 files changed

+8
-7
lines changed

2 files changed

+8
-7
lines changed

opentelemetry-sdk/src/metrics/internal/histogram.rs

+5-4
Original file line numberDiff line numberDiff line change
@@ -24,6 +24,8 @@ impl<T: Number<T>> Buckets<T> {
2424
fn new(n: usize) -> Buckets<T> {
2525
Buckets {
2626
counts: vec![0; n],
27+
min: T::max(),
28+
max: T::min(),
2729
..Default::default()
2830
}
2931
}
@@ -37,7 +39,8 @@ impl<T: Number<T>> Buckets<T> {
3739
self.count += 1;
3840
if value < self.min {
3941
self.min = value;
40-
} else if value > self.max {
42+
}
43+
if value > self.max {
4144
self.max = value
4245
}
4346
}
@@ -98,9 +101,7 @@ impl<T: Number<T>> Histogram<T> {
98101
// Then,
99102
//
100103
// buckets = (-∞, 0], (0, 5.0], (5.0, 10.0], (10.0, +∞)
101-
let mut b = Buckets::new(self.bounds.len() + 1);
102-
// Ensure min and max are recorded values (not zero), for new buckets.
103-
(b.min, b.max) = (measurement, measurement);
104+
let b = Buckets::new(self.bounds.len() + 1);
104105

105106
if is_under_cardinality_limit(size) {
106107
values.entry(attrs).or_insert(b)

opentelemetry-sdk/src/metrics/internal/mod.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ mod histogram;
44
mod last_value;
55
mod sum;
66

7-
use core::fmt;
7+
use core::{f64, fmt};
88
use std::collections::HashMap;
99
use std::marker::PhantomData;
1010
use std::ops::{Add, AddAssign, Sub};
@@ -202,11 +202,11 @@ impl Number<u64> for u64 {
202202
}
203203
impl Number<f64> for f64 {
204204
fn min() -> Self {
205-
f64::MIN
205+
f64::NEG_INFINITY
206206
}
207207

208208
fn max() -> Self {
209-
f64::MAX
209+
f64::INFINITY
210210
}
211211

212212
fn into_float(self) -> f64 {

0 commit comments

Comments
 (0)