Skip to content

Commit 77f86a1

Browse files
[mq] working branch - merge 4062818 on top of main at e334908
{"baseBranch":"main","baseCommit":"e3349082ecb3db03a872e6ce8b5dfcbbe7d7707a","createdAt":"2026-01-26T20:56:59.255058Z","headSha":"4062818ac05298805280acc07343f4c045300876","id":"bdfd7f11-1343-4e75-ad77-c25d90168f16","priority":"200","pullRequestNumber":"4371","queuedAt":"2026-01-26T20:56:59.253950Z","status":"STATUS_QUEUED"}
2 parents 6aff2db + 4062818 commit 77f86a1

File tree

1 file changed

+33
-28
lines changed
  • contrib/aws/datadog-lambda-go/internal/trace

1 file changed

+33
-28
lines changed

contrib/aws/datadog-lambda-go/internal/trace/listener.go

Lines changed: 33 additions & 28 deletions
Original file line numberDiff line numberDiff line change
@@ -53,8 +53,7 @@ var tracerInitialized = false
5353

5454
// MakeListener initializes a new trace lambda Listener
5555
func MakeListener(config Config, extensionManager *extension.ExtensionManager) Listener {
56-
57-
return Listener{
56+
l := Listener{
5857
ddTraceEnabled: config.DDTraceEnabled,
5958
mergeXrayTraces: config.MergeXrayTraces,
6059
universalInstrumentation: config.UniversalInstrumentation,
@@ -63,9 +62,40 @@ func MakeListener(config Config, extensionManager *extension.ExtensionManager) L
6362
traceContextExtractor: config.TraceContextExtractor,
6463
tracerOptions: config.TracerOptions,
6564
}
65+
66+
if l.ddTraceEnabled && !tracerInitialized {
67+
l.initTracer()
68+
}
69+
70+
return l
71+
}
72+
73+
func (l *Listener) initTracer() {
74+
serviceName := os.Getenv("DD_SERVICE")
75+
if serviceName == "" {
76+
serviceName = internal.Instr.ServiceName(instrumentation.ComponentDefault, instrumentation.OperationContext{})
77+
}
78+
extensionNotRunning := !l.extensionManager.IsExtensionRunning()
79+
opts := append([]ddtracer.StartOption{
80+
ddtracer.WithService(serviceName),
81+
ddtracer.WithLambdaMode(extensionNotRunning),
82+
ddtracer.WithGlobalTag("_dd.origin", "lambda"),
83+
ddtracer.WithSendRetries(2),
84+
}, l.tracerOptions...)
85+
if l.otelTracerEnabled {
86+
provider := ddotel.NewTracerProvider(
87+
opts...,
88+
)
89+
otel.SetTracerProvider(provider)
90+
} else {
91+
ddtracer.Start(
92+
opts...,
93+
)
94+
}
95+
tracerInitialized = true
6696
}
6797

68-
// HandlerStarted sets up tracing and starts the function execution span if Datadog tracing is enabled
98+
// HandlerStarted starts the function execution span if Datadog tracing is enabled
6999
func (l *Listener) HandlerStarted(ctx context.Context, msg json.RawMessage) context.Context {
70100
if !l.ddTraceEnabled {
71101
return ctx
@@ -77,31 +107,6 @@ func (l *Listener) HandlerStarted(ctx context.Context, msg json.RawMessage) cont
77107

78108
ctx, _ = contextWithRootTraceContext(ctx, msg, l.mergeXrayTraces, l.traceContextExtractor)
79109

80-
if !tracerInitialized {
81-
serviceName := os.Getenv("DD_SERVICE")
82-
if serviceName == "" {
83-
serviceName = internal.Instr.ServiceName(instrumentation.ComponentDefault, instrumentation.OperationContext{})
84-
}
85-
extensionNotRunning := !l.extensionManager.IsExtensionRunning()
86-
opts := append([]ddtracer.StartOption{
87-
ddtracer.WithService(serviceName),
88-
ddtracer.WithLambdaMode(extensionNotRunning),
89-
ddtracer.WithGlobalTag("_dd.origin", "lambda"),
90-
ddtracer.WithSendRetries(2),
91-
}, l.tracerOptions...)
92-
if l.otelTracerEnabled {
93-
provider := ddotel.NewTracerProvider(
94-
opts...,
95-
)
96-
otel.SetTracerProvider(provider)
97-
} else {
98-
ddtracer.Start(
99-
opts...,
100-
)
101-
}
102-
tracerInitialized = true
103-
}
104-
105110
isDdServerlessSpan := l.universalInstrumentation && l.extensionManager.IsExtensionRunning()
106111
functionExecutionSpan, ctx = startFunctionExecutionSpan(ctx, l.mergeXrayTraces, isDdServerlessSpan)
107112

0 commit comments

Comments
 (0)