File tree Expand file tree Collapse file tree 3 files changed +25
-1
lines changed
opentelemetry-appender-tracing/tests
opentelemetry-sdk/src/logs Expand file tree Collapse file tree 3 files changed +25
-1
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_no_stack_overflow_when_event_is_emitted_after_shutdown ( ) {
8+ let exporter = opentelemetry_stdout:: LogExporter :: default ( ) ;
9+ let provider: SdkLoggerProvider = SdkLoggerProvider :: builder ( )
10+ . with_batch_exporter ( exporter)
11+ . build ( ) ;
12+
13+ let otel_layer = layer:: OpenTelemetryTracingBridge :: new ( & provider) ;
14+
15+ tracing_subscriber:: registry ( ) . with ( otel_layer) . init ( ) ;
16+
17+ provider. shutdown ( ) . unwrap ( ) ;
18+
19+ info ! ( "Don't crash" )
20+ }
Original file line number Diff line number Diff line change @@ -33,7 +33,7 @@ impl opentelemetry::logs::Logger for SdkLogger {
3333
3434 /// Emit a `LogRecord`.
3535 fn emit ( & self , mut record : Self :: LogRecord ) {
36- if Context :: is_current_telemetry_suppressed ( ) {
36+ if Context :: is_current_telemetry_suppressed ( ) || self . provider . is_shutdown ( ) {
3737 return ;
3838 }
3939 let provider = & self . provider ;
Original file line number Diff line number Diff line change @@ -129,6 +129,10 @@ impl SdkLoggerProvider {
129129 pub fn shutdown ( & self ) -> OTelSdkResult {
130130 self . shutdown_with_timeout ( Duration :: from_secs ( 5 ) )
131131 }
132+
133+ pub ( crate ) fn is_shutdown ( & self ) -> bool {
134+ self . inner . is_shutdown . load ( Ordering :: SeqCst )
135+ }
132136}
133137
134138#[ derive( Debug ) ]
You can’t perform that action at this time.
0 commit comments