Skip to content

Commit 7c69e5c

Browse files
Remove Cow from the InstrumentationScope public API
1 parent 91f44ff commit 7c69e5c

File tree

18 files changed

+123
-108
lines changed

18 files changed

+123
-108
lines changed

opentelemetry-appender-tracing/src/layer.rs

+4-4
Original file line numberDiff line numberDiff line change
@@ -334,7 +334,7 @@ mod tests {
334334
.expect("Atleast one log is expected to be present.");
335335

336336
// Validate common fields
337-
assert_eq!(log.instrumentation.name, "opentelemetry-appender-tracing");
337+
assert_eq!(log.instrumentation.name(), "opentelemetry-appender-tracing");
338338
assert_eq!(log.record.severity_number, Some(Severity::Error));
339339

340340
// Validate trace context is none.
@@ -428,7 +428,7 @@ mod tests {
428428
.expect("Atleast one log is expected to be present.");
429429

430430
// validate common fields.
431-
assert_eq!(log.instrumentation.name, "opentelemetry-appender-tracing");
431+
assert_eq!(log.instrumentation.name(), "opentelemetry-appender-tracing");
432432
assert_eq!(log.record.severity_number, Some(Severity::Error));
433433

434434
// validate trace context.
@@ -526,7 +526,7 @@ mod tests {
526526
.expect("Atleast one log is expected to be present.");
527527

528528
// Validate common fields
529-
assert_eq!(log.instrumentation.name, "opentelemetry-appender-tracing");
529+
assert_eq!(log.instrumentation.name(), "opentelemetry-appender-tracing");
530530
assert_eq!(log.record.severity_number, Some(Severity::Error));
531531

532532
// Validate trace context is none.
@@ -605,7 +605,7 @@ mod tests {
605605
.expect("Atleast one log is expected to be present.");
606606

607607
// validate common fields.
608-
assert_eq!(log.instrumentation.name, "opentelemetry-appender-tracing");
608+
assert_eq!(log.instrumentation.name(), "opentelemetry-appender-tracing");
609609
assert_eq!(log.record.severity_number, Some(Severity::Error));
610610

611611
// validate trace context.

opentelemetry-proto/src/transform/common.rs

+8-12
Original file line numberDiff line numberDiff line change
@@ -64,9 +64,9 @@ pub mod tonic {
6464
}
6565
} else {
6666
InstrumentationScope {
67-
name: library.name.into_owned(),
68-
version: library.version.map(Cow::into_owned).unwrap_or_default(),
69-
attributes: Attributes::from(library.attributes).0,
67+
name: library.name().to_owned(),
68+
version: library.version().map(ToOwned::to_owned).unwrap_or_default(),
69+
attributes: Attributes::from(library.attributes().iter().cloned()).0,
7070
..Default::default()
7171
}
7272
}
@@ -95,13 +95,9 @@ pub mod tonic {
9595
}
9696
} else {
9797
InstrumentationScope {
98-
name: library.name.to_string(),
99-
version: library
100-
.version
101-
.as_ref()
102-
.map(ToString::to_string)
103-
.unwrap_or_default(),
104-
attributes: Attributes::from(library.attributes.clone()).0,
98+
name: library.name().to_owned(),
99+
version: library.version().map(ToOwned::to_owned).unwrap_or_default(),
100+
attributes: Attributes::from(library.attributes().iter().cloned()).0,
105101
..Default::default()
106102
}
107103
}
@@ -112,8 +108,8 @@ pub mod tonic {
112108
#[derive(Default, Debug)]
113109
pub struct Attributes(pub ::std::vec::Vec<crate::proto::tonic::common::v1::KeyValue>);
114110

115-
impl From<Vec<opentelemetry::KeyValue>> for Attributes {
116-
fn from(kvs: Vec<opentelemetry::KeyValue>) -> Self {
111+
impl<I: IntoIterator<Item = opentelemetry::KeyValue>> From<I> for Attributes {
112+
fn from(kvs: I) -> Self {
117113
Attributes(
118114
kvs.into_iter()
119115
.map(|api_kv| KeyValue {

opentelemetry-proto/src/transform/logs.rs

+3-4
Original file line numberDiff line numberDiff line change
@@ -167,9 +167,8 @@ pub mod tonic {
167167
schema_url: resource.schema_url.clone().unwrap_or_default(),
168168
scope_logs: vec![ScopeLogs {
169169
schema_url: instrumentation
170-
.schema_url
171-
.clone()
172-
.map(Into::into)
170+
.schema_url()
171+
.map(ToOwned::to_owned)
173172
.unwrap_or_default(),
174173
scope: Some((instrumentation, log_record.target.clone()).into()),
175174
log_records: vec![log_record.into()],
@@ -196,7 +195,7 @@ pub mod tonic {
196195
let key = log_record
197196
.target
198197
.clone()
199-
.unwrap_or_else(|| Cow::Owned(instrumentation.name.clone().into_owned()));
198+
.unwrap_or_else(|| Cow::Owned(instrumentation.name().to_owned()));
200199
scope_map
201200
.entry(key)
202201
.or_default()

opentelemetry-proto/src/transform/metrics.rs

+2-3
Original file line numberDiff line numberDiff line change
@@ -137,9 +137,8 @@ pub mod tonic {
137137
metrics: sm.metrics.iter().map(Into::into).collect(),
138138
schema_url: sm
139139
.scope
140-
.schema_url
141-
.as_ref()
142-
.map(ToString::to_string)
140+
.schema_url()
141+
.map(ToOwned::to_owned)
143142
.unwrap_or_default(),
144143
}
145144
}

opentelemetry-proto/src/transform/trace.rs

+2-3
Original file line numberDiff line numberDiff line change
@@ -102,9 +102,8 @@ pub mod tonic {
102102
scope_spans: vec![ScopeSpans {
103103
schema_url: source_span
104104
.instrumentation_scope
105-
.schema_url
106-
.as_ref()
107-
.map(ToString::to_string)
105+
.schema_url()
106+
.map(ToOwned::to_owned)
108107
.unwrap_or_default(),
109108
scope: Some((source_span.instrumentation_scope, None).into()),
110109
spans: vec![Span {

opentelemetry-sdk/src/logs/log_emitter.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -296,7 +296,7 @@ impl opentelemetry::logs::Logger for Logger {
296296
|| processor.event_enabled(
297297
level,
298298
target,
299-
self.instrumentation_scope().name.as_ref(),
299+
self.instrumentation_scope().name().as_ref(),
300300
);
301301
}
302302
enabled

opentelemetry-sdk/src/logs/mod.rs

+5-5
Original file line numberDiff line numberDiff line change
@@ -87,7 +87,7 @@ mod tests {
8787
let log = exported_logs
8888
.first()
8989
.expect("Atleast one log is expected to be present.");
90-
assert_eq!(log.instrumentation.name, "test-logger");
90+
assert_eq!(log.instrumentation.name(), "test-logger");
9191
assert_eq!(log.record.severity_number, Some(Severity::Error));
9292
assert_eq!(log.record.attributes_len(), 10);
9393
for i in 1..=10 {
@@ -111,11 +111,11 @@ mod tests {
111111

112112
let logger = provider.logger_with_scope(scope);
113113
let instrumentation_scope = logger.instrumentation_scope();
114-
let attributes = &instrumentation_scope.attributes;
115-
assert_eq!(instrumentation_scope.name, "test_logger");
114+
let attributes = &instrumentation_scope.attributes();
115+
assert_eq!(instrumentation_scope.name(), "test_logger");
116116
assert_eq!(
117-
instrumentation_scope.schema_url,
118-
Some("https://opentelemetry.io/schema/1.0.0".into())
117+
instrumentation_scope.schema_url(),
118+
Some("https://opentelemetry.io/schema/1.0.0")
119119
);
120120
assert_eq!(attributes.len(), 1);
121121
assert_eq!(attributes[0].key, "test_k".into());

opentelemetry-sdk/src/metrics/instrument.rs

+5-7
Original file line numberDiff line numberDiff line change
@@ -160,13 +160,11 @@ impl Instrument {
160160
}
161161

162162
pub(crate) fn matches_scope(&self, other: &Instrument) -> bool {
163-
(self.scope.name.is_empty() || self.scope.name.as_ref() == other.scope.name.as_ref())
164-
&& (self.scope.version.is_none()
165-
|| self.scope.version.as_ref().map(AsRef::as_ref)
166-
== other.scope.version.as_ref().map(AsRef::as_ref))
167-
&& (self.scope.schema_url.is_none()
168-
|| self.scope.schema_url.as_ref().map(AsRef::as_ref)
169-
== other.scope.schema_url.as_ref().map(AsRef::as_ref))
163+
(self.scope.name().is_empty() || self.scope.name() == other.scope.name())
164+
&& (self.scope.version().is_none()
165+
|| self.scope.version().as_ref() == other.scope.version().as_ref())
166+
&& (self.scope.schema_url().is_none()
167+
|| self.scope.schema_url().as_ref() == other.scope.schema_url().as_ref())
170168
}
171169
}
172170

opentelemetry-sdk/src/metrics/meter.rs

+17-17
Original file line numberDiff line numberDiff line change
@@ -76,7 +76,7 @@ impl SdkMeter {
7676
if let Err(err) = validation_result {
7777
otel_error!(
7878
name: "InstrumentCreationFailed",
79-
meter_name = self.scope.name.as_ref(),
79+
meter_name = self.scope.name(),
8080
instrument_name = builder.name.as_ref(),
8181
message = "Measurements from this Counter will be ignored.",
8282
reason = format!("{}", err)
@@ -98,7 +98,7 @@ impl SdkMeter {
9898
Err(err) => {
9999
otel_error!(
100100
name: "InstrumentCreationFailed",
101-
meter_name = self.scope.name.as_ref(),
101+
meter_name = self.scope.name(),
102102
instrument_name = builder.name.as_ref(),
103103
message = "Measurements from this Counter will be ignored.",
104104
reason = format!("{}", err)
@@ -120,7 +120,7 @@ impl SdkMeter {
120120
if let Err(err) = validation_result {
121121
otel_error!(
122122
name: "InstrumentCreationFailed",
123-
meter_name = self.scope.name.as_ref(),
123+
meter_name = self.scope.name(),
124124
instrument_name = builder.name.as_ref(),
125125
message = "Callbacks for this ObservableCounter will not be invoked.",
126126
reason = format!("{}", err));
@@ -138,7 +138,7 @@ impl SdkMeter {
138138
if ms.is_empty() {
139139
otel_error!(
140140
name: "InstrumentCreationFailed",
141-
meter_name = self.scope.name.as_ref(),
141+
meter_name = self.scope.name(),
142142
instrument_name = builder.name.as_ref(),
143143
message = "Callbacks for this ObservableCounter will not be invoked. Check View Configuration."
144144
);
@@ -158,7 +158,7 @@ impl SdkMeter {
158158
Err(err) => {
159159
otel_error!(
160160
name: "InstrumentCreationFailed",
161-
meter_name = self.scope.name.as_ref(),
161+
meter_name = self.scope.name(),
162162
instrument_name = builder.name.as_ref(),
163163
message = "Callbacks for this ObservableCounter will not be invoked.",
164164
reason = format!("{}", err));
@@ -179,7 +179,7 @@ impl SdkMeter {
179179
if let Err(err) = validation_result {
180180
otel_error!(
181181
name: "InstrumentCreationFailed",
182-
meter_name = self.scope.name.as_ref(),
182+
meter_name = self.scope.name(),
183183
instrument_name = builder.name.as_ref(),
184184
message = "Callbacks for this ObservableUpDownCounter will not be invoked.",
185185
reason = format!("{}", err));
@@ -197,7 +197,7 @@ impl SdkMeter {
197197
if ms.is_empty() {
198198
otel_error!(
199199
name: "InstrumentCreationFailed",
200-
meter_name = self.scope.name.as_ref(),
200+
meter_name = self.scope.name(),
201201
instrument_name = builder.name.as_ref(),
202202
message = "Callbacks for this ObservableUpDownCounter will not be invoked. Check View Configuration."
203203
);
@@ -217,7 +217,7 @@ impl SdkMeter {
217217
Err(err) => {
218218
otel_error!(
219219
name: "InstrumentCreationFailed",
220-
meter_name = self.scope.name.as_ref(),
220+
meter_name = self.scope.name(),
221221
instrument_name = builder.name.as_ref(),
222222
message = "Callbacks for this ObservableUpDownCounter will not be invoked.",
223223
reason = format!("{}", err));
@@ -238,7 +238,7 @@ impl SdkMeter {
238238
if let Err(err) = validation_result {
239239
otel_error!(
240240
name: "InstrumentCreationFailed",
241-
meter_name = self.scope.name.as_ref(),
241+
meter_name = self.scope.name(),
242242
instrument_name = builder.name.as_ref(),
243243
message = "Callbacks for this ObservableGauge will not be invoked.",
244244
reason = format!("{}", err));
@@ -256,7 +256,7 @@ impl SdkMeter {
256256
if ms.is_empty() {
257257
otel_error!(
258258
name: "InstrumentCreationFailed",
259-
meter_name = self.scope.name.as_ref(),
259+
meter_name = self.scope.name(),
260260
instrument_name = builder.name.as_ref(),
261261
message = "Callbacks for this ObservableGauge will not be invoked. Check View Configuration."
262262
);
@@ -276,7 +276,7 @@ impl SdkMeter {
276276
Err(err) => {
277277
otel_error!(
278278
name: "InstrumentCreationFailed",
279-
meter_name = self.scope.name.as_ref(),
279+
meter_name = self.scope.name(),
280280
instrument_name = builder.name.as_ref(),
281281
message = "Callbacks for this ObservableGauge will not be invoked.",
282282
reason = format!("{}", err));
@@ -297,7 +297,7 @@ impl SdkMeter {
297297
if let Err(err) = validation_result {
298298
otel_error!(
299299
name: "InstrumentCreationFailed",
300-
meter_name = self.scope.name.as_ref(),
300+
meter_name = self.scope.name(),
301301
instrument_name = builder.name.as_ref(),
302302
message = "Measurements from this UpDownCounter will be ignored.",
303303
reason = format!("{}", err)
@@ -319,7 +319,7 @@ impl SdkMeter {
319319
Err(err) => {
320320
otel_error!(
321321
name: "InstrumentCreationFailed",
322-
meter_name = self.scope.name.as_ref(),
322+
meter_name = self.scope.name(),
323323
instrument_name = builder.name.as_ref(),
324324
message = "Measurements from this UpDownCounter will be ignored.",
325325
reason = format!("{}", err)
@@ -341,7 +341,7 @@ impl SdkMeter {
341341
if let Err(err) = validation_result {
342342
otel_error!(
343343
name: "InstrumentCreationFailed",
344-
meter_name = self.scope.name.as_ref(),
344+
meter_name = self.scope.name(),
345345
instrument_name = builder.name.as_ref(),
346346
message = "Measurements from this Gauge will be ignored.",
347347
reason = format!("{}", err)
@@ -363,7 +363,7 @@ impl SdkMeter {
363363
Err(err) => {
364364
otel_error!(
365365
name: "InstrumentCreationFailed",
366-
meter_name = self.scope.name.as_ref(),
366+
meter_name = self.scope.name(),
367367
instrument_name = builder.name.as_ref(),
368368
message = "Measurements from this Gauge will be ignored.",
369369
reason = format!("{}", err)
@@ -385,7 +385,7 @@ impl SdkMeter {
385385
if let Err(err) = validation_result {
386386
otel_error!(
387387
name: "InstrumentCreationFailed",
388-
meter_name = self.scope.name.as_ref(),
388+
meter_name = self.scope.name(),
389389
instrument_name = builder.name.as_ref(),
390390
message = "Measurements from this Histogram will be ignored.",
391391
reason = format!("{}", err)
@@ -407,7 +407,7 @@ impl SdkMeter {
407407
Err(err) => {
408408
otel_error!(
409409
name: "InstrumentCreationFailed",
410-
meter_name = self.scope.name.as_ref(),
410+
meter_name = self.scope.name(),
411411
instrument_name = builder.name.as_ref(),
412412
message = "Measurements from this Histogram will be ignored.",
413413
reason = format!("{}", err)

opentelemetry-sdk/src/metrics/meter_provider.rs

+9-11
Original file line numberDiff line numberDiff line change
@@ -465,18 +465,16 @@ mod tests {
465465
assert_eq!(provider.inner.meters.lock().unwrap().len(), 2);
466466

467467
// these are different meters because meter names are case sensitive
468-
let mut library = InstrumentationScope::builder("ABC")
469-
.with_version("1.0.0")
470-
.with_schema_url("http://example.com")
471-
.build();
472-
473-
let _meter6 = provider.meter_with_scope(library.clone());
474-
475-
library.name = "Abc".into();
476-
let _meter7 = provider.meter_with_scope(library.clone());
468+
let make_scope = |name| {
469+
InstrumentationScope::builder(name)
470+
.with_version("1.0.0")
471+
.with_schema_url("http://example.com")
472+
.build()
473+
};
477474

478-
library.name = "abc".into();
479-
let _meter8 = provider.meter_with_scope(library);
475+
let _meter6 = provider.meter_with_scope(make_scope("ABC"));
476+
let _meter7 = provider.meter_with_scope(make_scope("Abc"));
477+
let _meter8 = provider.meter_with_scope(make_scope("abc"));
480478

481479
assert_eq!(provider.inner.meters.lock().unwrap().len(), 5);
482480
}

0 commit comments

Comments
 (0)