Skip to content

Releases: DataDog/dd-trace-go

v2.9.1

Choose a tag to compare

@darccio darccio released this 26 Jun 09:57
v2.9.1
f5f7068

Application Performance Monitoring (APM)

  • Revert "fix(ddtrace/tracer): cache trace ID hex encoding (#4481)" by @darccio

Application Security Management (ASM)

  • perf(appsec): make rate limiter synchronous to remove idle goroutine cost by @eliottness in #4956

CI Visibility

  • fix(internal/civisibility): fix known-tests API pagination by @tonyredondo in #4824
  • feat(ci-visibility): cache Go read requests and add git upload kill switch by @tonyredondo in #4786
  • fix(internal/civisibility): fix agent UDS requests by @tonyredondo in #4852
  • fix(civisibility): truncate CI Visibility meta values by @tonyredondo in #4853

Full Changelog: v2.9.0...v2.9.1

v2.9.0

Choose a tag to compare

@mtoffl01 mtoffl01 released this 19 Jun 14:19
v2.9.0
927a1f0

Summary

Application Performance Monitoring (APM)

twmb/franz-go integration

Adds a new contrib package providing tracing for the twmb/franz-go Kafka client. #4250

Trace context propagation hardening

Adds validation and explicit limits on incoming trace context headers:

  • Baggage extraction enforces per-item and total byte limits. #4720
  • dd= list-entries over 256 bytes are dropped from incoming tracestate. #4721
  • x-datadog-tags extraction uses the configurable MaxTagsHeaderLen. #4727

Service name origin signaling

Adds svc.user/svc.auto process tags so consumers can distinguish whether a service name was user-configured vs. auto-detected. #4725

Application Security Management (ASM)

RFC-1012 ASM tags, metrics, and logs consolidation

Closes remaining gaps in the RFC-1012 ASM observability consolidation effort across tags, metrics, and logs. #4708

LLM Observability

Multi-run experiments

Adds support for running LLM evaluation experiments across multiple iterations. #4660

FlushSync API

Adds an internal FlushSync capability for forcing synchronous flush of LLM Observability data — useful for tests and short-lived processes. #4695

Profiling

gzip-compressed profile uploads

The profiler now supports gzip compression mode for profile payloads. #4696 #4697

CI Visibility

Performance and reliability improvements across the board: caching for test-metadata / impacted-test decisions / CODEOWNERS lookups, hardening of Go retry edge cases and parallel-test safety, and reduced overhead in the test wrapper. See the CI Visibility section below for the full list.

What's Changed

Application Performance Monitoring (APM)

  • fix(contrib): fix batch race condition in pgx.v5 by @mtoffl01 in #4669
  • fix(contrib/aws/datadog-lambda): sort the logs to compare by @darccio in #4677
  • fix(contrib/aws/aws-sdk-go-v2): skip _datadog attribute if batch size larger than 262144-byte payload limit by @darccio in #4665
  • chore: address govulncheck alerts by @hannahkm in #4681
  • feat(contrib): add twmb/franz-go integration by @igoragoli in #4250
  • fix(contrib/99designs/gqlgen): bump to v0.17.90, adjust tests accordingly by @darccio in #4702
  • fix(contrib/mark3labs/mcp-go): bump buger/jsonparser to v1.1.2 by @darccio in #4715
  • feat(tracer): add svc.user/svc.auto process tags to signal service name origin by @amarziali in #4725
  • fix(deps): bump klauspost/compress to v1.18.6 by @darccio in #4751
  • feat(ddtrace/tracer): promote span fields out of meta map into a typed SpanAttributes struct by @darccio in #4538
  • fix(tracer): skip stats concentrator in OTLP export mode by @mtoffl01 in #4609
  • fix(tracer): enforce baggage item and byte limits on extraction by @mtoffl01 in #4720
  • fix(tracer): drop dd= list-entries over 256 bytes from incoming tracestate by @mtoffl01 in #4721
  • fix(tracer): use configurable MaxTagsHeaderLen for x-datadog-tags extraction by @mtoffl01 in #4727
  • perf(ddtrace/tracer): snapshot config in StartSpan to avoid RWMutex contention by @mtoffl01 in #4713
  • fix(ddtrace/tracer): wire version on aggregation key when adding a span to client-side stats by @darccio in #4737

Application Security Management (ASM)

  • feat(appsec): RFC-1012 ASM Tags, Metrics & Logs Consolidation gap closure by @RomainMuller in #4708

