Skip to content

Commit ca346ba

Browse files
authored
Add possibility to extend tracer options (#173)
1 parent b144b55 commit ca346ba

File tree

2 files changed

+11
-3
lines changed

2 files changed

+11
-3
lines changed

ddlambda.go

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,12 +18,14 @@ import (
1818
"strings"
1919
"time"
2020

21+
"github.com/aws/aws-lambda-go/lambda"
22+
"gopkg.in/DataDog/dd-trace-go.v1/ddtrace/tracer"
23+
2124
"github.com/DataDog/datadog-lambda-go/internal/extension"
2225
"github.com/DataDog/datadog-lambda-go/internal/logger"
2326
"github.com/DataDog/datadog-lambda-go/internal/metrics"
2427
"github.com/DataDog/datadog-lambda-go/internal/trace"
2528
"github.com/DataDog/datadog-lambda-go/internal/wrapper"
26-
"github.com/aws/aws-lambda-go/lambda"
2729
)
2830

2931
type (
@@ -71,6 +73,8 @@ type (
7173
// TraceContextExtractor is the function that extracts a root/parent trace context from the Lambda event body.
7274
// See trace.DefaultTraceExtractor for an example.
7375
TraceContextExtractor trace.ContextExtractor
76+
// TracerOptions are additional options passed to the tracer.
77+
TracerOptions []tracer.StartOption
7478
}
7579
)
7680

@@ -214,6 +218,7 @@ func (cfg *Config) toTraceConfig() trace.Config {
214218
traceConfig.DDTraceEnabled = cfg.DDTraceEnabled
215219
traceConfig.MergeXrayTraces = cfg.MergeXrayTraces
216220
traceConfig.TraceContextExtractor = cfg.TraceContextExtractor
221+
traceConfig.TracerOptions = cfg.TracerOptions
217222
}
218223

219224
if traceConfig.TraceContextExtractor == nil {

internal/trace/listener.go

Lines changed: 5 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ type (
3434
otelTracerEnabled bool
3535
extensionManager *extension.ExtensionManager
3636
traceContextExtractor ContextExtractor
37+
tracerOptions []tracer.StartOption
3738
}
3839

3940
// Config gives options for how the Listener should work
@@ -43,6 +44,7 @@ type (
4344
UniversalInstrumentation bool
4445
OtelTracerEnabled bool
4546
TraceContextExtractor ContextExtractor
47+
TracerOptions []tracer.StartOption
4648
}
4749
)
4850

@@ -61,6 +63,7 @@ func MakeListener(config Config, extensionManager *extension.ExtensionManager) L
6163
otelTracerEnabled: config.OtelTracerEnabled,
6264
extensionManager: extensionManager,
6365
traceContextExtractor: config.TraceContextExtractor,
66+
tracerOptions: config.TracerOptions,
6467
}
6568
}
6669

@@ -82,12 +85,12 @@ func (l *Listener) HandlerStarted(ctx context.Context, msg json.RawMessage) cont
8285
serviceName = "aws.lambda"
8386
}
8487
extensionNotRunning := !l.extensionManager.IsExtensionRunning()
85-
opts := []tracer.StartOption{
88+
opts := append([]tracer.StartOption{
8689
tracer.WithService(serviceName),
8790
tracer.WithLambdaMode(extensionNotRunning),
8891
tracer.WithGlobalTag("_dd.origin", "lambda"),
8992
tracer.WithSendRetries(2),
90-
}
93+
}, l.tracerOptions...)
9194
if l.otelTracerEnabled {
9295
provider := ddotel.NewTracerProvider(
9396
opts...,

0 commit comments

Comments
 (0)