datadog 2.28.0 → 2.29.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/CHANGELOG.md +46 -2
- data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +64 -3
- data/ext/datadog_profiling_native_extension/collectors_thread_context.c +23 -4
- data/ext/datadog_profiling_native_extension/collectors_thread_context.h +3 -1
- data/ext/datadog_profiling_native_extension/extconf.rb +5 -0
- data/ext/datadog_profiling_native_extension/heap_recorder.c +183 -51
- data/ext/datadog_profiling_native_extension/heap_recorder.h +12 -1
- data/ext/datadog_profiling_native_extension/stack_recorder.c +34 -5
- data/ext/datadog_profiling_native_extension/stack_recorder.h +2 -1
- data/ext/libdatadog_api/crashtracker.c +5 -0
- data/ext/libdatadog_api/crashtracker_report_exception.c +236 -0
- data/lib/datadog/appsec/assets/blocked.html +2 -1
- data/lib/datadog/appsec/configuration/settings.rb +14 -0
- data/lib/datadog/appsec/context.rb +44 -9
- data/lib/datadog/appsec/contrib/excon/ssrf_detection_middleware.rb +54 -5
- data/lib/datadog/appsec/contrib/faraday/integration.rb +1 -1
- data/lib/datadog/appsec/contrib/faraday/patcher.rb +1 -1
- data/lib/datadog/appsec/contrib/faraday/ssrf_detection_middleware.rb +60 -7
- data/lib/datadog/appsec/contrib/graphql/gateway/multiplex.rb +11 -6
- data/lib/datadog/appsec/contrib/graphql/integration.rb +1 -1
- data/lib/datadog/appsec/contrib/rack/gateway/request.rb +6 -10
- data/lib/datadog/appsec/contrib/rack/request_middleware.rb +1 -3
- data/lib/datadog/appsec/contrib/rails/patches/process_action_patch.rb +2 -0
- data/lib/datadog/appsec/contrib/rest_client/request_ssrf_detection_patch.rb +72 -7
- data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +2 -0
- data/lib/datadog/appsec/counter_sampler.rb +25 -0
- data/lib/datadog/appsec/metrics/telemetry_exporter.rb +18 -0
- data/lib/datadog/appsec/security_engine/engine.rb +23 -2
- data/lib/datadog/appsec/utils/http/body.rb +38 -0
- data/lib/datadog/appsec/utils/http/media_range.rb +2 -1
- data/lib/datadog/appsec/utils/http/media_type.rb +28 -35
- data/lib/datadog/appsec/utils/http/url_encoded.rb +52 -0
- data/lib/datadog/core/configuration/components.rb +29 -4
- data/lib/datadog/core/configuration/supported_configurations.rb +3 -0
- data/lib/datadog/core/configuration.rb +2 -2
- data/lib/datadog/core/crashtracking/component.rb +79 -19
- data/lib/datadog/core/environment/agent_info.rb +65 -1
- data/lib/datadog/core/logger.rb +1 -1
- data/lib/datadog/core/metrics/logging.rb +1 -1
- data/lib/datadog/core/process_discovery.rb +15 -19
- data/lib/datadog/core/rate_limiter.rb +2 -0
- data/lib/datadog/core/remote/component.rb +16 -5
- data/lib/datadog/core/remote/transport/config.rb +5 -11
- data/lib/datadog/core/telemetry/component.rb +0 -13
- data/lib/datadog/core/telemetry/transport/telemetry.rb +5 -6
- data/lib/datadog/core/transport/ext.rb +1 -0
- data/lib/datadog/core/transport/http/response.rb +4 -0
- data/lib/datadog/core/transport/parcel.rb +61 -9
- data/lib/datadog/core/utils/fnv.rb +26 -0
- data/lib/datadog/core.rb +6 -1
- data/lib/datadog/data_streams/processor.rb +34 -33
- data/lib/datadog/data_streams/transport/http/stats.rb +6 -0
- data/lib/datadog/data_streams/transport/http.rb +0 -4
- data/lib/datadog/data_streams/transport/stats.rb +5 -12
- data/lib/datadog/di/component.rb +1 -1
- data/lib/datadog/di/configuration/settings.rb +9 -0
- data/lib/datadog/di/context.rb +6 -0
- data/lib/datadog/di/instrumenter.rb +178 -133
- data/lib/datadog/di/probe.rb +10 -1
- data/lib/datadog/di/probe_file_loader.rb +2 -2
- data/lib/datadog/di/probe_manager.rb +7 -2
- data/lib/datadog/di/probe_notification_builder.rb +29 -8
- data/lib/datadog/di/probe_notifier_worker.rb +13 -3
- data/lib/datadog/di/proc_responder.rb +4 -0
- data/lib/datadog/di/remote.rb +2 -2
- data/lib/datadog/di/transport/diagnostics.rb +5 -7
- data/lib/datadog/di/transport/http/diagnostics.rb +3 -1
- data/lib/datadog/di/transport/http/input.rb +1 -1
- data/lib/datadog/di/transport/input.rb +5 -6
- data/lib/datadog/kit/tracing/method_tracer.rb +132 -0
- data/lib/datadog/open_feature/transport.rb +8 -11
- data/lib/datadog/profiling/component.rb +0 -6
- data/lib/datadog/tracing/contrib/http/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +6 -0
- data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +2 -1
- data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +6 -0
- data/lib/datadog/tracing/contrib/pg/instrumentation.rb +2 -1
- data/lib/datadog/tracing/contrib/propagation/sql_comment/ext.rb +10 -0
- data/lib/datadog/tracing/contrib/propagation/sql_comment/mode.rb +5 -1
- data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +24 -0
- data/lib/datadog/tracing/contrib/rack/route_inference.rb +18 -6
- data/lib/datadog/tracing/contrib/registerable.rb +11 -0
- data/lib/datadog/tracing/contrib/sneakers/integration.rb +15 -4
- data/lib/datadog/tracing/contrib/trilogy/configuration/settings.rb +6 -0
- data/lib/datadog/tracing/contrib/trilogy/instrumentation.rb +3 -1
- data/lib/datadog/tracing/transport/io/client.rb +5 -8
- data/lib/datadog/tracing/transport/io/traces.rb +28 -34
- data/lib/datadog/tracing/transport/traces.rb +4 -10
- data/lib/datadog/version.rb +1 -1
- metadata +10 -5
- data/lib/datadog/appsec/contrib/rails/ext.rb +0 -13
|
@@ -13,13 +13,24 @@ module Datadog
|
|
|
13
13
|
class Integration
|
|
14
14
|
include Contrib::Integration
|
|
15
15
|
|
|
16
|
-
|
|
16
|
+
MINIMUM_SNEAKERS_VERSION = Gem::Version.new('2.12.0')
|
|
17
|
+
# All versions are supported. Kicks first version is 3.0.0.
|
|
18
|
+
MINIMUM_KICKS_VERSION = Gem::Version.new('3.0.0')
|
|
17
19
|
|
|
18
20
|
# @public_api Changing the integration name or integration options can cause breaking changes
|
|
19
21
|
register_as :sneakers, auto_patch: true
|
|
20
|
-
|
|
22
|
+
register_alias_for :sneakers, as: :kicks
|
|
23
|
+
|
|
24
|
+
# Sneakers development continues in the Kicks gem.
|
|
25
|
+
# The **only** thing that has changed is the gem name,
|
|
26
|
+
# even the file naming and module namespacing are the same (require 'sneakers', `::Sneakers`).
|
|
27
|
+
#
|
|
28
|
+
# The last version of Sneakers is 2.12.0.
|
|
29
|
+
# The first version of Kicks is 3.0.0. We currently support all versions of Kicks.
|
|
30
|
+
#
|
|
31
|
+
# @see https://github.com/jondot/sneakers/commit/9780692624c666b6db8266d2d5710f709cb0f2e2
|
|
21
32
|
def self.version
|
|
22
|
-
Gem.loaded_specs['sneakers']&.version
|
|
33
|
+
Gem.loaded_specs['sneakers']&.version || Gem.loaded_specs['kicks']&.version
|
|
23
34
|
end
|
|
24
35
|
|
|
25
36
|
def self.loaded?
|
|
@@ -27,7 +38,7 @@ module Datadog
|
|
|
27
38
|
end
|
|
28
39
|
|
|
29
40
|
def self.compatible?
|
|
30
|
-
super && version
|
|
41
|
+
super && !!(version&.>= MINIMUM_SNEAKERS_VERSION)
|
|
31
42
|
end
|
|
32
43
|
|
|
33
44
|
def new_configuration
|
|
@@ -51,6 +51,12 @@ module Datadog
|
|
|
51
51
|
o.default false
|
|
52
52
|
end
|
|
53
53
|
|
|
54
|
+
option :inject_sql_basehash do |o|
|
|
55
|
+
o.type :bool
|
|
56
|
+
o.env Contrib::Propagation::SqlComment::Ext::ENV_DBM_INJECT_SQL_BASEHASH
|
|
57
|
+
o.default false
|
|
58
|
+
end
|
|
59
|
+
|
|
54
60
|
option :peer_service do |o|
|
|
55
61
|
o.type :string, nilable: true
|
|
56
62
|
o.env Ext::ENV_PEER_SERVICE
|
|
@@ -57,7 +57,9 @@ module Datadog
|
|
|
57
57
|
Contrib::SpanAttributeSchema.set_peer_service!(span, Ext::PEER_SERVICE_SOURCES)
|
|
58
58
|
|
|
59
59
|
propagation_mode = Contrib::Propagation::SqlComment::Mode.new(
|
|
60
|
-
comment_propagation,
|
|
60
|
+
comment_propagation,
|
|
61
|
+
datadog_configuration[:append_comment],
|
|
62
|
+
datadog_configuration[:inject_sql_basehash]
|
|
61
63
|
)
|
|
62
64
|
|
|
63
65
|
Contrib::Propagation::SqlComment.annotate!(span, propagation_mode)
|
|
@@ -19,8 +19,11 @@ module Datadog
|
|
|
19
19
|
@out = out
|
|
20
20
|
@encoder = encoder
|
|
21
21
|
|
|
22
|
+
# Note: The :encode option was previously supported but is no longer used.
|
|
23
|
+
# Data is now expected to be pre-encoded in the Parcel before reaching this client,
|
|
24
|
+
# matching the behavior of other transports (e.g., HTTP transport).
|
|
25
|
+
# If provided, the :encode option will be silently ignored for backwards compatibility.
|
|
22
26
|
@request_block = options.fetch(:request, method(:send_default_request))
|
|
23
|
-
@encode_block = options.fetch(:encode, method(:encode_data))
|
|
24
27
|
@write_block = options.fetch(:write, method(:write_data))
|
|
25
28
|
@response_block = options.fetch(:response, method(:build_response))
|
|
26
29
|
end
|
|
@@ -38,7 +41,6 @@ module Datadog
|
|
|
38
41
|
# Update statistics
|
|
39
42
|
update_stats_from_response!(response)
|
|
40
43
|
|
|
41
|
-
# Return response
|
|
42
44
|
response
|
|
43
45
|
rescue => e
|
|
44
46
|
message =
|
|
@@ -59,10 +61,6 @@ module Datadog
|
|
|
59
61
|
InternalErrorResponse.new(e)
|
|
60
62
|
end
|
|
61
63
|
|
|
62
|
-
def encode_data(encoder, request)
|
|
63
|
-
request.parcel.encode_with(encoder)
|
|
64
|
-
end
|
|
65
|
-
|
|
66
64
|
def write_data(out, data)
|
|
67
65
|
out.puts(data)
|
|
68
66
|
end
|
|
@@ -74,8 +72,7 @@ module Datadog
|
|
|
74
72
|
private
|
|
75
73
|
|
|
76
74
|
def send_default_request(out, request)
|
|
77
|
-
|
|
78
|
-
data = @encode_block.call(encoder, request)
|
|
75
|
+
data = request.parcel.data
|
|
79
76
|
|
|
80
77
|
# Write to IO
|
|
81
78
|
result = @write_block.call(out, data)
|
|
@@ -21,29 +21,6 @@ module Datadog
|
|
|
21
21
|
end
|
|
22
22
|
end
|
|
23
23
|
|
|
24
|
-
# Extensions for HTTP client
|
|
25
|
-
module Client
|
|
26
|
-
def send_traces(traces)
|
|
27
|
-
# Build a request
|
|
28
|
-
req = Transport::Traces::Request.new(Parcel.new(traces))
|
|
29
|
-
|
|
30
|
-
[send_request(req) do |out, request|
|
|
31
|
-
# Encode trace data
|
|
32
|
-
data = encode_data(encoder, request)
|
|
33
|
-
|
|
34
|
-
# Write to IO
|
|
35
|
-
result = if block_given?
|
|
36
|
-
yield(out, data)
|
|
37
|
-
else
|
|
38
|
-
write_data(out, data)
|
|
39
|
-
end
|
|
40
|
-
|
|
41
|
-
# Generate response
|
|
42
|
-
Traces::Response.new(result)
|
|
43
|
-
end]
|
|
44
|
-
end
|
|
45
|
-
end
|
|
46
|
-
|
|
47
24
|
# Encoder for IO-specific trace encoding
|
|
48
25
|
# API compliant when used with {JSONEncoder}.
|
|
49
26
|
module Encoder
|
|
@@ -54,13 +31,13 @@ module Datadog
|
|
|
54
31
|
].freeze
|
|
55
32
|
|
|
56
33
|
# Encodes a list of traces
|
|
57
|
-
def encode_traces(
|
|
34
|
+
def encode_traces(traces)
|
|
58
35
|
trace_hashes = traces.map do |trace|
|
|
59
36
|
encode_trace(trace)
|
|
60
37
|
end
|
|
61
38
|
|
|
62
|
-
# Wrap traces
|
|
63
|
-
|
|
39
|
+
# Wrap traces
|
|
40
|
+
{traces: trace_hashes}
|
|
64
41
|
end
|
|
65
42
|
|
|
66
43
|
private
|
|
@@ -78,17 +55,34 @@ module Datadog
|
|
|
78
55
|
end
|
|
79
56
|
end
|
|
80
57
|
|
|
81
|
-
#
|
|
82
|
-
|
|
83
|
-
include Datadog::Core::Transport::Parcel
|
|
58
|
+
# Extensions for HTTP client
|
|
59
|
+
module Client
|
|
84
60
|
include Encoder
|
|
85
61
|
|
|
86
|
-
def
|
|
87
|
-
|
|
88
|
-
|
|
62
|
+
def send_traces(traces)
|
|
63
|
+
# Build a request
|
|
64
|
+
encoded_traces = encode_traces(traces)
|
|
65
|
+
encoder = Core::Encoding::JSONEncoder
|
|
66
|
+
parcel = Core::Transport::Parcel.new(
|
|
67
|
+
encoder.encode(encoded_traces),
|
|
68
|
+
content_type: encoder.content_type,
|
|
69
|
+
)
|
|
70
|
+
req = Transport::Traces::Request.new(parcel)
|
|
71
|
+
|
|
72
|
+
[send_request(req) do |out, request|
|
|
73
|
+
# Get already-encoded data from parcel
|
|
74
|
+
data = request.parcel.data
|
|
75
|
+
|
|
76
|
+
# Write to IO
|
|
77
|
+
result = if block_given?
|
|
78
|
+
yield(out, data)
|
|
79
|
+
else
|
|
80
|
+
write_data(out, data)
|
|
81
|
+
end
|
|
89
82
|
|
|
90
|
-
|
|
91
|
-
|
|
83
|
+
# Generate response
|
|
84
|
+
Traces::Response.new(result)
|
|
85
|
+
end]
|
|
92
86
|
end
|
|
93
87
|
end
|
|
94
88
|
|
|
@@ -14,19 +14,13 @@ module Datadog
|
|
|
14
14
|
module Transport
|
|
15
15
|
module Traces
|
|
16
16
|
# Data transfer object for encoded traces
|
|
17
|
-
class
|
|
18
|
-
include Datadog::Core::Transport::Parcel
|
|
19
|
-
|
|
17
|
+
class Parcel < Core::Transport::Parcel
|
|
20
18
|
attr_reader :trace_count
|
|
21
19
|
|
|
22
|
-
def initialize(data, trace_count)
|
|
23
|
-
super(data)
|
|
20
|
+
def initialize(data, trace_count:, **opts)
|
|
21
|
+
super(data, **opts)
|
|
24
22
|
@trace_count = trace_count
|
|
25
23
|
end
|
|
26
|
-
|
|
27
|
-
def count
|
|
28
|
-
data.length
|
|
29
|
-
end
|
|
30
24
|
end
|
|
31
25
|
|
|
32
26
|
# Traces request
|
|
@@ -135,7 +129,7 @@ module Datadog
|
|
|
135
129
|
)
|
|
136
130
|
|
|
137
131
|
responses = chunker.encode_in_chunks(traces.lazy).map do |encoded_traces, trace_count|
|
|
138
|
-
request = Request.new(
|
|
132
|
+
request = Request.new(Parcel.new(encoded_traces, trace_count: trace_count))
|
|
139
133
|
|
|
140
134
|
client.send_request(:traces, request).tap do |response|
|
|
141
135
|
if downgrade?(response)
|
data/lib/datadog/version.rb
CHANGED
metadata
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: datadog
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.29.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Datadog, Inc.
|
|
8
8
|
autorequire:
|
|
9
9
|
bindir: bin
|
|
10
10
|
cert_chain: []
|
|
11
|
-
date: 2026-02-
|
|
11
|
+
date: 2026-02-20 00:00:00.000000000 Z
|
|
12
12
|
dependencies:
|
|
13
13
|
- !ruby/object:Gem::Dependency
|
|
14
14
|
name: msgpack
|
|
@@ -169,6 +169,7 @@ files:
|
|
|
169
169
|
- ext/datadog_profiling_native_extension/unsafe_api_calls_check.h
|
|
170
170
|
- ext/libdatadog_api/crashtracker.c
|
|
171
171
|
- ext/libdatadog_api/crashtracker.h
|
|
172
|
+
- ext/libdatadog_api/crashtracker_report_exception.c
|
|
172
173
|
- ext/libdatadog_api/datadog_ruby_common.c
|
|
173
174
|
- ext/libdatadog_api/datadog_ruby_common.h
|
|
174
175
|
- ext/libdatadog_api/ddsketch.c
|
|
@@ -260,7 +261,6 @@ files:
|
|
|
260
261
|
- lib/datadog/appsec/contrib/rack/patcher.rb
|
|
261
262
|
- lib/datadog/appsec/contrib/rack/request_body_middleware.rb
|
|
262
263
|
- lib/datadog/appsec/contrib/rack/request_middleware.rb
|
|
263
|
-
- lib/datadog/appsec/contrib/rails/ext.rb
|
|
264
264
|
- lib/datadog/appsec/contrib/rails/framework.rb
|
|
265
265
|
- lib/datadog/appsec/contrib/rails/gateway/request.rb
|
|
266
266
|
- lib/datadog/appsec/contrib/rails/gateway/watcher.rb
|
|
@@ -281,6 +281,7 @@ files:
|
|
|
281
281
|
- lib/datadog/appsec/contrib/sinatra/patcher.rb
|
|
282
282
|
- lib/datadog/appsec/contrib/sinatra/patches/json_patch.rb
|
|
283
283
|
- lib/datadog/appsec/contrib/sinatra/request_middleware.rb
|
|
284
|
+
- lib/datadog/appsec/counter_sampler.rb
|
|
284
285
|
- lib/datadog/appsec/event.rb
|
|
285
286
|
- lib/datadog/appsec/ext.rb
|
|
286
287
|
- lib/datadog/appsec/extensions.rb
|
|
@@ -310,8 +311,10 @@ files:
|
|
|
310
311
|
- lib/datadog/appsec/utils.rb
|
|
311
312
|
- lib/datadog/appsec/utils/hash_coercion.rb
|
|
312
313
|
- lib/datadog/appsec/utils/http.rb
|
|
314
|
+
- lib/datadog/appsec/utils/http/body.rb
|
|
313
315
|
- lib/datadog/appsec/utils/http/media_range.rb
|
|
314
316
|
- lib/datadog/appsec/utils/http/media_type.rb
|
|
317
|
+
- lib/datadog/appsec/utils/http/url_encoded.rb
|
|
315
318
|
- lib/datadog/auto_instrument.rb
|
|
316
319
|
- lib/datadog/auto_instrument_base.rb
|
|
317
320
|
- lib/datadog/core.rb
|
|
@@ -454,6 +457,7 @@ files:
|
|
|
454
457
|
- lib/datadog/core/utils/at_fork_monkey_patch.rb
|
|
455
458
|
- lib/datadog/core/utils/base64.rb
|
|
456
459
|
- lib/datadog/core/utils/duration.rb
|
|
460
|
+
- lib/datadog/core/utils/fnv.rb
|
|
457
461
|
- lib/datadog/core/utils/forking.rb
|
|
458
462
|
- lib/datadog/core/utils/hash.rb
|
|
459
463
|
- lib/datadog/core/utils/lru_cache.rb
|
|
@@ -539,6 +543,7 @@ files:
|
|
|
539
543
|
- lib/datadog/kit/appsec/events/v2.rb
|
|
540
544
|
- lib/datadog/kit/enable_core_dumps.rb
|
|
541
545
|
- lib/datadog/kit/identity.rb
|
|
546
|
+
- lib/datadog/kit/tracing/method_tracer.rb
|
|
542
547
|
- lib/datadog/open_feature.rb
|
|
543
548
|
- lib/datadog/open_feature/component.rb
|
|
544
549
|
- lib/datadog/open_feature/configuration.rb
|
|
@@ -1097,8 +1102,8 @@ licenses:
|
|
|
1097
1102
|
- Apache-2.0
|
|
1098
1103
|
metadata:
|
|
1099
1104
|
allowed_push_host: https://rubygems.org
|
|
1100
|
-
changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.
|
|
1101
|
-
source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.
|
|
1105
|
+
changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.29.0/CHANGELOG.md
|
|
1106
|
+
source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.29.0
|
|
1102
1107
|
post_install_message:
|
|
1103
1108
|
rdoc_options: []
|
|
1104
1109
|
require_paths:
|