Releases: DataDog/dd-trace-go
v2.2.3
What's Changed
This patch release fixes a significant bug that caused dropped spans due to local sampling rules overriding the sampling decision already present in inbound distributed trace context.
Important
Depending on your sampling rules, and especially if you have trace sampling rules,, you may notice an increase in ingested spans. This increase is expected and the consequence of not applying trace sampling rules when there is a head sampling decision. If the ingested volume is problematic, reduce it using APM Ingestion Controls. For any questions or issues, please contact Datadog Support.
Application Performance Monitoring (APM)
- fix(ddtrace/tracer): keep correct trace+span sampling with propagated sampling decision by @darccio in #3856
- chore: update the remoteconfig dependency by @andreimatei in #3883
Full Changelog: v2.2.2...v2.2.3
v1.74.6
What's Changed
This patch release fixes a significant bug that caused dropped spans due to local sampling rules overriding the sampling decision already present in inbound distributed trace context.
Important
Depending on your sampling rules, and especially if you have trace sampling rules,, you may notice an increase in ingested spans. This increase is expected and the consequence of not applying trace sampling rules when there is a head sampling decision. If the ingested volume is problematic, reduce it using APM Ingestion Controls. For any questions or issues, please contact Datadog Support.
Application Performance Monitoring (APM)
- fix(ddtrace/tracer): keep correct trace+span sampling with propagated sampling decision by @darccio in #3856
- chore: update the remoteconfig dependency by @andreimatei in #3883
Full Changelog: v1.74.5...v1.74.6
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