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