Releases: DataDog/dd-trace-go
1.0.0
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
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
andparentID
(#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
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
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
Core
- add
tracer.NewChildSpanFromContext()
to create a new child span from aContext
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
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
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
0.3.0
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
toMux
integration (#40) - Allow custom
SpansBuffer
max size throughSetSpansBufferSize
exported function (#37) - Update documentation (#35 -- docs)
Breaking changes
- Default port
7777
has been replaced with the new8126
available from Datadog Agent 5.11.0 and above (#42)
Read the full changeset.
0.2.0
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
andtracegrpc.UnaryClientInterceptor
to take both a tracer and a service name as arguments. - Populate the
error.type
anderror.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
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
andv0.2
at the time of writing).
Bugfixing
- Update gRPC generated code to latest protobuf version
Read the full changeset