CI Visibility

  • perf(internal/civisibility): cache SetTestFunc source metadata by @tonyredondo in #4691
  • perf(internal/civisibility): cache testing field offsets by @tonyredondo in #4698
  • perf(internal/civisibility): cache CODEOWNERS discovery misses by @tonyredondo in #4699
  • perf(internal/civisibility): cache impacted-test decisions by @tonyredondo in #4701
  • perf(internal/civisibility): reuse missing commit list by @tonyredondo in #4703
  • fix(internal/civisibility): resolve trimpath source files by @tonyredondo in #4706
  • fix(ci-visibility): avoid Go FailNow teardown by @tonyredondo in #4717
  • fix(internal/civisibility): make parallel tests safe across retries by @tonyredondo in #4722
  • fix(ci-visibility): harden Go retry edge cases by @tonyredondo in #4731
  • fix(ci-visibility): harden review edge cases by @tonyredondo in #4735
  • fix(ci-visibility): reduce Go test wrapper overhead by @tonyredondo in #4738
  • fix(internal/civisibility): avoid tests-only race condition on CIVis reset by @darccio in #4744
  • fix(ci-visibility): harden mocktracer, HTTP bodies, and EFD skips by @tonyredondo in #4745
  • fix(internal/civisibility): propagate ITR tests-skipping enabled tag by @anmarchenko in #4736

LLM Observability

Profiling

  • fix(profiler): support gzip compression mode by @felixge in #4696
  • chore(profiler): better compression testing and minor fixes by @felixge in #4697

General

  • fix: labelling ecosystems workflow would fail by @hannahkm in #4670
  • ci(macrobenchmarks): integrate apm-sdks-benchmarks configurations by @faydef in #4663
  • ci: unpin system-tests (back to @main) by @nccatoni in #4667
  • fix(internal/telemetry): don't use default dependency loader in telemetry tests by @darccio in #4673
  • fix(internal/telemetry): don't use default dependency loader in telemetry tests (2) by @darccio in #4676
  • fix: DDCI was complaining about a missing job by @hannahkm in #4687
  • fix: old GitLab CI images were not signed by @hannahkm in #4686
  • feat: move govulncheck workflow to use slack webhook by @hannahkm in #4679
  • fix(scripts): ensure that generate and fix-modules to include transitive dd-trace-go packages by @darccio in #4675
  • docs(security): add wording of transitive dependancies by @TamaraLewis in #4672
  • fix: smoke tests fail on proxy issues by @hannahkm in #4693
  • chore(ci): govulncheck - use official golang/govulncheck-action for SARIF analysis by @kakkoyun in #4599
  • feat: alert slack on smoke test failures by @hannahkm in #4707
  • refactor(config): migrate spanAttributeSchemaVersion by @funyjane in #4711
  • chore(ci): run all system-tests scenario even if empty when running on master/sc… by @nccatoni in #4690
  • ci(codeql): add main to push.branches to unfreeze default-branch status by @kakkoyun in #4704
  • refactor(config): create a new DD_API_KEY config on internal/config by @mtoffl01 in #4712
  • refactor(config): migrate maxTagsHeaderLen by @mtoffl01 in #4730
  • ci(benchmarks): Parellelize microbenchmarks, deprecate dependency on benchmarking-platform repo by @ddyurchenko in #4718
  • ci(benchmarks): Fix wrong CI image link for macrobenchmarks by @ddyurchenko in #4739
  • fix: strip unused process tags by @raphaelgavache in #4742
  • feat: ad...
Read more

v2.8.2

Choose a tag to compare

@darccio darccio released this 15 May 15:22
v2.8.2
58cadb5

What's Changed

General

  • fix(ddtrace/tracer): wire version on aggregation key when adding a span to client-side stats by @darccio in #4734

Full Changelog: v2.8.1...v2.8.2

v2.8.1

Choose a tag to compare

@darccio darccio released this 05 May 17:44
v2.8.1
2b2b2c2

Application Performance Monitoring (APM)

  • Revert "fix(ddtrace/tracer): cache trace ID hex encoding (#4481)" by @darccio
  • fix(tracer): enforce baggage item and byte limits on extraction by @mtoffl01 in #4720
  • fix(tracer): drop dd= list-entries over 256 bytes from incoming tracestate by @mtoffl01 in #4721

Full Changelog: v2.8.0...v2.8.1

v2.8.0

Choose a tag to compare

@darccio darccio released this 04 May 09:47
v2.8.0
0399c36

