Skip to content

Commit c811cde

Browse files
authored
chore: Prepare release 0.30.0 (#2999)
1 parent 200885a commit c811cde

File tree

23 files changed

+234
-167
lines changed

23 files changed

+234
-167
lines changed

opentelemetry-appender-log/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
## vNext
44

5+
## 0.30.0
6+
7+
Released 2025-May-23
8+
9+
- Updated `opentelemetry` and `opentelemetry-semantic-conventions` dependencies to version 0.30.0.
10+
511
## 0.29.0
612

713
Released 2025-Mar-21

opentelemetry-appender-log/Cargo.toml

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "opentelemetry-appender-log"
3-
version = "0.29.0"
3+
version = "0.30.0"
44
description = "An OpenTelemetry appender for the log crate"
55
homepage = "https://github.com/open-telemetry/opentelemetry-rust/tree/main/opentelemetry-appender-log"
66
repository = "https://github.com/open-telemetry/opentelemetry-rust/tree/main/opentelemetry-appender-log"
@@ -15,12 +15,12 @@ autobenches = false
1515
bench = false
1616

1717
[dependencies]
18-
opentelemetry = { version = "0.29", path = "../opentelemetry", features = [
18+
opentelemetry = { version = "0.30", path = "../opentelemetry", features = [
1919
"logs",
2020
] }
2121
log = { workspace = true, features = ["kv", "std"] }
2222
serde = { workspace = true, optional = true, features = ["std"] }
23-
opentelemetry-semantic-conventions = { version = "0.29", path = "../opentelemetry-semantic-conventions", optional = true, features = [
23+
opentelemetry-semantic-conventions = { version = "0.30", path = "../opentelemetry-semantic-conventions", optional = true, features = [
2424
"semconv_experimental",
2525
] }
2626

opentelemetry-appender-tracing/CHANGELOG.md

Lines changed: 7 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,13 @@
22

33
## vNext
44

5+
## 0.30.0
6+
7+
Released 2025-May-23
8+
9+
- Updated `opentelemetry` dependency to version 0.30.0.
10+
11+
512
## 0.29.1
613

714
Released 2025-Mar-24

opentelemetry-appender-tracing/Cargo.toml

Lines changed: 5 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "opentelemetry-appender-tracing"
3-
version = "0.29.1"
3+
version = "0.30.0"
44
edition = "2021"
55
description = "An OpenTelemetry log appender for the tracing crate"
66
homepage = "https://github.com/open-telemetry/opentelemetry-rust/tree/main/opentelemetry-appender-tracing"
@@ -13,12 +13,12 @@ autobenches = false
1313

1414
[dependencies]
1515
log = { workspace = true, optional = true }
16-
opentelemetry = { version = "0.29", path = "../opentelemetry", features = ["logs"] }
16+
opentelemetry = { version = "0.30", path = "../opentelemetry", features = ["logs"] }
1717
tracing = { workspace = true, features = ["std"]}
1818
tracing-core = { workspace = true }
1919
tracing-log = { workspace = true, optional = true }
2020
tracing-subscriber = { workspace = true, features = ["registry", "std"] }
21-
tracing-opentelemetry = { workspace = true, optional = true }
21+
# tracing-opentelemetry = { workspace = true, optional = true }
2222

2323
[dev-dependencies]
2424
log = { workspace = true }
@@ -37,7 +37,8 @@ pprof = { version = "0.14", features = ["flamegraph", "criterion"] }
3737
default = []
3838
experimental_metadata_attributes = ["dep:tracing-log"]
3939
spec_unstable_logs_enabled = ["opentelemetry/spec_unstable_logs_enabled"]
40-
experimental_use_tracing_span_context = ["tracing-opentelemetry"]
40+
# TODO: Enable this back in 0.30.1 after tracing-opentelemetry is released
41+
# experimental_use_tracing_span_context = ["tracing-opentelemetry"]
4142

4243

4344
[[bench]]

opentelemetry-appender-tracing/src/layer.rs

Lines changed: 133 additions & 133 deletions
Original file line numberDiff line numberDiff line change
@@ -244,28 +244,28 @@ where
244244
// Visit fields.
245245
event.record(&mut visitor);
246246

247-
#[cfg(feature = "experimental_use_tracing_span_context")]
248-
if let Some(span) = _ctx.event_span(event) {
249-
use opentelemetry::trace::TraceContextExt;
250-
use tracing_opentelemetry::OtelData;
251-
if let Some(otd) = span.extensions().get::<OtelData>() {
252-
if let Some(span_id) = otd.builder.span_id {
253-
let opt_trace_id = if otd.parent_cx.has_active_span() {
254-
Some(otd.parent_cx.span().span_context().trace_id())
255-
} else {
256-
span.scope().last().and_then(|root_span| {
257-
root_span
258-
.extensions()
259-
.get::<OtelData>()
260-
.and_then(|otd| otd.builder.trace_id)
261-
})
262-
};
263-
if let Some(trace_id) = opt_trace_id {
264-
log_record.set_trace_context(trace_id, span_id, None);
265-
}
266-
}
267-
}
268-
}
247+
// #[cfg(feature = "experimental_use_tracing_span_context")]
248+
// if let Some(span) = _ctx.event_span(event) {
249+
// use opentelemetry::trace::TraceContextExt;
250+
// use tracing_opentelemetry::OtelData;
251+
// if let Some(otd) = span.extensions().get::<OtelData>() {
252+
// if let Some(span_id) = otd.builder.span_id {
253+
// let opt_trace_id = if otd.parent_cx.has_active_span() {
254+
// Some(otd.parent_cx.span().span_context().trace_id())
255+
// } else {
256+
// span.scope().last().and_then(|root_span| {
257+
// root_span
258+
// .extensions()
259+
// .get::<OtelData>()
260+
// .and_then(|otd| otd.builder.trace_id)
261+
// })
262+
// };
263+
// if let Some(trace_id) = opt_trace_id {
264+
// log_record.set_trace_context(trace_id, span_id, None);
265+
// }
266+
// }
267+
// }
268+
// }
269269

270270
//emit record
271271
self.logger.emit(log_record);
@@ -611,117 +611,117 @@ mod tests {
611611
}
612612
}
613613

614-
#[cfg(feature = "experimental_use_tracing_span_context")]
615-
#[test]
616-
fn tracing_appender_inside_tracing_crate_context() {
617-
use opentelemetry::{trace::SpanContext, Context, SpanId, TraceId};
618-
use opentelemetry_sdk::trace::InMemorySpanExporterBuilder;
619-
use tracing_opentelemetry::OpenTelemetrySpanExt;
620-
621-
// Arrange
622-
let exporter: InMemoryLogExporter = InMemoryLogExporter::default();
623-
let logger_provider = SdkLoggerProvider::builder()
624-
.with_simple_exporter(exporter.clone())
625-
.build();
626-
627-
// setup tracing layer to compare trace/span IDs against
628-
let span_exporter = InMemorySpanExporterBuilder::new().build();
629-
let tracer_provider = SdkTracerProvider::builder()
630-
.with_simple_exporter(span_exporter.clone())
631-
.build();
632-
let tracer = tracer_provider.tracer("test-tracer");
633-
634-
let level_filter = tracing_subscriber::filter::LevelFilter::ERROR;
635-
let log_layer =
636-
layer::OpenTelemetryTracingBridge::new(&logger_provider).with_filter(level_filter);
637-
638-
let subscriber = tracing_subscriber::registry()
639-
.with(log_layer)
640-
.with(tracing_opentelemetry::layer().with_tracer(tracer));
641-
642-
// Avoiding global subscriber.init() as that does not play well with unit tests.
643-
let _guard = tracing::subscriber::set_default(subscriber);
644-
645-
// Act
646-
tracing::error_span!("outer-span").in_scope(|| {
647-
error!("first-event");
648-
649-
tracing::error_span!("inner-span").in_scope(|| {
650-
error!("second-event");
651-
});
652-
});
653-
654-
assert!(logger_provider.force_flush().is_ok());
655-
656-
let logs = exporter.get_emitted_logs().expect("No emitted logs");
657-
assert_eq!(logs.len(), 2, "Expected 2 logs, got: {logs:?}");
658-
659-
let spans = span_exporter.get_finished_spans().unwrap();
660-
assert_eq!(spans.len(), 2);
661-
662-
let trace_id = spans[0].span_context.trace_id();
663-
assert_eq!(trace_id, spans[1].span_context.trace_id());
664-
let inner_span_id = spans[0].span_context.span_id();
665-
let outer_span_id = spans[1].span_context.span_id();
666-
assert_eq!(outer_span_id, spans[0].parent_span_id);
667-
668-
let trace_ctx0 = logs[0].record.trace_context().unwrap();
669-
let trace_ctx1 = logs[1].record.trace_context().unwrap();
670-
671-
assert_eq!(trace_ctx0.trace_id, trace_id);
672-
assert_eq!(trace_ctx1.trace_id, trace_id);
673-
assert_eq!(trace_ctx0.span_id, outer_span_id);
674-
assert_eq!(trace_ctx1.span_id, inner_span_id);
675-
676-
// Set context from remote.
677-
let remote_trace_id = TraceId::from_u128(233);
678-
let remote_span_id = SpanId::from_u64(2333);
679-
let remote_span_context = SpanContext::new(
680-
remote_trace_id,
681-
remote_span_id,
682-
TraceFlags::SAMPLED,
683-
true,
684-
Default::default(),
685-
);
686-
687-
// Act again.
688-
tracing::error_span!("outer-span").in_scope(|| {
689-
let span = tracing::Span::current();
690-
let parent_context = Context::current().with_remote_span_context(remote_span_context);
691-
span.set_parent(parent_context);
692-
693-
error!("first-event");
694-
695-
tracing::error_span!("inner-span").in_scope(|| {
696-
error!("second-event");
697-
});
698-
});
699-
700-
assert!(logger_provider.force_flush().is_ok());
701-
702-
let logs = exporter.get_emitted_logs().expect("No emitted logs");
703-
assert_eq!(logs.len(), 4, "Expected 4 logs, got: {logs:?}");
704-
let logs = &logs[2..];
705-
706-
let spans = span_exporter.get_finished_spans().unwrap();
707-
assert_eq!(spans.len(), 4);
708-
let spans = &spans[2..];
709-
710-
let trace_id = spans[0].span_context.trace_id();
711-
assert_eq!(trace_id, remote_trace_id);
712-
assert_eq!(trace_id, spans[1].span_context.trace_id());
713-
let inner_span_id = spans[0].span_context.span_id();
714-
let outer_span_id = spans[1].span_context.span_id();
715-
assert_eq!(outer_span_id, spans[0].parent_span_id);
716-
717-
let trace_ctx0 = logs[0].record.trace_context().unwrap();
718-
let trace_ctx1 = logs[1].record.trace_context().unwrap();
719-
720-
assert_eq!(trace_ctx0.trace_id, trace_id);
721-
assert_eq!(trace_ctx1.trace_id, trace_id);
722-
assert_eq!(trace_ctx0.span_id, outer_span_id);
723-
assert_eq!(trace_ctx1.span_id, inner_span_id);
724-
}
614+
// #[cfg(feature = "experimental_use_tracing_span_context")]
615+
// #[test]
616+
// fn tracing_appender_inside_tracing_crate_context() {
617+
// use opentelemetry::{trace::SpanContext, Context, SpanId, TraceId};
618+
// use opentelemetry_sdk::trace::InMemorySpanExporterBuilder;
619+
// use tracing_opentelemetry::OpenTelemetrySpanExt;
620+
621+
// // Arrange
622+
// let exporter: InMemoryLogExporter = InMemoryLogExporter::default();
623+
// let logger_provider = SdkLoggerProvider::builder()
624+
// .with_simple_exporter(exporter.clone())
625+
// .build();
626+
627+
// // setup tracing layer to compare trace/span IDs against
628+
// let span_exporter = InMemorySpanExporterBuilder::new().build();
629+
// let tracer_provider = SdkTracerProvider::builder()
630+
// .with_simple_exporter(span_exporter.clone())
631+
// .build();
632+
// let tracer = tracer_provider.tracer("test-tracer");
633+
634+
// let level_filter = tracing_subscriber::filter::LevelFilter::ERROR;
635+
// let log_layer =
636+
// layer::OpenTelemetryTracingBridge::new(&logger_provider).with_filter(level_filter);
637+
638+
// let subscriber = tracing_subscriber::registry()
639+
// .with(log_layer)
640+
// .with(tracing_opentelemetry::layer().with_tracer(tracer));
641+
642+
// // Avoiding global subscriber.init() as that does not play well with unit tests.
643+
// let _guard = tracing::subscriber::set_default(subscriber);
644+
645+
// // Act
646+
// tracing::error_span!("outer-span").in_scope(|| {
647+
// error!("first-event");
648+
649+
// tracing::error_span!("inner-span").in_scope(|| {
650+
// error!("second-event");
651+
// });
652+
// });
653+
654+
// assert!(logger_provider.force_flush().is_ok());
655+
656+
// let logs = exporter.get_emitted_logs().expect("No emitted logs");
657+
// assert_eq!(logs.len(), 2, "Expected 2 logs, got: {logs:?}");
658+
659+
// let spans = span_exporter.get_finished_spans().unwrap();
660+
// assert_eq!(spans.len(), 2);
661+
662+
// let trace_id = spans[0].span_context.trace_id();
663+
// assert_eq!(trace_id, spans[1].span_context.trace_id());
664+
// let inner_span_id = spans[0].span_context.span_id();
665+
// let outer_span_id = spans[1].span_context.span_id();
666+
// assert_eq!(outer_span_id, spans[0].parent_span_id);
667+
668+
// let trace_ctx0 = logs[0].record.trace_context().unwrap();
669+
// let trace_ctx1 = logs[1].record.trace_context().unwrap();
670+
671+
// assert_eq!(trace_ctx0.trace_id, trace_id);
672+
// assert_eq!(trace_ctx1.trace_id, trace_id);
673+
// assert_eq!(trace_ctx0.span_id, outer_span_id);
674+
// assert_eq!(trace_ctx1.span_id, inner_span_id);
675+
676+
// // Set context from remote.
677+
// let remote_trace_id = TraceId::from_u128(233);
678+
// let remote_span_id = SpanId::from_u64(2333);
679+
// let remote_span_context = SpanContext::new(
680+
// remote_trace_id,
681+
// remote_span_id,
682+
// TraceFlags::SAMPLED,
683+
// true,
684+
// Default::default(),
685+
// );
686+
687+
// // Act again.
688+
// tracing::error_span!("outer-span").in_scope(|| {
689+
// let span = tracing::Span::current();
690+
// let parent_context = Context::current().with_remote_span_context(remote_span_context);
691+
// span.set_parent(parent_context);
692+
693+
// error!("first-event");
694+
695+
// tracing::error_span!("inner-span").in_scope(|| {
696+
// error!("second-event");
697+
// });
698+
// });
699+
700+
// assert!(logger_provider.force_flush().is_ok());
701+
702+
// let logs = exporter.get_emitted_logs().expect("No emitted logs");
703+
// assert_eq!(logs.len(), 4, "Expected 4 logs, got: {logs:?}");
704+
// let logs = &logs[2..];
705+
706+
// let spans = span_exporter.get_finished_spans().unwrap();
707+
// assert_eq!(spans.len(), 4);
708+
// let spans = &spans[2..];
709+
710+
// let trace_id = spans[0].span_context.trace_id();
711+
// assert_eq!(trace_id, remote_trace_id);
712+
// assert_eq!(trace_id, spans[1].span_context.trace_id());
713+
// let inner_span_id = spans[0].span_context.span_id();
714+
// let outer_span_id = spans[1].span_context.span_id();
715+
// assert_eq!(outer_span_id, spans[0].parent_span_id);
716+
717+
// let trace_ctx0 = logs[0].record.trace_context().unwrap();
718+
// let trace_ctx1 = logs[1].record.trace_context().unwrap();
719+
720+
// assert_eq!(trace_ctx0.trace_id, trace_id);
721+
// assert_eq!(trace_ctx1.trace_id, trace_id);
722+
// assert_eq!(trace_ctx0.span_id, outer_span_id);
723+
// assert_eq!(trace_ctx1.span_id, inner_span_id);
724+
// }
725725

726726
#[test]
727727
fn tracing_appender_standalone_with_tracing_log() {

opentelemetry-http/CHANGELOG.md

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,12 @@
22

33
## vNext
44

5+
## 0.30.0
6+
7+
Released 2025-May-23
8+
9+
- Updated `opentelemetry` dependency to version 0.30.0.
10+
511
## 0.29.0
612

713
Released 2025-Mar-21

opentelemetry-http/Cargo.toml

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
[package]
22
name = "opentelemetry-http"
3-
version = "0.29.0"
3+
version = "0.30.0"
44
description = "Helper implementations for sending HTTP requests. Uses include propagating and extracting context over http, exporting telemetry, requesting sampling strategies."
55
homepage = "https://github.com/open-telemetry/opentelemetry-rust/tree/main/opentelemetry-http"
66
repository = "https://github.com/open-telemetry/opentelemetry-rust/tree/main/opentelemetry-http"
@@ -24,7 +24,7 @@ http = { workspace = true }
2424
http-body-util = { workspace = true, optional = true }
2525
hyper = { workspace = true, optional = true }
2626
hyper-util = { workspace = true, features = ["client-legacy", "http1", "http2"], optional = true }
27-
opentelemetry = { version = "0.29", path = "../opentelemetry", features = ["trace"] }
27+
opentelemetry = { version = "0.30", path = "../opentelemetry", features = ["trace"] }
2828
reqwest = { workspace = true, features = ["blocking"], optional = true }
2929
tokio = { workspace = true, features = ["time"], optional = true }
3030

0 commit comments

Comments
 (0)