Skip to content

Releases: DataDog/dd-trace-go

1.0.0

06 Jun 15:16
d052956
Compare
Choose a tag to compare

Summary

The new version of the Datadog tracer provides not only an overhauled core which comes with considerable performance improvements, stability and bug fixes, but also a completely new and improved API. This release marks the beginning of our promise to abide by the standards of semantic versioning within the project. It is the result of continuous feedback from the community as well as our extensive internal usage at Datadog in production.

A migration guide has been provided to help users running version 0.x with upgrading. It can be found here.

The full list of changes can be viewed in the 1.0.0 milestone.

Further reading

0.6.1

19 Jan 15:40
Compare
Choose a tag to compare

New features

  • contrib: add support for gRPC v1.2 (#134)
  • tracer: increase span buffer from 10k to 100k (#136)
  • tracer: dual sampling support, make sure priorities -1 and 2 are handled (#137)
  • opentracing: set Span error when adding error tags (#154)
  • opentracing: allow customizing propagator headers (#155, docs)

Bugfixes

  • tracer: fix encoder race conditions by removing the EncoderPool (#116)
  • tracer: SetTag convert value to string instead of expected a string (#135 -- thanks @chibimi)
  • opentracing: use base10 for traceID and parentID (#140 -- thanks @hamiltop)
  • opentracing: sample propagated spans after setting traceID (#143 -- @shrayolacrayon)
  • opentracing: set tracer in span creation (#149, #150)

Read the full changeset.

0.6.0

06 Dec 10:00
66d30ec
Compare
Choose a tag to compare

OpenTracing API

Datadog APM Go Client 0.6.0 is the first version that implements an OpenTracing API. The library uses a compatibility layer on top of the previous datadog.Tracer implementation, so we're still backward compatible with the previous API. It's highly suggested to start using the new API, since the previous tracer has been planned to be deprecated and removed in the next releases.

Backward compatibility

If you're using the legacy datadog.Tracer, no actions are needed and you can safely jump to this release. What is not supported, is using both APIs in the same project. When an OpenTracing Tracer is initialized, the datadog.DefaultTracer is replaced so integrations can be used as usual with the new API.

To start using the new API, you can take a look at the following references:

Read the full changeset

0.5.1

22 Sep 16:01
Compare
Choose a tag to compare

Bugfixes

  • [sql] remove tlsConfigRegister in MySQL DSN parser (#93 -- thanks @DanielNi!)
  • [redigo] pass along the options argument in TracedDial (#109)
  • [core] use a different Buffer between encoding and flushing to avoid race conditions (#112)

Breaking change

  • [core] fix race condition while accessing DebugLoggingEnabled attribute (#110). The attribute is not exported anymore, so you need to use the API setter/getter:
import 'github.com/DataDog/dd-trace-go/tracer'

// Old API
// t := tracer.DefaultTracer
// t.DebugLoggingEnabled = true
// debugFlag := t.DebugLoggingEnabled

// New API
t := tracer.DefaultTracer
t.SetDebugLogging(true)
debugFlag := t.DebugLoggingEnabled()

Improvements

  • [core] add metadata about language as payload headers (#98)
  • [http] add net/http integration (#102 -- thanks @FreekingDean!)

Project refactoring

To simplify the usage and to make easy to write new and consistent contributions, we started a global refactoring of all contrib modules. This is not a breaking change:

  • improve consistency between contributions (#104)

Read the full changeset.

0.5.0

20 Jul 18:43
Compare
Choose a tag to compare

Core

  • add tracer.NewChildSpanFromContext() to create a new child span from a Context instance (#66)
  • the current process ID is added to root spans (#92)
  • you can now set multiple metas with span.SetMetas() (#88 -- thanks @jbonzo)
  • improved time precision for Windows builds; this change doesn't impact other systems (#80)

Integrations

  • this release introduces one new integration to generate spans from gocql (#73, docs).

Bugfixes

  • avoid sending partials and incomplete traces to the agent (#78, #77)
  • fix NewChildSpanFromContext(): create the span from the current tracer (#86 -- thanks @vbehar)

Improvements

  • [integration] redigo command strings are now complete (#80)
  • [integration] grpc, we now pass over the service name (#67)
  • [integration] elasticsearch, trace the client HTTPClient (#68)

Read the full changeset.

0.4.0

10 May 17:18
Compare
Choose a tag to compare

Core

  • you can now set tags at the tracer level like in python with tracer.SetMeta(key, value) (#56)

Integrations:
This release introduces four new integrations to generate spans from commonly used libraries. Look under https://godoc.org/github.com/DataDog/dd-trace-go/tracer#pkg-subdirectories for more details.

Bugfixes

  • Fix a bug which caused SpanFromContextDefault to panic (#54)

Improvements

  • Use of a single global random number generator, helpfull for generating Span IDs and Trace IDs (#54)
  • Add an X-Datadog-Trace-Count header to outbound payloads as a hint for pre-sampling (#61)

0.3.0

11 Apr 09:24
Compare
Choose a tag to compare

Major changes

  • use a seeded / thread-safe random number generator for Span ids. This number generator is used internally to avoid deterministic ids after each restart (#48)

Bugfixes

  • fixed race condition on Enabled attribute (#43)

Improvements

  • Add http.url to Mux integration (#40)
  • Allow custom SpansBuffer max size through SetSpansBufferSize exported function (#37)
  • Update documentation (#35 -- docs)

Breaking changes

  • Default port 7777 has been replaced with the new 8126 available from Datadog Agent 5.11.0 and above (#42)

Read the full changeset.

0.2.0

09 Jan 08:41
Compare
Choose a tag to compare

Major changes

  • Add NewTransport to create a transport that sends traces to a specific
    host and port.
  • Add (*tracer.Tracer).SetServiceInfo to define services.
  • Define services for gin-gonic, gorilla and grpc integrations.
  • Update tracegrpc.UnaryServerInterceptor and tracegrpc.UnaryClientInterceptor to take both a tracer and a service name as arguments.
  • Populate the error.type and error.stack tags for error spans.
  • Mark request spans as errors for 5xx status codes with gorilla/mux.

Bugfixing

  • Fix context key to make it compatible with gin-gonic contexts.

Read the full changeset

0.1.0

12 Dec 20:10
Compare
Choose a tag to compare

Major changes

  • providing support to msgpack encoding format
  • using MsgpackEncoder as a default encoder to serialize the payload sent to the trace agent
  • if an old version of the agent is used, the encoder is switched at runtime downgrading the API and the Encoder to the previous stable versions (JSONEncoder and v0.2 at the time of writing).

Bugfixing

  • Update gRPC generated code to latest protobuf version

Read the full changeset