Skip to content

Commit 2234f82

Browse files
authored
Merge branch 'main' into sync-instrument-internal-log
2 parents 41a11f6 + a18853e commit 2234f82

File tree

2 files changed

+26
-10
lines changed

2 files changed

+26
-10
lines changed

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

Lines changed: 13 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use std::{collections::HashMap, f64::consts::LOG2_E, sync::Mutex, time::SystemTime};
22

33
use once_cell::sync::Lazy;
4-
use opentelemetry::{metrics::MetricsError, KeyValue};
4+
use opentelemetry::{otel_debug, KeyValue};
55

66
use crate::{
77
metrics::data::{self, Aggregation, Temporality},
@@ -100,9 +100,18 @@ impl<T: Number> ExpoHistogramDataPoint<T> {
100100
if (self.scale - scale_delta as i8) < EXPO_MIN_SCALE {
101101
// With a scale of -10 there is only two buckets for the whole range of f64 values.
102102
// This can only happen if there is a max size of 1.
103-
opentelemetry::global::handle_error(MetricsError::Other(
104-
"exponential histogram scale underflow".into(),
105-
));
103+
104+
// TODO - to check if this should be logged as an error if this is auto-recoverable.
105+
otel_debug!(
106+
name: "ExponentialHistogramDataPoint.Scale.Underflow",
107+
current_scale = self.scale,
108+
scale_delta = scale_delta,
109+
max_size = self.max_size,
110+
min_scale = EXPO_MIN_SCALE,
111+
value = format!("{:?}", v),
112+
message = "The measurement will be dropped due to scale underflow. Check the histogram configuration"
113+
);
114+
106115
return;
107116
}
108117
// Downscale

opentelemetry-sdk/src/metrics/meter_provider.rs

Lines changed: 13 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,9 +8,8 @@ use std::{
88
};
99

1010
use opentelemetry::{
11-
global,
1211
metrics::{Meter, MeterProvider, MetricsError, Result},
13-
KeyValue,
12+
otel_debug, otel_error, KeyValue,
1413
};
1514

1615
use crate::{instrumentation::Scope, Resource};
@@ -137,13 +136,21 @@ impl Drop for SdkMeterProviderInner {
137136
fn drop(&mut self) {
138137
// If user has already shutdown the provider manually by calling
139138
// shutdown(), then we don't need to call shutdown again.
140-
if !self.is_shutdown.load(Ordering::Relaxed) {
141-
if let Err(err) = self.shutdown() {
142-
global::handle_error(err);
143-
}
139+
if self.is_shutdown.load(Ordering::Relaxed) {
140+
otel_debug!(
141+
name: "MeterProvider.AlreadyShutdown",
142+
message = "Meter provider was already shut down; drop will not attempt shutdown again."
143+
);
144+
} else if let Err(err) = self.shutdown() {
145+
otel_error!(
146+
name: "MeterProvider.ShutdownFailed",
147+
message = "Shutdown attempt failed during drop of MeterProvider.",
148+
reason = format!("{}", err)
149+
);
144150
}
145151
}
146152
}
153+
147154
impl MeterProvider for SdkMeterProvider {
148155
fn versioned_meter(
149156
&self,

0 commit comments

Comments
 (0)