Releases: DataDog/dd-trace-rb
2.8.0
Highlights
Dynamic instrumentation is now available in Ruby as a Preview. Currently only log probes are implemented, and they can be set on both methods and lines. If you are interested in trying out Dynamic Instrumentation for Ruby, please contact Datadog to be added to the Preview program or open a GitHub issue.
Added
- AppSec: Add SQL injection detection for ActiveRecord for following adapters:
mysql2
,postgresql
, andsqlite3
(#4167) - Telemetry: Add environment variable to disable logs (#4153)
- Integrations: Add configuration option
on_error
to Elasticsearch tracing (#4066)
Changed
- Upgrade libdatadog dependency to 14.3.1 (#4196)
- Profiling: Require Ruby 3.1+ for heap profiling (#4178)
- Appsec: Update libddwaf to 1.18.0.0.0 (#4164)
- Single-step: Lower SSI GLIBC requirements down to 2.17 (#4137)
Fixed
- Integrations: Avoid loading
ActiveSupport::Cache::RedisCacheStore
, which tries to loadredis >= 4.0.1
regardless of the version of Redis the host application has installed (#4197) - Profiling: Fix unsafe initialization when using profiler with otel tracing (#4195)
- Single-step: Add safe NOOP injection script for very old rubies (#4140)
Read the full changeset and the release milestone.
2.7.1
2.7.0
Added
- Profiling: Enable "heap clean after GC" profiler optimization by default (#4085)
Changed
Fixed
- Fix
Process.waitall
hanging and stack overflow when crashtracking enabled (#4082)
Read the full changeset and the release milestone.
2.6.0
2.5.0
Highlights
This release contains a fix for Grape instrumentation. Redundant slashes at the beginning of the resource names will be replaced with a single slash. If you have monitors depending on this resource names, please adjust them accordingly.
Before
RackAPI GET //path/with/leading/slash
After
RackAPI GET /path/with/leading/slash
Added
- Performance: Profiling: Add setting to lower heap profiling memory use/latency by cleaning up young objects after Ruby GC (#4020)
Changed
- Core: Replace the
debase-ruby_core_source
gem with thedatadog-ruby_core_source
(#4014) - Core: Upgrade to
libdatadog
13.1 (#3997)
Fixed
- Fix
undefined method
error for Rails runner (#3996) - Apply version tag only to spans that use the global/default service name (#4027)
- Ensure UDS takes precedence over HTTP when both Agent configurations defined (#4024)
- Remove duplicate leading slash in resource name for Grape routes (#4033)
Read the full changeset and the release milestone.
2.4.0
Highlights
- Enable API Catalog for AppSec with added http.route tag
- Add preview support for correlating profiling with otel ruby gem
- Disable crashtracking by default due to an unexpected interaction with the Process.wait family of calls
Allocation Profiling is now GA
As of both version 2.3.0 and 2.4.0 the allocation profiling feature is now generally available.
See our announcement blog post for more details.
You can enable this feature by using the DD_PROFILING_ALLOCATION_ENABLED=true
environment variable, or via code:
Datadog.configure do |c|
# ... existing configuration ...
c.profiling.allocation_enabled = true
end
GVL profiling for Ruby 3.2+ is now in preview
Inspired on "Understanding the Ruby Global VM Lock by observing it"
the profiler is now able to show when threads are waiting for the Ruby GVL.
You'll be able to spot when threads are prevented from working by other "noisy neighbor" threads, including background threads. See #3929 for screenshots and more details. Note that currently this feature requires Ruby 3.2+.
You can enable this feature by using the DD_PROFILING_PREVIEW_GVL_ENABLED=true
environment variable, or via code:
Datadog.configure do |c|
# ... existing configuration ...
c.profiling.advanced.preview_gvl_enabled = true
end
Added
- Core: Allow changing sampling rate for customer defined tags and resources (#3956)
- Profiling: Add GVL profiling for Ruby 3.2+ as a preview feature (#3929)
- Profiling: Otel: Add preview support for correlating profiling with otel ruby gem (#3984)
- Tracing: AppSec: Add http.route tag to Rails, Grape, and Sinatra integrations (#3849)
- Tracing: Add capabilities to remote config: tracing sample rate, tracing logs injection, tracing http header tags (#3888)
- AppSec: Add a force disable of AppSec feature when using Ruby >= 3.3 with old FFI gem version (#3969)
Changed
- AppSec: Improve PII compliance (#3857)
- AppSec: Integrations: Improve accuracy of login tracking for Devise (#3867)
- Crashtracking feature is now disabled by default (#3970)
Fixed
- AppSec: Integrations: Fix GraphQL instrumentation for query fragments (#3887)
- Bug: Profiling: Fix (small) memory leak in profiler when forking (#3852)
- Tracing: Integrations: Fix GraphQL integration reconfiguration (#3859)
Read the full changeset and the release milestone.
2.3.0
Added
- Core: Support agentless telemetry (#3779)
- Tracing: Add support for span events (#3776)
- Tracing: Add tags to enable inferred service dependencies for databases (#3789)
- Tracing: Emit log message and instructions for incompatible Lograge setup (#3812, #3839)
- Tracing: Add
append_comment
option to append SQL comment propagation formysql
,pg
andtrilogy
(#3809) - AppSec: Add threat detection and protection for
graphql
(#3769, #3814)
Changed
- Core: Enable crashtracking by default (#3826)
- Profiling: Reduce allocation overhead (#3805, #3797)
- Profiling: Speed up stack sampling (#3837)
- Profiling: Upgrade to libdatadog 11 (#3799)
- Profiling: Disable allocation counting feature by default (#3798)
- Profiling: Reduce the maximum biased result for allocation samples (#3793)
- Tracing: Reduce noisy integration logs (#3785)
Fixed
- Tracing: Fix
require
issue forgraphql
(#3813) - AppSec: Fix an error when parsing http headers with integer value (#3790)
- AppSec: Fix an error when tracking login failure without
user_id
(#3841) - Fix a syntax error for Ruby < 2.4 during single step instrumentation (#3795)
Read the full changeset and the release milestone.
2.2.0
Added
- Core: Support metrics telemetry (#3734, #3742, #3768)
- Tracing: Add
Rails
Runner instrumentation (#2509) - Tracing: Introduce a new, reworked
GraphQL
tracer to comply with span attributes specification (#3672) - Tracing: Enhance
ActiveSupport::Cache
instrumentation withActiveSupport::Notifications
subscription (#3772) - Profiling: Track unscaled allocation counts in allocation profiler (#3770)
Changed
- Core: Send Telemetry events in batches (#3749)
- Tracing: Populate spans from
ActiveSupport::Notifications
as early as possible (#3725) - Profiling: Upgrade to
libdatadog
10 (#3753) - Profiling: Optimize
CodeProvenance#record_loaded_files
to avoid allocations (#3757)
Fixed
- Core: Fix Telemetry events blocking main thread (#3718)
- Core: Fix deadlock from Telemetry threads (#3743)
- Tracing: Fix empty log correlation when tracing is disabled (#3731)
- Tracing: Fix HTTP propagation when missing parent span id (#3730)
- Tracing: Ensure
_dd.p.tid
tag with fixed size (#3729) - OTel: Fix ids encoding/decoding for propagation (#3709)
- Profiling: Workaround Ruby
Dir
returning incorrect results (#3720) - Profiling: Fix
Phusion Passenger
detection when missing fromGemfile
/gems.rb
(#3750) - Profiling: Fix
rpath
for linking to libdatadog when loading extension (#3706) - Profiling: Fix incorrect code provenance due to broken JSON monkey patch (#3695)
- Profiling: Fix aggregation of actionview template classes (#3759, #3774)
Read the full changeset and the release milestone.