Releases: DataDog/dd-trace-rb
0.11.0 (beta1)
Configuration system
This pre-release includes breaking changes for our configuration system. Our documentation will be updated in the stable release.
0.10.0
Distributed Sampling (beta)
New feature that propagates the sampling priority across services. This ensures traces are always consistent and complete when distributed tracing is used. This new functionality requires at least the Datadog Agent 5.19+. Frameworks and libraries with out-of-the-box propagation are: Rack, Rails, Sinatra, net/http
and Faraday (#248, #245, #229, #249, #254, docs)
Improvements
- [core] add
Datadog::Registry
for better configuration API (#200) - [core] add
Configuration
API for integrations (#203) - [core] migrate
http
to new configuration API (#225) - [core] make
HTTPTransport
compatible with multiple API versions (#228) - [core] improve shutdown process (#253)
New configuration
Introduced a new experimental API that is available for some integrations. The API is still experimental and will be fully available in the next major release (0.11.0). In the meantime you can check some examples for the following integrations:
- Rails (#224)
- Sinatra (#226, #260, docs)
- Sidekiq still use the previous API, though some changes have been done to support the new API (#227)
Bugfixes
- [redis] Updates Redis integration tag/metric (#216)
- [core] handle integrations that don't implement
#patch
(#241) - [resque] removing useless waits when a job ends, using a synchronous writer so the trace is flushed immediately before exiting the process (#252)
!! Breaking changes !!
[sinatra] introducing a new API that replaces the previous approach. This version changed the following:
default_service
has been renamedservice_name
- you don't use
datadog_tracer
configuration object, but directly the newDatadog#configure
If you have a configuration like:
configure do
settings.datadog_tracer.configure default_service: 'my-app', trace_agent_hostname: 'ddagent'
end
now it must be:
Datadog.configure do |c|
c.use :sinatra, service_name: 'my-app', trace_agent_hostname: 'ddagent'
end
Read the full changeset
0.9.2
0.9.1
Improvements
- [rails] use direct instrumentation instead of Rails built-in instrumentation avoiding a level of indirection (#235)
- [core] remove debug logging when the
Pin
instance is retrieved, removing the time spent in this critical path (#233) - [core] add an exponential back-off to our flushing strategy so that the thread will flush less often if the Trace Agent is not available (#239)
- [core] remove duplicate filter on
Trace#trace
(#234)
Bugfixes
- [resque] safe-guard if the
Pin
isnil
(#223, #242 -- thanks @drewbailey) - [resque] cleanup the current
Context
after the process fork to avoid useless Copy-on-Write (#231)
Read the full changeset
0.9.0
New Integrations
- Faraday with Distributed Tracing support (#185, #212, docs)
- AWS SDK client (#179, docs)
- SuckerPunch (#194, docs)
- MongoDB Driver (#177, docs)
- Dalli (#196, docs)
- Resque (#204, docs)
Improvements
- [core] add a Processing Pipeline to filter or update spans before they're flushed (#214, docs)
- [transport] services are flushed in the same loop of traces, made exception if the Hash is empty; the timeout is set every second like before (#201)
- [core] add
Datadog.tracer.shutdown!
method to force sending traces before exiting the process; it's useful when your process exits before the flushing thread finishes to send data to the Datadog Agent (#195)
Bugfixes
- [rails] the template instrumentation works even if unexpected errors are raised; before this led to incomplete / unsent traces (#191)
- [rails] improve safety of
ActionController
instrumentation, making it robust when Rails signals are not executed in the expected order (#197) - [rails] use custom signals for cache instrumentation (#198)
- [rails] add the TraceMiddleware immediately instead of relying in another initializer (#208 -- thanks @Ferdy89 )
Read the full changeset
0.8.2
0.8.1
Minor changes
- Added an opt-out option to not instrument Rails if one wishes to not use it, with the help of @ejholmes (#156, #173)
Bugfixes
- fixed stack traces on Rails errors, with the help of @Ferdy89 (#170, #110)
- fixed instrumentation problem when
ActiveRecord
was not here (#166, contributed by @driv3r) - documentation updates (#138, #164, contributed by @whithajess)
Read the full changeset
0.8.0
New features
- Experimental distributed tracing support. Distributed tracing allows you to connect your traces from different applications, and possibly different languages. This feature is disabled by default. Libraries supporting this are Rack and Net/HTTP (#141, #151 - docs, contributed by @whithajess, @ejholmes and @cabello)
Major changes
- Introduction of a context object, this is a deep refactoring which enables better future support of async behavior, and makes the Ruby library more similar to the Python implementation (#145)
Minor changes
- Jruby is back in our CI chain (#129)
- library is now tested against Ruby 2.4.1 (#159)
- Rails 3.0 support. As this is a deprecated Rails version, our support for this is "best effort". (#154, #157, contributed by @dorner)
- Adds a PID a as tag to root spans, so that you can know which process the trace belongs to (#147).
Breaking changes
Span
constructor does not set thestart_time
any more. The start time is now set when callingstart_span
from theTracer
. This should not have any impact if you either useTracer.trace
or use out-of-the box integrations. The only side-effect is if you were working on a custom integration.- the
finish_at
method of theSpan
object, which was marked as deprecated in0.7.2
, has been completely removed. It can be safely replaced withfinish
, which takes an optional argument.
For example:
span.finish_at(timestamp)
becomes:
span.finish(timestamp)
And if you don't need to give a specific timestamp, this defaults to now
:
span.finish()
Bugfixes
- documentation updates (#136, #144, #146, #152, with the help of @emaiax, @cabello and @tobypinder)
- don't treat http
4xx
return codes as errors (#103. #162, with the help of @sj26) - catch
Exception
and not onlyStandardError
when it makes sense to do so (#120, #158, #160, suggested by @Ferdy89). - limit span and trace IDs to 63 bits (#161)
Special thanks to all contributors, who made this release possible.
Read the full changeset
0.7.2
Bugfixes
- [tracer] ensuring submitted spans belong to the same trace, this fixes a possible data loss with message
dropping trace reason: trace id mismatch
when using threads (#133) - [doc] added missing comma for Rack example, thanks @elyara for fixing this (#130)
Read the full changeset
0.7.1
New features
- it's now possible to configure Sidekiq service on a worker level, contributed by @krasnoukhov (#124, #125)
Minor changes
- a header
X-Datadog-Trace-Count
is now sent when posting payloads to agent, it contains the number of traces in the payload (#123)
Read the full changeset