Skip to content

Commit 45b4f82

Browse files
authored
Global error handler cleanup - Counter and Observable counter creation (#2234)
1 parent 80dc298 commit 45b4f82

File tree

1 file changed

+35
-6
lines changed

1 file changed

+35
-6
lines changed

opentelemetry-sdk/src/metrics/meter.rs

Lines changed: 35 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -8,6 +8,7 @@ use opentelemetry::{
88
InstrumentProvider, MetricsError, ObservableCounter, ObservableGauge,
99
ObservableUpDownCounter, Result, UpDownCounter,
1010
},
11+
otel_error,
1112
};
1213

1314
use crate::instrumentation::Scope;
@@ -75,14 +76,20 @@ impl SdkMeter {
7576
{
7677
let validation_result = validate_instrument_config(builder.name.as_ref(), &builder.unit);
7778
if let Err(err) = validation_result {
78-
global::handle_error(err);
79+
otel_error!(
80+
name: "InstrumentCreationFailed",
81+
meter_name = self.scope.name.as_ref(),
82+
instrument_name = builder.name.as_ref(),
83+
message = "Measurements from this counter will be ignored.",
84+
reason = format!("{}", err)
85+
);
7986
return Counter::new(Arc::new(NoopSyncInstrument::new()));
8087
}
8188

8289
match resolver
8390
.lookup(
8491
InstrumentKind::Counter,
85-
builder.name,
92+
builder.name.clone(),
8693
builder.description,
8794
builder.unit,
8895
None,
@@ -91,7 +98,13 @@ impl SdkMeter {
9198
{
9299
Ok(counter) => counter,
93100
Err(err) => {
94-
global::handle_error(err);
101+
otel_error!(
102+
name: "InstrumentCreationFailed",
103+
meter_name = self.scope.name.as_ref(),
104+
instrument_name = builder.name.as_ref(),
105+
message = "Measurements from this counter will be ignored.",
106+
reason = format!("{}", err)
107+
);
95108
Counter::new(Arc::new(NoopSyncInstrument::new()))
96109
}
97110
}
@@ -107,19 +120,30 @@ impl SdkMeter {
107120
{
108121
let validation_result = validate_instrument_config(builder.name.as_ref(), &builder.unit);
109122
if let Err(err) = validation_result {
110-
global::handle_error(err);
123+
otel_error!(
124+
name: "InstrumentCreationFailed",
125+
meter_name = self.scope.name.as_ref(),
126+
instrument_name = builder.name.as_ref(),
127+
message = "Callbacks for this observable counter will not be invoked.",
128+
reason = format!("{}", err));
111129
return ObservableCounter::new();
112130
}
113131

114132
match resolver.measures(
115133
InstrumentKind::ObservableCounter,
116-
builder.name,
134+
builder.name.clone(),
117135
builder.description,
118136
builder.unit,
119137
None,
120138
) {
121139
Ok(ms) => {
122140
if ms.is_empty() {
141+
otel_error!(
142+
name: "InstrumentCreationFailed",
143+
meter_name = self.scope.name.as_ref(),
144+
instrument_name = builder.name.as_ref(),
145+
message = "Callbacks for this observable counter will not be invoked. Check View Configuration."
146+
);
123147
return ObservableCounter::new();
124148
}
125149

@@ -134,7 +158,12 @@ impl SdkMeter {
134158
ObservableCounter::new()
135159
}
136160
Err(err) => {
137-
global::handle_error(err);
161+
otel_error!(
162+
name: "InstrumentCreationFailed",
163+
meter_name = self.scope.name.as_ref(),
164+
instrument_name = builder.name.as_ref(),
165+
message = "Callbacks for this observable counter will not be invoked.",
166+
reason = format!("{}", err));
138167
ObservableCounter::new()
139168
}
140169
}

0 commit comments

Comments
 (0)