@@ -1240,21 +1240,6 @@ where
1240
1240
let mut extensions = span. extensions_mut ( ) ;
1241
1241
1242
1242
if let Some ( otel_data) = extensions. get_mut :: < OtelData > ( ) {
1243
- self . start_cx ( otel_data) ;
1244
- let span = otel_data. parent_cx . span ( ) ;
1245
-
1246
- // TODO:ban fix this with accessor in SpanRef that can check the span status
1247
- // if builder.status == otel::Status::Unset
1248
- // && *meta.level() == tracing_core::Level::ERROR
1249
- // There is no test that checks this behavior
1250
- if * meta. level ( ) == tracing_core:: Level :: ERROR {
1251
- span. set_status ( otel:: Status :: error ( "" ) ) ;
1252
- }
1253
-
1254
- if let Some ( builder_updates) = builder_updates {
1255
- builder_updates. update_span ( & span) ;
1256
- }
1257
-
1258
1243
if self . location {
1259
1244
#[ cfg( not( feature = "tracing-log" ) ) ]
1260
1245
let normalized_meta: Option < tracing_core:: Metadata < ' _ > > = None ;
@@ -1286,7 +1271,31 @@ where
1286
1271
}
1287
1272
}
1288
1273
1289
- span. add_event ( otel_event. name , otel_event. attributes ) ;
1274
+ if let Some ( builder) = otel_data. builder . as_mut ( ) {
1275
+ if builder. status == otel:: Status :: Unset
1276
+ && * meta. level ( ) == tracing_core:: Level :: ERROR
1277
+ {
1278
+ builder. status = otel:: Status :: error ( "" ) ;
1279
+ }
1280
+ if let Some ( builder_updates) = builder_updates {
1281
+ builder_updates. apply ( builder) ;
1282
+ }
1283
+ if let Some ( ref mut events) = builder. events {
1284
+ events. push ( otel_event) ;
1285
+ } else {
1286
+ builder. events = Some ( vec ! [ otel_event] ) ;
1287
+ }
1288
+ } else {
1289
+ let span = otel_data. parent_cx . span ( ) ;
1290
+ // TODO:ban fix this with accessor in SpanRef that can check the span status
1291
+ if * meta. level ( ) == tracing_core:: Level :: ERROR {
1292
+ span. set_status ( otel:: Status :: error ( "" ) ) ;
1293
+ }
1294
+ if let Some ( builder_updates) = builder_updates {
1295
+ builder_updates. update_span ( & span) ;
1296
+ }
1297
+ span. add_event ( otel_event. name , otel_event. attributes ) ;
1298
+ }
1290
1299
}
1291
1300
} ;
1292
1301
}
0 commit comments