Skip to content

Commit 3645391

Browse files
committed
Avoid allocating a closure for ActivityMappingById.GetOrAdd if we can avoid it
1 parent 301a07c commit 3645391

File tree

1 file changed

+9
-1
lines changed

1 file changed

+9
-1
lines changed

tracer/src/Datadog.Trace/Activity/Handlers/ActivityHandlerCommon.cs

Lines changed: 9 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -176,15 +176,23 @@ public static void ActivityStarted<T>(string sourceName, T activity, OpenTelemet
176176
return;
177177
}
178178

179+
#if NETCOREAPP
180+
// Avoid closure allocation if we can
181+
activityMapping = ActivityMappingById.GetOrAdd(
182+
activityKey.Value,
183+
static (_, details) => new(details.activity.Instance!, CreateScopeFromActivity(details.activity, details.tags, details.parent, details.traceId, details.spanId, details.rawTraceId, details.rawSpanId)),
184+
(activity, tags, parent, traceId, spanId, rawTraceId, rawSpanId));
185+
#else
179186
activityMapping = ActivityMappingById.GetOrAdd(activityKey.Value, _ => new(activity.Instance!, CreateScopeFromActivity(activity, tags, parent, traceId, spanId, rawTraceId, rawSpanId)));
187+
#endif
180188
}
181189
catch (Exception ex)
182190
{
183191
Log.Error(ex, "Error processing the OnActivityStarted callback");
184192
activityMapping = default;
185193
}
186194

187-
static Scope CreateScopeFromActivity(T activity, ITags? tags, SpanContext? parent, TraceId traceId, ulong spanId, string? rawTraceId, string? rawSpanId)
195+
static Scope CreateScopeFromActivity(T activity, OpenTelemetryTags? tags, SpanContext? parent, TraceId traceId, ulong spanId, string? rawTraceId, string? rawSpanId)
188196
{
189197
var span = Tracer.Instance.StartSpan(
190198
activity.OperationName,

0 commit comments

Comments
 (0)