Skip to content

Commit 8611bc0

Browse files
authored
Merge branch 'main' into preallocate-attribute-mem
2 parents fb7a44c + 4d31408 commit 8611bc0

File tree

5 files changed

+53
-32
lines changed

5 files changed

+53
-32
lines changed

opentelemetry-sdk/CHANGELOG.md

+1
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@
33
## vNext
44

55
- `opentelemetry_sdk::logs::record::LogRecord` and `opentelemetry_sdk::logs::record::TraceContext` derive from `PartialEq` to facilitate Unit Testing.
6+
- Fixed an issue causing a panic during shutdown when using the `TokioCurrentThread` tracing batch processor.
67

78
## v0.24.1
89

opentelemetry-sdk/benches/log.rs

+25-11
Original file line numberDiff line numberDiff line change
@@ -6,27 +6,41 @@
66
use std::collections::HashMap;
77
use std::time::SystemTime;
88

9-
use async_trait::async_trait;
109
use criterion::{criterion_group, criterion_main, Criterion};
1110

1211
use opentelemetry::logs::{
1312
AnyValue, LogRecord as _, LogResult, Logger as _, LoggerProvider as _, Severity,
1413
};
1514
use opentelemetry::trace::Tracer;
1615
use opentelemetry::trace::TracerProvider as _;
17-
use opentelemetry::{InstrumentationLibrary, Key};
18-
use opentelemetry_sdk::export::logs::{LogData, LogExporter};
19-
use opentelemetry_sdk::logs::{Logger, LoggerProvider};
16+
use opentelemetry::Key;
17+
use opentelemetry_sdk::export::logs::LogData;
18+
use opentelemetry_sdk::logs::{Logger, LoggerProvider, LogProcessor};
2019
use opentelemetry_sdk::trace;
2120
use opentelemetry_sdk::trace::{Sampler, TracerProvider};
2221

2322
#[derive(Debug)]
24-
struct VoidExporter;
23+
struct NoopProcessor;
2524

26-
#[async_trait]
27-
impl LogExporter for VoidExporter {
28-
async fn export<'a>(&mut self, _batch: Vec<std::borrow::Cow<'a, LogData>>) -> LogResult<()> {
29-
LogResult::Ok(())
25+
impl LogProcessor for NoopProcessor {
26+
fn emit(&self, _data: &mut LogData) {}
27+
28+
fn force_flush(&self) -> LogResult<()> {
29+
Ok(())
30+
}
31+
32+
fn shutdown(&self) -> LogResult<()> {
33+
Ok(())
34+
}
35+
36+
#[cfg(feature = "logs_level_enabled")]
37+
fn event_enabled(
38+
&self,
39+
_level: opentelemetry::logs::Severity,
40+
_target: &str,
41+
_name: &str,
42+
) -> bool {
43+
true
3044
}
3145
}
3246

@@ -35,7 +49,7 @@ fn log_benchmark_group<F: Fn(&Logger)>(c: &mut Criterion, name: &str, f: F) {
3549

3650
group.bench_function("no-context", |b| {
3751
let provider = LoggerProvider::builder()
38-
.with_simple_exporter(VoidExporter)
52+
.with_log_processor(NoopProcessor {})
3953
.build();
4054

4155
let logger = provider.logger("no-context");
@@ -45,7 +59,7 @@ fn log_benchmark_group<F: Fn(&Logger)>(c: &mut Criterion, name: &str, f: F) {
4559

4660
group.bench_function("with-context", |b| {
4761
let provider = LoggerProvider::builder()
48-
.with_simple_exporter(VoidExporter)
62+
.with_log_processor(NoopProcessor {})
4963
.build();
5064

5165
let logger = provider.logger("with-context");

opentelemetry-sdk/src/trace/mod.rs

+1-1
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@
44
//!
55
//! * The [`Tracer`] struct which performs all tracing operations.
66
//! * The [`Span`] struct with is a mutable object storing information about the
7-
//! current operation execution.
7+
//! current operation execution.
88
//! * The [`TracerProvider`] struct which configures and produces [`Tracer`]s.
99
mod config;
1010
mod events;

opentelemetry-sdk/src/trace/span_processor.rs

+20-14
Original file line numberDiff line numberDiff line change
@@ -449,22 +449,28 @@ impl<R: RuntimeChannel> BatchSpanProcessor<R> {
449449
pub(crate) fn new(exporter: Box<dyn SpanExporter>, config: BatchConfig, runtime: R) -> Self {
450450
let (message_sender, message_receiver) =
451451
runtime.batch_message_channel(config.max_queue_size);
452-
let ticker = runtime
453-
.interval(config.scheduled_delay)
454-
.map(|_| BatchMessage::Flush(None));
455-
let timeout_runtime = runtime.clone();
456-
457-
let messages = Box::pin(stream::select(message_receiver, ticker));
458-
let processor = BatchSpanProcessorInternal {
459-
spans: Vec::new(),
460-
export_tasks: FuturesUnordered::new(),
461-
runtime: timeout_runtime,
462-
config,
463-
exporter,
464-
};
465452

453+
let inner_runtime = runtime.clone();
466454
// Spawn worker process via user-defined spawn function.
467-
runtime.spawn(Box::pin(processor.run(messages)));
455+
runtime.spawn(Box::pin(async move {
456+
// Timer will take a reference to the current runtime, so its important we do this within the
457+
// runtime.spawn()
458+
let ticker = inner_runtime
459+
.interval(config.scheduled_delay)
460+
.map(|_| BatchMessage::Flush(None));
461+
let timeout_runtime = inner_runtime.clone();
462+
463+
let messages = Box::pin(stream::select(message_receiver, ticker));
464+
let processor = BatchSpanProcessorInternal {
465+
spans: Vec::new(),
466+
export_tasks: FuturesUnordered::new(),
467+
runtime: timeout_runtime,
468+
config,
469+
exporter,
470+
};
471+
472+
processor.run(messages).await
473+
}));
468474

469475
// Return batch processor with link to worker
470476
BatchSpanProcessor { message_sender }

opentelemetry-zipkin/src/propagator/mod.rs

+6-6
Original file line numberDiff line numberDiff line change
@@ -3,13 +3,13 @@
33
//! The `B3Propagator` facilitates `SpanContext` propagation using
44
//! B3 Headers. This propagator supports both version of B3 headers,
55
//! 1. Single Header:
6-
//! b3: {trace_id}-{span_id}-{sampling_state}-{parent_span_id}
6+
//! b3: {trace_id}-{span_id}-{sampling_state}-{parent_span_id}
77
//! 2. Multiple Headers:
8-
//! X-B3-TraceId: {trace_id}
9-
//! X-B3-ParentSpanId: {parent_span_id}
10-
//! X-B3-SpanId: {span_id}
11-
//! X-B3-Sampled: {sampling_state}
12-
//! X-B3-Flags: {debug_flag}
8+
//! X-B3-TraceId: {trace_id}
9+
//! X-B3-ParentSpanId: {parent_span_id}
10+
//! X-B3-SpanId: {span_id}
11+
//! X-B3-Sampled: {sampling_state}
12+
//! X-B3-Flags: {debug_flag}
1313
//!
1414
//! If `inject_encoding` is set to `B3Encoding::SingleHeader` then `b3` header is used to inject
1515
//! and extract. Otherwise, separate headers are used to inject and extract.

0 commit comments

Comments
 (0)