Skip to content

Commit 57cd692

Browse files
authored
Merge branch 'main' into zhongyang/add-propagation-errors
2 parents a2f198f + 815e387 commit 57cd692

File tree

26 files changed

+189
-181
lines changed

26 files changed

+189
-181
lines changed

Cargo.toml

+6-23
Original file line numberDiff line numberDiff line change
@@ -1,31 +1,14 @@
11
[workspace]
22
members = [
33
"opentelemetry",
4-
"opentelemetry-http",
5-
"opentelemetry-jaeger",
6-
"opentelemetry-jaeger/examples/actix-udp",
7-
"opentelemetry-jaeger/examples/remote-sampler",
8-
"opentelemetry-jaeger-propagator",
9-
"opentelemetry-appender-log",
10-
"opentelemetry-appender-tracing",
11-
"opentelemetry-otlp",
12-
"opentelemetry-prometheus",
13-
"opentelemetry-proto",
14-
"opentelemetry-sdk",
15-
"opentelemetry-semantic-conventions",
16-
"opentelemetry-stdout",
17-
"opentelemetry-zipkin",
18-
"opentelemetry-otlp/examples/basic-otlp",
19-
"opentelemetry-otlp/examples/basic-otlp-http",
20-
"opentelemetry-otlp/tests/integration_test",
21-
"examples/metrics-basic",
22-
"examples/metrics-advanced",
23-
"examples/logs-basic",
24-
"examples/tracing-grpc",
25-
"examples/tracing-http-propagator",
26-
"examples/tracing-jaeger",
4+
"opentelemetry-*",
5+
"opentelemetry-*/examples/*",
6+
"opentelemetry-otlp/tests/*",
7+
"examples/*",
278
"stress",
289
]
10+
# Any deleted crates with remaining README
11+
exclude = []
2912
resolver = "2"
3013

3114
[profile.bench]

examples/logs-basic/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -10,5 +10,6 @@ opentelemetry = { path = "../../opentelemetry", features = ["logs"] }
1010
opentelemetry_sdk = { path = "../../opentelemetry-sdk", features = ["logs"] }
1111
opentelemetry-stdout = { path = "../../opentelemetry-stdout", features = ["logs"]}
1212
opentelemetry-appender-log = { path = "../../opentelemetry-appender-log", default-features = false}
13+
opentelemetry-semantic-conventions = { path = "../../opentelemetry-semantic-conventions" }
1314
log = { workspace = true }
1415
serde_json = { workspace = true }

examples/logs-basic/src/main.rs

+2-1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ use opentelemetry::KeyValue;
33
use opentelemetry_appender_log::OpenTelemetryLogBridge;
44
use opentelemetry_sdk::logs::{Config, LoggerProvider};
55
use opentelemetry_sdk::Resource;
6+
use opentelemetry_semantic_conventions::resource::SERVICE_NAME;
67

