Skip to content

Commit 970f74c

Browse files
committed
Supress telemetry emitted inside of BatchLogProcessor::emit
1 parent 9bd2c1b commit 970f74c

File tree

2 files changed

+25
-0
lines changed

2 files changed

+25
-0
lines changed
Lines changed: 23 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,23 @@
1+
use opentelemetry_appender_tracing::layer;
2+
use opentelemetry_sdk::logs::SdkLoggerProvider;
3+
use tracing::info;
4+
use tracing_subscriber::{layer::SubscriberExt, util::SubscriberInitExt};
5+
6+
#[test]
7+
fn test_logging_after_shutdown_does_not_cause_telemetry_induced_telemetry() {
8+
//! Reproduces [#3161](https://github.com/open-telemetry/opentelemetry-rust/issues/3161)
9+
let exporter = opentelemetry_stdout::LogExporter::default();
10+
let provider: SdkLoggerProvider = SdkLoggerProvider::builder()
11+
.with_batch_exporter(exporter)
12+
.build();
13+
14+
let otel_layer = layer::OpenTelemetryTracingBridge::new(&provider);
15+
16+
tracing_subscriber::registry().with(otel_layer).init();
17+
18+
provider.shutdown().unwrap();
19+
20+
// If logging causes telemetry-induced-telemetry after shutting down the provider, then a stack
21+
// overflow may occur.
22+
info!("Don't crash")
23+
}

opentelemetry-sdk/src/logs/batch_log_processor.rs

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -151,6 +151,8 @@ impl Debug for BatchLogProcessor {
151151

152152
impl LogProcessor for BatchLogProcessor {
153153
fn emit(&self, record: &mut SdkLogRecord, instrumentation: &InstrumentationScope) {
154+
let _guard = Context::enter_telemetry_suppressed_scope();
155+
154156
let result = self
155157
.logs_sender
156158
.try_send(Box::new((record.clone(), instrumentation.clone())));

0 commit comments

Comments
 (0)