Summary

New integrations. Two new integrations land in this release: Azure API Management (APIM) callout processor for security (#4620), and twmb/franz-go for Kafka (#4250).

Data Streams Monitoring. All three major Kafka integrations — confluent-kafka-go (#4470), segmentio/kafka-go (#4477), and Sarama (#4560) — now attach kafka_cluster_id for cluster-level visibility. TrackDataStreamsTransaction also gains span tagging and custom timestamp support (#4499).

OpenTelemetry (OTel) and OTLP. The tracer can now export traces directly via the OpenTelemetry Protocol (OTLP), bypassing the Datadog Agent entirely (#4600, #4583). OTel process context v2 (OTLP proto format) is supported (#4478), and the parentbased_always_on sampler works in OTLP mode (#4567).

Large Language Model (LLM) Observability. Prompt tracking is now available for LLMObs spans (#4608). Experiment scope propagates from APM baggage into spans automatically (#4651).

Profiler. An experimental goroutine leak profile is available as opt-in (#4420). The goroutine wait profile type has been removed — this is a breaking change for anyone using it explicitly (#4589).

HTTP and tracing. A new environment variable DD_TRACE_HTTP_URL_QUERY_STRING_ALLOWLIST lets you whitelist query string parameters to keep unredacted (#4562). A new tracer.StartSpanFromPropagatedContext API simplifies span creation from propagated contexts (#4492). AWS EventBridge max payload size is bumped to 1 MB (#4458). Envoy Service Extensions integration gains Unix Domain Socket (UDS) support (#4463).

OpenFeature. Flag evaluation metrics now emit via OTel Metrics (#4489), with allocation key tagging (#4515) and Remote Configuration (RC) integration via FFE_FLAGS subscription at tracer startup (#4495).

Bug fixes. gorm now respects DD_TRACE_REMOVE_INTEGRATION_SERVICE_NAMES_ENABLED (#4618). Redis and Valkey pipeline commands are joined with newlines, fixing agent obfuscation (#4593). A race condition in HTTP client trace timings is resolved (#4591). AppSec block responses now include a correct Content-Length header (#4496), and spurious Remote Configuration errors are silenced when RC is disabled (#4612). ContextWithSpan no longer panics on nil context (#4313). The OTel bridge preserves keep/drop sampling decisions for unsampled spans (#4631). User-provided DogStatsD addresses now correctly take priority over defaults (#4575).

Performance. Trace ID hex encoding is cached (#4481), the span metadata map is preallocated (#4541), and locking is removed from both sampling priority access (#4546) and the internal logger (#4547) — reducing allocations and contention on hot paths.

CI Visibility. Bazel offline cache and payload-file modes are supported (#4503). Known test pagination is implemented for large test suites (#4509).

What's Changed

Application Performance Monitoring (APM)

  • feat: collect service override source by @raphaelgavache in #4500
  • feat: support service source for 19 integrations by @raphaelgavache in #4526
  • feat: support service source for 13integrations by @raphaelgavache in #4534
  • feat: add service source on 10 integrations by @raphaelgavache in #4540
  • feat: force usage of ServiceWithSource in contrib by @raphaelgavache in #4549
  • fix(eventbridge): update max payload size to 1m by @Dogbu-cyber in #4458
  • feat(telemetry): add stable session identifier headers by @khanayan123 in #4574
  • feat: collect service source in client stats by @raphaelgavache in #4519
  • feat: OTel process context v2 (otlp proto) by @nsavoire in #4478
  • fix: join redis and valkey pipeline commands with newlines for correct agent obfuscation by @rarguelloF in #4593
  • fix(http): Prevent concurrent read/writes on http client trace timings by @mtoffl01 in #4591
  • feat(contrib): add Azure APIM callout security processor by @eliottness in #4620
  • feat(envoyproxy/serviceextensions): add Unix domain socket support by @eliottness in #4463
  • feat(httptrace): add query string parameter allowlist via DD_TRACE_HTTP_URL_QUERY_STRING_ALLOWLIST by @genesor in #4562
  • fix(gorm): respect DD_TRACE_REMOVE_INTEGRATION_SERVICE_NAMES_ENABLED by @rarguelloF in #4618
  • feat(contrib/apim-callout): Deploy to Azure button + production hardening by @eliottness in #4641
  • feat(contrib/valkey-io): bump valkey-go and add SetOnInvalidations wrapper by @Scorfly in #4657
  • feat(contrib/redis/rueidis): add SetOnInvalidations to dedicatedClient by @darccio in #4659
  • fix(ddtrace/tracer): reduce UDS connection resets under agent backpressure by @kakkoyun in #4484
  • fix(ddtrace/tracer): cache trace ID hex encoding by @darccio in #4481
  • fix: remove duplicate span tags and test cases in rueidis and valkey-go by @snutiise in #4510
  • fix: stack and handling_stack were not aligned with ET by @hannahkm in #4529
  • fix(ddtrace/tracer): avoid race on TestTracerPrioritySampler by @darccio in #4490
  • fix(tracer): eliminate IEEE 754 flakes in TestSamplingDecision by @darccio in #4530
  • feat(ddtrace/tracer): preallocate span meta map to reduce growth cycles by @darccio in #4541
  • fix(ddtrace/tracer): fix BenchmarkSpanStartConcurrent by @nsrip-dd in #4539
  • chore(profiler): remove testHooks and runProfile from tests by @nsrip-dd in #4533
  • fix(ddtracer/tracer): reuse scratch buffer on ETP's encoding for metastruct by @darccio in #4544
  • feat(tracer): periodically poll agent /info endpoint for dynamic capability updates by @kakkoyun in #4451
  • feat(ddtrace/tracer): reduce allocations on ETP/v1 trace protocol by @darccio in #4497
  • fix(tracer): Fix outdated references to tracer.config agentURL and traceProtocol fields by @mtoffl01 in #4565
  • fix(tracer): only set _dd.p.ksr after agent rates are received by @bm1549 in #4523
  • fix(internal/orchestrion): fix span parenting with GSL by @darccio in #4528
  • feat(otel): Implement parentbased_always_on in otlp mode by @mtoffl01 in #4567
  • fix(tracer): skip JSON span-links serialization when using v1 protocol by @darccio in #4573
  • feat(ddtrace/tracer): remove locking on sampling priority access by @darccio in #4546
  • fix(ddtrace/tracer): pre-compute _dd.p.dm numeric value at write-time by @darccio in #4576
  • fix(ddtrace/tracer): check DD_TRACE_128_BIT_TRACEID_GENERATION_ENABLED once, use a global bool by @darccio in #4548
  • fix(tracer): pass prioritySampler in agentTraceWriter ...
Read more

v2.7.4

Choose a tag to compare

@nsrip-dd nsrip-dd released this 01 May 14:16
v2.7.4
5f46997

What's Changed

General

Full Changelog: v2.7.3...v2.7.4

v2.7.3

Choose a tag to compare

@darccio darccio released this 17 Apr 15:15
v2.7.3
dc57de6

Application Performance Monitoring (APM)

  • feat(contrib/valkey-io): bump valkey-go and add SetOnInvalidations wrapper by @Scorfly in #4657
  • feat(contrib/redis/rueidis): add SetOnInvalidations to dedicatedClient by @darccio in #4659

Full Changelog: v2.7.2...v2.7.3

v2.7.2

Choose a tag to compare

@genesor genesor released this 14 Apr 15:34
20b4eea

What's Changed

Application Performance Monitoring (APM)

  • fix(tracer): preserve keep/drop possibility for OTel bridge on unsampled spans
    by @genesor in #4631 (cherry-picked in ed4ba63)

Full Changelog: v2.7.1...v2.7.2

v2.6.1

Choose a tag to compare

@genesor genesor released this 14 Apr 15:13
6d1ed74

What's Changed

Application Performance Monitoring (APM)

  • fix(tracer): preserve keep/drop possibility for OTel bridge on unsampled spans
    by @genesor in #4631 (cherry-picked in c9e8383)

Full Changelog: v2.6.0...v2.6.1

v2.7.1

Choose a tag to compare

@hannahkm hannahkm released this 30 Mar 20:17
v2.7.1
38865fe

What's Changed

  • fix(internal/telemetry): avoid flakiness on telemetry tests; pin localstack/localstack by @darccio in #4581
  • feat(openfeature): subscribe to FFE_FLAGS during tracer RC setup by @leoromanovsky in #4495
  • chore: fix all vulnerabilities by @hannahkm in #4532
  • fix(internal/orchestrion): fix span parenting with GSL by @darccio in #4528
  • fix(internal/civisibility): fix orchestrion deadlock with parallel subtests by @tonyredondo in #4554
  • fix: upgrade nats, grpc, and mcp by @hannahkm #4619

Full Changelog: v2.7.0...v2.7.1