Releases: DataDog/dd-trace-go
v2.2.2
Note
v2.2.0
and v2.2.1
are retracted versions. If you are running one these two versions, please upgrade to v2.2.2
as soon as possible.
Warning
If you are experiencing sporadic spotaneous reboots by running dd-trace-go on Mac M4 15.5 or 15.6. Please upgrade to v2.2.2
as soon as possible. More information in #3827
What's Changed
Application Performance Monitoring (APM)
- fix: bump aws-sdk-go-v2 dependencies to support opensearch by @darccio in #3645
- contrib/go.mongodb.org/mongo-driver.v2: add orchestrion support by @rarguelloF in #3651
- contrib/database/sql: sanitize sensitive data in error messages by @kakkoyun in #3686
- valkey-go: fix orchestrion schema by @eliottness in #3732
- go.mod: upgrade datadog-agent packages to v.0.67.0 by @KevinFairise2 in #3726
- feat: add ruleguard rules to prevent uncontrolled data leakage in logging by @kakkoyun in #3706
- fix: service name configurations by @rarguelloF in #3736
- feat: enable runtime metrics v2 by default by @felixge in #3745
- refactor: replace atomic operations with atomic.Int32 for error tracking in SpanContext by @darccio in #3655
- fix(tracer): Baggage extraction by @mtoffl01 in #3597
- fix(ddtrace/tracer): add test and fix for deadlock issue #3541 in remote configuration by @darccio in #3667
- instrumentation: stop sending telemetry logs for each log a contrib would send to stdout by @eliottness in #3684
- ddtrace/tracer: cap execution tracer task name length by @nsrip-dd in #3658
- contrib/aws: finish span in middleware func where it was created by @chadawagner in #3697
- ddtrace/tracer: sanitize URLs in CI Visibility transport logs by @kakkoyun in #3704
- fix(internal/baggage): fix data race on baggage map read/write by @mtoffl01 in #3700
- ddtrace/tracer: fix remote config memory leak by @ajwerner in #3797
App & API Protection
- appsec: support for go 1.25 by @eliottness in #3739
- appsec: fix a sporadic kernel panic on Mac M4 15.5 by @RomainMuller in DataDog/go-libddwaf#147
- contrib/envoyproxy: body parsing support by @e-n-0 in #3671
- contrib/envoyproxy: Implement API Sec proxy route sampler by @e-n-0 in #3698
- contrib/envoyproxy: update default env vars by @e-n-0 in #3759
- appsec: don't send response schemas if request was blocked by @RomainMuller in #3628
- appsec: set HTTP header span tags even if WAF has no interest in them by @RomainMuller in #3355
- appsec: treat 100.65.0.0/10 as internal IPs by @RomainMuller in #3685
Profiling
- profiler: fix race in refreshing execution trace config by @nsrip-dd in #3659
- profiler: re-introduce
enabled
field to startup log by @mtoffl01 in #3712
Ci Visibility
- fix (internal/civisibility): fix code coverage stdout data race by @tonyredondo in #3674
- fix (internal/civisibility): fix code coverage data race by @tonyredondo in #3662
- fix (internal/civisibility): logs test fix by @tonyredondo in #3653
- fix (internal/civisibility): fix p.serializationTime data race by @tonyredondo in #3668
- fix: data race in civisibility/integrations/logs/logs_payload.go by @darccio in #3666
- fix (internal/civisibility): fix parallel testing when ancilliary features are enabled. by @tonyredondo in #3720
- fix(internal/civisibility): fix the attempt-to-fix-passed tag by @tonyredondo in #3743
- internal/civisibility: add debug logs to the git command execution by @tonyredondo in #3770
- feat(baggage): auto-adding baggage to span tags by @rachelyangdog in #3440
- feat(internal/civisibility): improve telemetry for git commands. by @tonyredondo in #3773
- feat(internal/civisibility): start reporting ci.job.id tag on supported providers. by @tonyredondo in #3776
- feat(internal/civisibility): attempt to fix v5 by @tonyredondo in #3784
- feat(internal/civisibility): update ci provider spec and add DroneCI support by @tonyredondo in #3800
General
- fix: add
@latest
to v2fix install command by @mkusaka in #3654 - Adds a nil check on tracer.AddEvent by @heitoriha in #3657
- internal/telemetry: fix deadlock when recorder queue is full by @eliottness in #3683
- profiler: skip flaky TestDebugCompressionEnv test by @nsrip-dd in #3691
- add recipe for handling flaky tests [LANGPLAT-352] by @emmettbutler in #3682
- internal/stableconfig: Report configuration telemetry by @mtoffl01 in #3570
- fix: sanitize span context debug logging to prevent sensitive data exposure by @kakkoyun in #3703
- fix: orchestrion metadata not propagated into the config object by @RomainMuller in #3734
- internal/remoteconfig: Propagate git metadata tags by @piob-io in #3735
- internal/stableconfig: Report config ID to telemetry by @mtoffl01 in #3617
- Suppress spammy retry attempt logs by @yuandesu in #3747
- instrumentation/errortrace: Improve error stack traces by @hannahkm in #3709
- internal/remoteconfig: Propagate container ids headers by @piob-io in #3794
- tracer: subscribe to and report symbol db RC status by @ajwerner in #3799
- fix: errorstack duration checks failing on Windows by @hannahkm in #3798
New Contributors
- @mkusaka made their first contribution in #3654
- @heitoriha made their first contribution in #3657
- @emmettbutler made their first contribution in #3682
- @chadawagner made their first contribution in #3697
- @KevinFairise2 made their first contribution in #3726
- @piob-io made their first contribution in #3735
- @yuandesu made their first contribution in #3747
- @drodriguezhdez made their first contribution in #3774
- @CarlosNietoP made their first contribution in #3783
- @ajwerner made their first contribution in #3797
Full Changelog: v2.1.0...v2.2.0
v1.74.5
Note
This is the last minor release for v1
. The Go tracer v1 transitional version is a wrapper that preserves the API from v1 but uses v2 under the hood.
This transitional version is the only v1 version that allows both v1 and v2 to be imported in the same service—enabling you to migrate a service gradually. Using this v1 transitional version doesn’t require any code changes, but it also won’t support any new features introduced in the new v2 tracer.
Changes
Updates github.com/DataDog/dd-trace-go/v2
from v2.1.0
to v2.2.2
Full Changelog: v1.74.3...v1.74.5
v1.74.4
Warning
This release has been retracted due to incorrect dd-trace-go/v2
version, use the latest v1.74.x
available instead.
Note
This is the last minor release for v1
. The Go tracer v1 transitional version is a wrapper that preserves the API from v1 but uses v2 under the hood.
This transitional version is the only v1 version that allows both v1 and v2 to be imported in the same service—enabling you to migrate a service gradually. Using this v1 transitional version doesn’t require any code changes, but it also won’t support any new features introduced in the new v2 tracer.
Changes
Updates github.com/DataDog/dd-trace-go/v2
from v2.1.0
to v2.2.2
Full Changelog: v1.74.3...v1.74.4
v2.1.0
Summary
Application Performance Monitoring (APM)
Client-Side Stats Computation
Client-Side Stats computation is now enabled by default. This feature allows the Go tracer to compute aggregated span statistics locally before sending them to the Datadog Agent, resulting in reduced network traffic and improved performance.
What this means: Instead of sending all raw span data to the Agent, the tracer now sends pre-computed statistics, reducing bandwidth usage while maintaining full observability.
To disable, if needed: Set the environment variable DD_TRACE_STATS_COMPUTATION_ENABLED=false
or use tracer.WithStatsComputation(false)
when starting the tracer programmatically.
File-based Configurations
Introduced support for configuring SDK products via a file on the underlying Linux system. #3438 Documentation
Baggage improvements
Fixed a distributed tracing bug in the baggage propagator. Also refactored baggage injection and extraction logic for improved performance and readability. #3439 #3597
Application Security Management (ASM)
contrib envoyproxy/go-control-plane:
- API Security
- Proxy sampler has been implemented for schema generation
- Support of Json body analysis of requests and responses (using simdjson-go or fallbacking on json-iterator/go if not available)
- Appsec
- Support of Envoy observability_mode for async and non-blocking requests analysis
What's Changed
Application Performance Monitoring (APM)
- feat(http): add round tripper option for status check functionality and corresponding tests by @darccio in #3480
- fix: graphql default service name by @rarguelloF in #3547
- fix: revert unexpected changes from v1->v2 by @rarguelloF in #3549
- fix: Add public Version for dd-trace-go for contrib by @e-n-0 in #3599
- fix(ddtrace/tracer): postpone span events/links serialization by @darccio in #3429
- fix(ddtrace/tracer): add finished check on NoDebugStack and WithError code branches by @darccio in #3441
- fix(ddtrace/tracer): replace RLock with Lock for NoDebugStack check to prevent race condition by @darccio in #3446
- fix(ddtrace/tracer): prevent applying rate to finished spans and add test coverage for this finishing code path by @darccio in #3474
- fix(baggage): drop entire baggage header when malformed by @rachelyangdog in #3498
- fix(ddtrace/tracer): fix UDS handling in WithAgentURL (#3553) by @darccio in #3554
- fix(ddtrace/tracer): handle nil options in span configuration functions by @darccio in #3592
- contrib/gorilla/mux: fix orchestrion aspect by @rarguelloF in #3630
- contrib/go.mongodb.org/mongo-driver.v2: add support by @rarguelloF in #3604
- contrib/envoyproxy: add JSON Encoder by @e-n-0 in #3550
- contrib/database/sql: fix race condition by @rarguelloF in #3649
- contrib/aws/aws-sdk-go-v2/aws: Fix dynamodb service inference by @LamineKouissi in #3528
- tracer: fix potential concurrency bug for trace source tag by @genesor in #3442
- tracer: Log a warning on NoopTracer.StartSpan() (#2991) (#3378) by @mtoffl01 in #3449
- sampling: update formula by @genesor in #3423
- ddtrace/tracer: add process tags to client stats payload by @rarguelloF in #3580
- ddtrace/tracer: more accurate retry logging by @jstern in #3327
- refactor(ddtrace/tracer): internalize {Get,Set}GlobalTracer API by @darccio in #3482
- refactor Optimize baggage implementation by @mtoffl01 in #3439
- refactor(ddtrace/tracer): remove Submit method from Tracer interface by @darccio in #3561
- refactor(ddtrace/{tracer,mocktracer}): remove SubmitChunk method fromTracer interface by @darccio in #3562
- refactor(ddtrace/tracer): remove unused Submit and SubmitChunk methods, unexpose Chunk type by @kakkoyun in #3641
- feat: add process tags to tracing payloads by @rarguelloF in #3566
- feat: stats - compute stats after span is fully finished by @ichinaski in #3443
- feat: stats - enable stats computation by default by @ichinaski in #3548
- orchestrion: don't trace the tracer even if tracer.Start(tracer.WithHTTPClient(...)) is called by @eliottness in #3559
- Support file-based configurations (Phase 1) by @mtoffl01 in #3438
- instrumentation: stop sending telemetry logs for each log a contrib would send to stdout by @eliottness #3684
- contrib/database/sql: sanitize sensitive data in error messages by @kakkoyun #3686
- fix(ddtrace/tracer): add test and fix for deadlock issue #3541 in remote configuration by @darccio #3667
- fix(tracer): Baggage extraction by @mtoffl01 #3597
- ddtrace/tracer: cap execution tracer task name length by @nsrip-dd #3658
Application Security Management (ASM)
- appsec: blocking unavailable + update Envoy contrib by @e-n-0 in #3298
- appsec: support route quantization for proxies by @eliottness in #3471
- feat(appsec): HTTP response monitoring SDK by @RomainMuller in #3576
- feat(appsec): contrib/labstack/echo.v4 transparent response body analysis by @RomainMuller in #3578
- feat(appsec): contrib/gin-gonic/gin semi-transparent body analysis by @RomainMuller in #3579
- feat(appsec): support WAF trace tagging rules by @RomainMuller in #3619
- internal/appsec: fix APISec in standalone mode by @eliottness in #3485
- internal/appsec: report libdl_present configuration by @eliottness in #3582
- internal/appsec: report appsec start error by @eliottness in #3631
- ci: update deployment for docker images by @e-n-0 #3613
- contrib/envoyproxy(feat): Implement API Sec proxy route sampler by @e-n-0 #3698
- envoyproxy: body parsing support by @eliottness #3671
- envoyproxy: support simdjson body parsing by @eliottness #3643
- appsec: support for go 1.25 by @eliottness #3739
Profiling
- refactor(profiler): centralize compression logic by @felixge in #3529
- feat(profiler): show config in profile "Runtime Info" tab by @felixge in #3588
- profiler: add process tags to profiling payloads by @rarguelloF in #3583
CI Visibility
- fix (internal/civisibility): Fix features load race condition by @tonyredondo in #3501
- fix (internal/civisibility): Fix environment variable parsing. by @tonyredondo in #3527
- fix (internal/civisibility): use internal code coverage api to get the total percentage. by @tonyredondo in #3540
- fix (internal/civisibility): fix travis environment variables mapping by @tonyredondo in #3573
- fix (internal/civisibility): update the impacted tests algorithm to use only remote branches. by @tonyredondo in #3584
- fix (internal/civisibility): fix code coverage stdout data race by @tonyredondo #3674
- fix (internal/civisibility): fix p.serializationTime data race by @tonyredondo #3668
- fix: data race in civisibility/integrations/logs/logs_payload.go by @darccio #3666
- feat (internal/civisibility): Add missing provider's environment variables. by @tonyredondo in #3514
- feat (internal/civisibility): civisibility mocktracer by @tonyredondo in #3507
- feat (internal/civisibility): Parallel EFD support by @tonyredondo in #3488
- feat (internal/civisibility): Add CIVisibility test event global hook by @tonyredondo in #3531
- feat (internal/civisibility): add support for git tags by @tonyredondo in #3593
- feat (internal/civisibility): Add test logs collection support by @tonyredondo in https://github.com/DataDog/dd-trace-go/pul...
v1.74.3
Note
This is the last minor release for v1
. The Go tracer v1 transitional version is a wrapper that preserves the API from v1 but uses v2 under the hood.
This transitional version is the only v1 version that allows both v1 and v2 to be imported in the same service—enabling you to migrate a service gradually. Using this v1 transitional version doesn’t require any code changes, but it also won’t support any new features introduced in the new v2 tracer.
Changes
Updates github.com/DataDog/dd-trace-go/v2
from v2.0.1
to v2.1.0
Full Changelog: v1.74.2...v1.74.3
v1.73.2
What's Changed
Note
This is a patch release of the last v1
version before the v1 transitional release v1.74.0
planned for May/June 2025. The Go tracer v1 transitional version is essentially a wrapper that preserves the API from v1 but uses v2 under the hood.
The transitional version can co-exist with v2 in the same service, which enables you to migrate services gradually. Using the v1 transitional version - starting at v1.74.0
- doesn’t require any code changes, but it also won’t support any new features of the new v2 tracer.
The v1 transitional version is planned for release in late May/early June 2025 as v1.74.0.
Application Performance Monitoring (APM)
- fix(tracer): Baggage extraction by @mtoffl01 #3692
- fix(internal/baggage): fix data race on baggage map read/write by @mtoffl01 #3721
Full Changelog: v1.73.1...v1.73.2
v1.74.2: v1 transitional version
Note
This is the last minor release for v1
. The Go tracer v1 transitional version is a wrapper that preserves the API from v1 but uses v2 under the hood.
Warning
The v1.62.0 - 1.74.0 go tracer releases included debug logs that sometimes include sensitive data. This patch resolves this behavior.
This transitional version is the only v1 version that allows both v1 and v2 to be imported in the same service—enabling you to migrate a service gradually. Using this v1 transitional version doesn’t require any code changes, but it also won’t support any new features introduced in the new v2 tracer.
Changes
Removes dependencies updates from go.mod
files mistakenly added when releasing v1.74.1
Full Changelog: v1.74.0...v1.74.2
v2.0.1
Summary
Warning
The v2.0.0 go tracer released, as well as versions 1.62.0 - 1.74.0, included debug logs that sometimes include sensitive data. This patch resolves this behavior.
What's Changed
General
- instrumentation: stop sending telemetry logs for each log a contrib would send to stdout by @eliottness in #3684
- instrumentation: do not report debug and info errors as telemetry by @genesor in 56a952b
- contrib/database/sql: sanitize sensitive data in error messages by @kakkoyun in #3686
Full Changelog: v2.0.0...v2.0.1
v1.74.1: v1 transitional version
Warning
This release has been retracted, use the latest v1.74.x
available instead.
Note
This is the last minor release for v1
. The Go tracer v1 transitional version is a wrapper that preserves the API from v1 but uses v2 under the hood.
This transitional version is the only v1 version that allows both v1 and v2 to be imported in the same service—enabling you to migrate a service gradually. Using this v1 transitional version doesn’t require any code changes, but it also won’t support any new features introduced in the new v2 tracer.
Changes
Updates github.com/DataDog/dd-trace-go/v2
from v2.0.0
to v2.0.1
Full Changelog: v1.74.0...v1.74.1
v2.0.0
Warning
This release has been retracted, use the latest v2.x.x
available instead.
Summary
Datadog has long supported the monitoring of instrumented Go applications through our Go tracer v1. As the Go ecosystem has continued to mature, we’ve been hard at work collecting feedback and improving upon the tracer’s capabilities and usability features.
We are now thrilled to announce the release of dd-trace-go v2.0.0. This major update includes better security and stability, and a new and simplified API. In creating this updated version, we have incorporated valuable feedback both from our customer community and from our own teams at Datadog who use the Go tracer extensively. We have already tested this new version in production and have migrated all our internal services.
A migration guide has been provided to help users running version 1.x
with upgrading. It can be found here.
To view the complete set of changes implemented in this release, please refer to the issues and PRs marked with the v2.0 label in our GitHub repository.