78
fn main() {
89
// Setup LoggerProvider with a stdout exporter
@@ -14,7 +15,7 @@ fn main() {
1415
let logger_provider = LoggerProvider::builder()
1516
.with_config(
1617
Config::default().with_resource(Resource::new(vec![KeyValue::new(
17-
"service.name",
18+
SERVICE_NAME,
1819
"logs-basic-example",
1920
)])),
2021
)

examples/metrics-advanced/src/main.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use opentelemetry::global;
22
use opentelemetry::metrics::Unit;
33
use opentelemetry::Key;
4-
use opentelemetry::{metrics::MeterProvider as _, KeyValue};
4+
use opentelemetry::KeyValue;
55
use opentelemetry_sdk::metrics::{
66
Aggregation, Instrument, PeriodicReader, SdkMeterProvider, Stream,
77
};

examples/metrics-basic/src/main.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use opentelemetry::global;
22
use opentelemetry::metrics::Unit;
3-
use opentelemetry::{metrics::MeterProvider as _, KeyValue};
3+
use opentelemetry::KeyValue;
44
use opentelemetry_sdk::metrics::{PeriodicReader, SdkMeterProvider};
55
use opentelemetry_sdk::{runtime, Resource};
66
use std::error::Error;

examples/tracing-jaeger/Cargo.toml

+1
Original file line numberDiff line numberDiff line change
@@ -9,4 +9,5 @@ publish = false
99
opentelemetry = { path = "../../opentelemetry" }
1010
opentelemetry_sdk = { path = "../../opentelemetry-sdk", features = ["rt-tokio"] }
1111
opentelemetry-otlp = { path = "../../opentelemetry-otlp", features = ["tonic"] }
12+
opentelemetry-semantic-conventions = { path = "../../opentelemetry-semantic-conventions" }
1213
tokio = { workspace = true, features = ["full"] }

examples/tracing-jaeger/src/main.rs

+3-1
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,8 @@ use opentelemetry::{
66
};
77
use opentelemetry_otlp::WithExportConfig;
88
use opentelemetry_sdk::{runtime, trace as sdktrace, Resource};
9+
use opentelemetry_semantic_conventions::resource::SERVICE_NAME;
10+
911
use std::error::Error;
1012

1113
fn init_tracer() -> Result<opentelemetry_sdk::trace::Tracer, TraceError> {
@@ -18,7 +20,7 @@ fn init_tracer() -> Result<opentelemetry_sdk::trace::Tracer, TraceError> {
1820
)
1921
.with_trace_config(
2022
sdktrace::config().with_resource(Resource::new(vec![KeyValue::new(
21-
"service.name",
23+
SERVICE_NAME,
2224
"tracing-jaeger",
2325
)])),
2426
)

opentelemetry-appender-tracing/CHANGELOG.md

+2
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,8 @@
22

33
## vNext
44

5+
- Removed unwanted dependency on opentelemetry-sdk.
6+
57
## v0.3.0
68

79
### Added

opentelemetry-appender-tracing/Cargo.toml

-1
Original file line numberDiff line numberDiff line change
@@ -14,7 +14,6 @@ rust-version = "1.65"
1414
log = { workspace = true, optional = true }
1515
once_cell = { workspace = true }
1616
opentelemetry = { version = "0.22", path = "../opentelemetry", features = ["logs"] }
17-
opentelemetry_sdk = { version = "0.22", path = "../opentelemetry-sdk", features = ["logs"] }
1817
tracing = { workspace = true, features = ["std"]}
1918
tracing-core = { workspace = true }
2019
tracing-log = { version = "0.2", optional = true }

opentelemetry-sdk/CHANGELOG.md

+5-2
Original file line numberDiff line numberDiff line change
@@ -7,8 +7,11 @@
77
[1612](https://github.com/open-telemetry/opentelemetry-rust/pull/1612/files)
88
- [#1422](https://github.com/open-telemetry/opentelemetry-rust/pull/1422)
99
Fix metrics aggregation bug when using Views to drop attributes.
10-
- [#1623](https://github.com/open-telemetry/opentelemetry-rust/pull/1623) Add Drop implementation for SdkMeterProvider, which shuts down
11-
metricreaders, thereby allowing metrics still in memory to be flushed out.
10+
- [#1623](https://github.com/open-telemetry/opentelemetry-rust/pull/1623) Add Drop implementation for SdkMeterProvider,
11+
which shuts down metricreaders, thereby allowing metrics still in memory to be flushed out.
12+
- **Breaking** [#1624](https://github.com/open-telemetry/opentelemetry-rust/pull/1624) Remove `OsResourceDetector` and
13+
`ProcessResourceDetector` resource detectors, use the
14+
[`opentelemetry-resource-detector`](https://crates.io/crates/opentelemetry-resource-detectors) instead.
1215

1316
## v0.22.1
1417

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

+1-1
Original file line numberDiff line numberDiff line change
@@ -93,7 +93,7 @@ impl<T: Number<T>> AggregateBuilder<T> {
9393

9494
/// Wraps the passed in measure with an attribute filtering function.
9595
fn filter(&self, f: impl Measure<T>) -> impl Measure<T> {
96-
let filter = self.filter.as_ref().map(Arc::clone);
96+
let filter = self.filter.clone();
9797
move |n, mut attrs: AttributeSet| {
9898
if let Some(filter) = &filter {
9999
attrs.retain(filter.as_ref());

opentelemetry-sdk/src/metrics/pipeline.rs

+5-6
Original file line numberDiff line numberDiff line change
@@ -386,8 +386,7 @@ where
386386
let cached = cache.entry(id).or_insert_with(|| {
387387
let filter = stream
388388
.allowed_attribute_keys
389-
.as_ref()
390-
.map(Arc::clone)
389+
.clone()
391390
.map(|allowed| Arc::new(move |kv: &KeyValue| allowed.contains(&kv.key)) as Arc<_>);
392391

393392
let b = AggregateBuilder::new(Some(self.pipeline.reader.temporality(kind)), filter);
@@ -409,10 +408,10 @@ where
409408
Ok(Some(m))
410409
});
411410

412-
cached
413-
.as_ref()
414-
.map(|o| o.as_ref().map(Arc::clone))
415-
.map_err(|e| MetricsError::Other(e.to_string()))
411+
match cached {
412+
Ok(opt) => Ok(opt.clone()),
413+
Err(err) => Err(MetricsError::Other(err.to_string())),
414+
}
416415
}
417416

418417
/// Validates if an instrument with the same name as id has already been created.
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,32 @@
1+
/// Logical name of the service.
2+
///
3+
/// MUST be the same for all instances of horizontally scaled services. If the value was not specified, SDKs MUST fallback to `unknown_service:` concatenated with [`process.executable.name`](process.md#process), e.g. `unknown_service:bash`. If `process.executable.name` is not available, the value MUST be set to `unknown_service`.
4+
///
5+
/// # Examples
6+
///
7+
/// - `shoppingcart`
8+
pub(crate) const SERVICE_NAME: &str = "service.name";
9+
10+
/// The language of the telemetry SDK.
11+
pub(crate) const TELEMETRY_SDK_LANGUAGE: &str = "telemetry.sdk.language";
12+
13+
/// The name of the telemetry SDK as defined above.
14+
///
15+
/// The OpenTelemetry SDK MUST set the `telemetry.sdk.name` attribute to `opentelemetry`.
16+
/// If another SDK, like a fork or a vendor-provided implementation, is used, this SDK MUST set the
17+
/// `telemetry.sdk.name` attribute to the fully-qualified class or module name of this SDK's main entry point
18+
/// or another suitable identifier depending on the language.
19+
/// The identifier `opentelemetry` is reserved and MUST NOT be used in this case.
20+
/// All custom identifiers SHOULD be stable across different versions of an implementation.
21+
///
22+
/// # Examples
23+
///
24+
/// - `opentelemetry`
25+
pub(crate) const TELEMETRY_SDK_NAME: &str = "telemetry.sdk.name";
26+
27+
/// The version string of the telemetry SDK.
28+
///
29+
/// # Examples
30+
///
31+
/// - `1.2.3`
32+
pub(crate) const TELEMETRY_SDK_VERSION: &str = "telemetry.sdk.version";

opentelemetry-sdk/src/resource/env.rs

+6-7
Original file line numberDiff line numberDiff line change
@@ -76,15 +76,15 @@ pub struct SdkProvidedResourceDetector;
7676
impl ResourceDetector for SdkProvidedResourceDetector {
7777
fn detect(&self, _timeout: Duration) -> Resource {
7878
Resource::new(vec![KeyValue::new(
79-
"service.name",
79+
super::SERVICE_NAME,
8080
env::var(OTEL_SERVICE_NAME)
8181
.ok()
8282
.filter(|s| !s.is_empty())
8383
.map(Value::from)
8484
.or_else(|| {
8585
EnvResourceDetector::new()
8686
.detect(Duration::from_secs(0))
87-
.get(Key::new("service.name"))
87+
.get(Key::new(super::SERVICE_NAME))
8888
})
8989
.unwrap_or_else(|| "unknown_service".into()),
9090
)])
@@ -132,18 +132,17 @@ mod tests {
132132

133133
#[test]
134134
fn test_sdk_provided_resource_detector() {
135-
const SERVICE_NAME: &str = "service.name";
136135
// Ensure no env var set
137136
let no_env = SdkProvidedResourceDetector.detect(Duration::from_secs(1));
138137
assert_eq!(
139-
no_env.get(Key::from_static_str(SERVICE_NAME)),
138+
no_env.get(Key::from_static_str(crate::resource::SERVICE_NAME)),
140139
Some(Value::from("unknown_service")),
141140
);
142141

143142
temp_env::with_var(OTEL_SERVICE_NAME, Some("test service"), || {
144143
let with_service = SdkProvidedResourceDetector.detect(Duration::from_secs(1));
145144
assert_eq!(
146-
with_service.get(Key::from_static_str(SERVICE_NAME)),
145+
with_service.get(Key::from_static_str(crate::resource::SERVICE_NAME)),
147146
Some(Value::from("test service")),
148147
)
149148
});
@@ -154,7 +153,7 @@ mod tests {
154153
|| {
155154
let with_service = SdkProvidedResourceDetector.detect(Duration::from_secs(1));
156155
assert_eq!(
157-
with_service.get(Key::from_static_str(SERVICE_NAME)),
156+
with_service.get(Key::from_static_str(crate::resource::SERVICE_NAME)),
158157
Some(Value::from("test service1")),
159158
)
160159
},
@@ -169,7 +168,7 @@ mod tests {
169168
|| {
170169
let with_service = SdkProvidedResourceDetector.detect(Duration::from_secs(1));
171170
assert_eq!(
172-
with_service.get(Key::from_static_str(SERVICE_NAME)),
171+
with_service.get(Key::from_static_str(crate::resource::SERVICE_NAME)),
173172
Some(Value::from("test service"))
174173
);
175174
},

opentelemetry-sdk/src/resource/mod.rs

+5-6
Original file line numberDiff line numberDiff line change
@@ -16,18 +16,17 @@
1616
//! SDK.
1717
//!
1818
//! - [`EnvResourceDetector`] - detect resource from environmental variables.
19-
//! - [`OsResourceDetector`] - detect OS from runtime.
20-
//! - [`ProcessResourceDetector`] - detect process information.
2119
//! - [`TelemetryResourceDetector`] - detect telemetry SDK's information.
20+
//!
21+
//! The OS and Process resource detectors are now packaged separately in the `opentelemetry-resource-detector` [crate](https://github.com/open-telemetry/opentelemetry-rust-contrib/tree/main/opentelemetry-resource-detectors).
2222
mod env;
23-
mod os;
24-
mod process;
2523
mod telemetry;
2624

25+
mod attributes;
26+
pub(crate) use attributes::*;
27+
2728
pub use env::EnvResourceDetector;
2829
pub use env::SdkProvidedResourceDetector;
29-
pub use os::OsResourceDetector;
30-
pub use process::ProcessResourceDetector;
3130
pub use telemetry::TelemetryResourceDetector;
3231

3332
use opentelemetry::{Key, KeyValue, Value};

opentelemetry-sdk/src/resource/os.rs

-46
This file was deleted.

opentelemetry-sdk/src/resource/process.rs

-47
This file was deleted.

opentelemetry-sdk/src/resource/telemetry.rs

+3-3
Original file line numberDiff line numberDiff line change
@@ -19,9 +19,9 @@ pub struct TelemetryResourceDetector;
1919
impl ResourceDetector for TelemetryResourceDetector {
2020
fn detect(&self, _timeout: Duration) -> Resource {
2121
Resource::new(vec![
22-
KeyValue::new("telemetry.sdk.name", "opentelemetry"),
23-
KeyValue::new("telemetry.sdk.language", "rust"),
24-
KeyValue::new("telemetry.sdk.version", env!("CARGO_PKG_VERSION")),
22+
KeyValue::new(super::TELEMETRY_SDK_NAME, "opentelemetry"),
23+
KeyValue::new(super::TELEMETRY_SDK_LANGUAGE, "rust"),
24+
KeyValue::new(super::TELEMETRY_SDK_VERSION, env!("CARGO_PKG_VERSION")),
2525
])
2626
}
2727
}

opentelemetry-sdk/src/trace/links.rs

+6
Original file line numberDiff line numberDiff line change
@@ -29,3 +29,9 @@ impl IntoIterator for SpanLinks {
2929
self.links.into_iter()
3030
}
3131
}
32+
33+
impl SpanLinks {
34+
pub(crate) fn add_link(&mut self, link: Link) {
35+
self.links.push(link);
36+
}
37+
}

0 commit comments

Comments
 (0)