Skip to content

Commit ae23c59

Browse files
committed
perf: make on_event use builder again if possible
1 parent d73ab01 commit ae23c59

File tree

1 file changed

+25
-16
lines changed

1 file changed

+25
-16
lines changed

src/layer.rs

Lines changed: 25 additions & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1240,21 +1240,6 @@ where
12401240
let mut extensions = span.extensions_mut();
12411241

12421242
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-
12581243
if self.location {
12591244
#[cfg(not(feature = "tracing-log"))]
12601245
let normalized_meta: Option<tracing_core::Metadata<'_>> = None;
@@ -1286,7 +1271,31 @@ where
12861271
}
12871272
}
12881273

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+
}
12901299
}
12911300
};
12921301
}

0 commit comments

Comments
 (0)