File tree Expand file tree Collapse file tree 2 files changed +27
-0
lines changed
opentelemetry-appender-tracing/tests
opentelemetry-sdk/src/logs Expand file tree Collapse file tree 2 files changed +27
-0
lines changed Original file line number Diff line number Diff line change
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
+ }
Original file line number Diff line number Diff line change @@ -207,6 +207,10 @@ impl LogProcessor for BatchLogProcessor {
207
207
}
208
208
}
209
209
Err ( mpsc:: TrySendError :: Disconnected ( _) ) => {
210
+ // The following `otel_warn!` may cause an infinite feedback loop of
211
+ // 'telemetry-induced-telemetry', potentially causing a stack overflow
212
+ let _guard = Context :: enter_telemetry_suppressed_scope ( ) ;
213
+
210
214
// Given background thread is the only receiver, and it's
211
215
// disconnected, it indicates the thread is shutdown
212
216
otel_warn ! (
You can’t perform that action at this time.
0 commit comments