Skip to content

Commit a31f8db

Browse files
mTsBucy1mladedav
authored andcommitted
fix: fix panic in multithreaded follows-from
1 parent 94fddb0 commit a31f8db

File tree

1 file changed

+6
-6
lines changed

1 file changed

+6
-6
lines changed

src/layer.rs

Lines changed: 6 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -1197,18 +1197,18 @@ where
11971197
fn on_follows_from(&self, id: &Id, follows: &Id, ctx: Context<S>) {
11981198
let span = ctx.span(id).expect("Span not found, this is a bug");
11991199
let mut extensions = span.extensions_mut();
1200-
let data = extensions
1201-
.get_mut::<OtelData>()
1202-
.expect("Missing otel data span extensions");
1200+
let Some(data) = extensions.get_mut::<OtelData>() else {
1201+
return; // The span must already have been closed by us
1202+
};
12031203

12041204
// The follows span may be filtered away (or closed), from this layer,
12051205
// in which case we just drop the data, as opposed to panicking. This
12061206
// uses the same reasoning as `parent_context` above.
12071207
if let Some(follows_span) = ctx.span(follows) {
12081208
let mut follows_extensions = follows_span.extensions_mut();
1209-
let follows_data = follows_extensions
1210-
.get_mut::<OtelData>()
1211-
.expect("Missing otel data span extensions");
1209+
let Some(follows_data) = follows_extensions.get_mut::<OtelData>() else {
1210+
return; // The span must already have been closed by us
1211+
};
12121212
let follows_context =
12131213
self.with_started_cx(follows_data, &|cx| cx.span().span_context().clone());
12141214
match &mut data.state {

0 commit comments

Comments
 (0)