datadog 2.36.0 → 2.38.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 +74 -1
- data/ext/datadog_profiling_native_extension/clock_id_from_mach.c +5 -12
- data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +29 -18
- data/ext/datadog_profiling_native_extension/collectors_idle_sampling_helper.c +17 -3
- data/ext/datadog_profiling_native_extension/collectors_stack.c +19 -24
- data/ext/datadog_profiling_native_extension/collectors_stack.h +0 -1
- data/ext/datadog_profiling_native_extension/collectors_thread_context.c +348 -213
- data/ext/datadog_profiling_native_extension/collectors_thread_context.h +3 -0
- data/ext/datadog_profiling_native_extension/extconf.rb +11 -3
- data/ext/datadog_profiling_native_extension/private_vm_api_access.c +5 -0
- data/ext/datadog_profiling_native_extension/private_vm_api_access.h +2 -0
- data/ext/datadog_profiling_native_extension/ruby_helpers.c +7 -0
- data/ext/datadog_profiling_native_extension/time_helpers.h +12 -7
- data/ext/libdatadog_api/di.c +76 -0
- data/ext/libdatadog_api/extconf.rb +6 -0
- data/ext/libdatadog_extconf_helpers.rb +1 -1
- data/lib/datadog/ai_guard/api_client.rb +6 -4
- data/lib/datadog/appsec/api_security/route_extractor.rb +7 -4
- data/lib/datadog/appsec/configuration.rb +6 -0
- data/lib/datadog/appsec/context.rb +4 -2
- data/lib/datadog/appsec/contrib/excon/ssrf_detection_middleware.rb +59 -4
- data/lib/datadog/appsec/contrib/faraday/ssrf_detection_middleware.rb +59 -5
- data/lib/datadog/appsec/contrib/graphql/gateway/multiplex.rb +1 -1
- data/lib/datadog/appsec/contrib/rack/gateway/request.rb +5 -0
- data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +4 -0
- data/lib/datadog/appsec/contrib/rack/input_peeker.rb +4 -17
- data/lib/datadog/appsec/contrib/rack/request_middleware.rb +21 -0
- data/lib/datadog/appsec/contrib/rails/gateway/request.rb +7 -1
- data/lib/datadog/appsec/contrib/rest_client/request_ssrf_detection_patch.rb +60 -7
- data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +4 -0
- data/lib/datadog/appsec/ext.rb +1 -0
- data/lib/datadog/appsec/metrics/collector.rb +18 -1
- data/lib/datadog/appsec/metrics/exporter.rb +9 -3
- data/lib/datadog/appsec/remote.rb +9 -3
- data/lib/datadog/appsec/route_normalizer/rails_route_pattern.rb +176 -0
- data/lib/datadog/appsec/route_normalizer/route_pattern.rb +378 -0
- data/lib/datadog/appsec/route_normalizer/route_text.rb +57 -0
- data/lib/datadog/appsec/route_normalizer.rb +80 -0
- data/lib/datadog/appsec/utils/http/body_reader.rb +61 -0
- data/lib/datadog/core/configuration/agentless_settings_resolver.rb +2 -2
- data/lib/datadog/core/configuration/components.rb +82 -2
- data/lib/datadog/core/configuration/components_state.rb +6 -1
- data/lib/datadog/core/configuration/settings.rb +4 -7
- data/lib/datadog/core/configuration/supported_configurations.rb +3 -0
- data/lib/datadog/core/evp.rb +11 -0
- data/lib/datadog/core/knuth_sampler.rb +3 -1
- data/lib/datadog/core/metrics/client.rb +1 -1
- data/lib/datadog/core/remote/client/capabilities.rb +34 -7
- data/lib/datadog/core/telemetry/event/app_started.rb +8 -1
- data/lib/datadog/core/transport/http/builder.rb +1 -1
- data/lib/datadog/core/utils/at_fork_monkey_patch.rb +1 -1
- data/lib/datadog/core/utils/time.rb +5 -1
- data/lib/datadog/di/base.rb +3 -1
- data/lib/datadog/di/boot.rb +3 -0
- data/lib/datadog/di/capture_expression.rb +21 -0
- data/lib/datadog/di/capture_expression_evaluator.rb +71 -0
- data/lib/datadog/di/capture_limits.rb +41 -0
- data/lib/datadog/di/code_tracker.rb +5 -2
- data/lib/datadog/di/component.rb +112 -38
- data/lib/datadog/di/configuration.rb +6 -0
- data/lib/datadog/di/context.rb +9 -3
- data/lib/datadog/di/el/compiler.rb +1 -1
- data/lib/datadog/di/error.rb +10 -0
- data/lib/datadog/di/fatal_exceptions.rb +26 -0
- data/lib/datadog/di/instrumenter.rb +412 -165
- data/lib/datadog/di/probe.rb +61 -2
- data/lib/datadog/di/probe_builder.rb +83 -1
- data/lib/datadog/di/probe_file_loader.rb +8 -3
- data/lib/datadog/di/probe_manager.rb +67 -9
- data/lib/datadog/di/probe_notification_builder.rb +52 -8
- data/lib/datadog/di/probe_notifier_worker.rb +52 -32
- data/lib/datadog/di/redactor.rb +16 -1
- data/lib/datadog/di/remote.rb +176 -15
- data/lib/datadog/di/serializer.rb +34 -15
- data/lib/datadog/di/transport/input.rb +8 -4
- data/lib/datadog/di.rb +63 -0
- data/lib/datadog/kit/appsec/events/v2.rb +60 -2
- data/lib/datadog/open_feature/component.rb +29 -6
- data/lib/datadog/open_feature/configuration.rb +8 -0
- data/lib/datadog/open_feature/ext.rb +2 -0
- data/lib/datadog/open_feature/flag_evaluation/aggregator.rb +286 -0
- data/lib/datadog/open_feature/flag_evaluation/writer.rb +433 -0
- data/lib/datadog/open_feature/hooks/flag_eval_evp_hook.rb +101 -0
- data/lib/datadog/open_feature/hooks/{flag_eval_hook.rb → flag_eval_metrics_hook.rb} +1 -1
- data/lib/datadog/open_feature/native_evaluator.rb +22 -0
- data/lib/datadog/open_feature/provider.rb +59 -27
- data/lib/datadog/open_feature/transport.rb +55 -1
- data/lib/datadog/opentelemetry/sdk/logs_exporter.rb +5 -12
- data/lib/datadog/opentelemetry/sdk/metrics_exporter.rb +4 -11
- data/lib/datadog/opentelemetry/sdk.rb +19 -0
- data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +6 -1
- data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +5 -3
- data/lib/datadog/profiling/collectors/thread_context.rb +9 -1
- data/lib/datadog/profiling/component.rb +17 -0
- data/lib/datadog/symbol_database/component.rb +164 -47
- data/lib/datadog/symbol_database/configuration.rb +12 -4
- data/lib/datadog/symbol_database/extensions.rb +19 -0
- data/lib/datadog/symbol_database/extractor.rb +124 -87
- data/lib/datadog/symbol_database/file_hash.rb +3 -1
- data/lib/datadog/symbol_database/remote.rb +8 -3
- data/lib/datadog/symbol_database/scope_batcher.rb +7 -3
- data/lib/datadog/symbol_database/uploader.rb +9 -2
- data/lib/datadog/symbol_database.rb +22 -0
- data/lib/datadog/tracing/contrib/active_job/data_streams.rb +62 -0
- data/lib/datadog/tracing/contrib/active_job/patcher.rb +12 -0
- data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +2 -3
- data/lib/datadog/tracing/contrib/pg/instrumentation.rb +12 -12
- data/lib/datadog/tracing/contrib/rack/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/sequel/utils.rb +2 -2
- data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +1 -1
- data/lib/datadog/tracing/contrib/sinatra/framework.rb +1 -1
- data/lib/datadog/tracing/distributed/baggage.rb +2 -1
- data/lib/datadog/tracing/ext.rb +9 -0
- data/lib/datadog/tracing/remote.rb +34 -3
- data/lib/datadog/tracing/transport/trace_formatter.rb +1 -1
- data/lib/datadog/version.rb +1 -1
- data/lib/datadog.rb +1 -0
- metadata +25 -8
|
@@ -0,0 +1,62 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative '../../../data_streams'
|
|
4
|
+
require_relative 'ext'
|
|
5
|
+
|
|
6
|
+
module Datadog
|
|
7
|
+
module Tracing
|
|
8
|
+
module Contrib
|
|
9
|
+
module ActiveJob
|
|
10
|
+
# Propagates Data Streams Monitoring pathway context through the serialized
|
|
11
|
+
# job payload, allowing produce (enqueue) and consume (perform) checkpoints
|
|
12
|
+
# to be connected across the process boundary.
|
|
13
|
+
#
|
|
14
|
+
# The DSM calls are rescued in isolation so a checkpoint failure can never
|
|
15
|
+
# break a job, while a genuine error raised by the underlying serialization
|
|
16
|
+
# still propagates.
|
|
17
|
+
#
|
|
18
|
+
# Only prepended on ActiveJob 5.0+, where `serialize`/`deserialize` are instance
|
|
19
|
+
# methods the framework routes through. ActiveJob 4.2 deserializes via a class
|
|
20
|
+
# method, so the pathway cannot be propagated there.
|
|
21
|
+
module DataStreams
|
|
22
|
+
def serialize
|
|
23
|
+
job_data = super
|
|
24
|
+
return job_data unless Datadog::DataStreams.enabled?
|
|
25
|
+
|
|
26
|
+
begin
|
|
27
|
+
Datadog::DataStreams.set_produce_checkpoint(
|
|
28
|
+
type: Ext::TAG_COMPONENT,
|
|
29
|
+
destination: queue_name,
|
|
30
|
+
auto_instrumentation: true
|
|
31
|
+
) do |key, value|
|
|
32
|
+
job_data[key] = value
|
|
33
|
+
end
|
|
34
|
+
rescue => e
|
|
35
|
+
Datadog.logger.debug { "Error setting DSM produce checkpoint: #{e.class}: #{e.message}" }
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
job_data
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def deserialize(job_data)
|
|
42
|
+
super
|
|
43
|
+
|
|
44
|
+
return unless Datadog::DataStreams.enabled?
|
|
45
|
+
|
|
46
|
+
begin
|
|
47
|
+
Datadog::DataStreams.set_consume_checkpoint(
|
|
48
|
+
type: Ext::TAG_COMPONENT,
|
|
49
|
+
source: queue_name,
|
|
50
|
+
auto_instrumentation: true
|
|
51
|
+
) do |key|
|
|
52
|
+
job_data[key]
|
|
53
|
+
end
|
|
54
|
+
rescue => e
|
|
55
|
+
Datadog.logger.debug { "Error setting DSM consume checkpoint: #{e.class}: #{e.message}" }
|
|
56
|
+
end
|
|
57
|
+
end
|
|
58
|
+
end
|
|
59
|
+
end
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
@@ -1,6 +1,7 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require_relative '../patcher'
|
|
4
|
+
require_relative 'data_streams'
|
|
4
5
|
require_relative 'ext'
|
|
5
6
|
require_relative 'events'
|
|
6
7
|
require_relative 'log_injection'
|
|
@@ -22,6 +23,7 @@ module Datadog
|
|
|
22
23
|
def patch
|
|
23
24
|
Events.subscribe!
|
|
24
25
|
inject_log_correlation
|
|
26
|
+
inject_data_streams
|
|
25
27
|
end
|
|
26
28
|
|
|
27
29
|
def inject_log_correlation
|
|
@@ -33,6 +35,16 @@ module Datadog
|
|
|
33
35
|
end
|
|
34
36
|
end
|
|
35
37
|
end
|
|
38
|
+
|
|
39
|
+
def inject_data_streams
|
|
40
|
+
# ActiveJob 4.2 deserializes jobs through a class method rather than the
|
|
41
|
+
# instance method, so the DSM pathway can only be propagated on 5.0+.
|
|
42
|
+
return if ::ActiveJob.gem_version < Gem::Version.new('5.0.0')
|
|
43
|
+
|
|
44
|
+
::ActiveSupport.on_load(:active_job) do
|
|
45
|
+
prepend DataStreams
|
|
46
|
+
end
|
|
47
|
+
end
|
|
36
48
|
end
|
|
37
49
|
end
|
|
38
50
|
end
|
|
@@ -18,10 +18,9 @@ module Datadog
|
|
|
18
18
|
|
|
19
19
|
def supported?
|
|
20
20
|
Gem.loaded_specs['active_model_serializers'] \
|
|
21
|
-
&&
|
|
22
|
-
|
|
21
|
+
&&
|
|
22
|
+
Gem.loaded_specs['active_model_serializers'].version >= Gem::Version.new('0.9') \
|
|
23
23
|
&& Gem.loaded_specs['active_model_serializers'].version < Gem::Version.new('0.10')
|
|
24
|
-
)
|
|
25
24
|
end
|
|
26
25
|
|
|
27
26
|
def event_name
|
|
@@ -28,19 +28,19 @@ module Datadog
|
|
|
28
28
|
end
|
|
29
29
|
end
|
|
30
30
|
|
|
31
|
-
def exec_params(sql,
|
|
31
|
+
def exec_params(sql, *args, &block)
|
|
32
32
|
return super unless enabled?
|
|
33
33
|
|
|
34
34
|
trace(Ext::SPAN_EXEC_PARAMS, sql: sql, block: block) do |sql_statement, wrapped_block|
|
|
35
|
-
super(sql_statement,
|
|
35
|
+
super(sql_statement, *args, &wrapped_block)
|
|
36
36
|
end
|
|
37
37
|
end
|
|
38
38
|
|
|
39
|
-
def exec_prepared(statement_name,
|
|
39
|
+
def exec_prepared(statement_name, *args, &block)
|
|
40
40
|
return super unless enabled?
|
|
41
41
|
|
|
42
42
|
trace(Ext::SPAN_EXEC_PREPARED, statement_name: statement_name, block: block) do |_, wrapped_block|
|
|
43
|
-
super(statement_name,
|
|
43
|
+
super(statement_name, *args, &wrapped_block)
|
|
44
44
|
end
|
|
45
45
|
end
|
|
46
46
|
|
|
@@ -54,20 +54,20 @@ module Datadog
|
|
|
54
54
|
end
|
|
55
55
|
|
|
56
56
|
# async_exec_params is an alias to exec_params
|
|
57
|
-
def async_exec_params(sql,
|
|
57
|
+
def async_exec_params(sql, *args, &block)
|
|
58
58
|
return super unless enabled?
|
|
59
59
|
|
|
60
60
|
trace(Ext::SPAN_ASYNC_EXEC_PARAMS, sql: sql, block: block) do |sql_statement, wrapped_block|
|
|
61
|
-
super(sql_statement,
|
|
61
|
+
super(sql_statement, *args, &wrapped_block)
|
|
62
62
|
end
|
|
63
63
|
end
|
|
64
64
|
|
|
65
65
|
# async_exec_prepared is an alias to exec_prepared
|
|
66
|
-
def async_exec_prepared(statement_name,
|
|
66
|
+
def async_exec_prepared(statement_name, *args, &block)
|
|
67
67
|
return super unless enabled?
|
|
68
68
|
|
|
69
69
|
trace(Ext::SPAN_ASYNC_EXEC_PREPARED, statement_name: statement_name, block: block) do |_, wrapped_block|
|
|
70
|
-
super(statement_name,
|
|
70
|
+
super(statement_name, *args, &wrapped_block)
|
|
71
71
|
end
|
|
72
72
|
end
|
|
73
73
|
|
|
@@ -79,19 +79,19 @@ module Datadog
|
|
|
79
79
|
end
|
|
80
80
|
end
|
|
81
81
|
|
|
82
|
-
def sync_exec_params(sql,
|
|
82
|
+
def sync_exec_params(sql, *args, &block)
|
|
83
83
|
return super unless enabled?
|
|
84
84
|
|
|
85
85
|
trace(Ext::SPAN_SYNC_EXEC_PARAMS, sql: sql, block: block) do |sql_statement, wrapped_block|
|
|
86
|
-
super(sql_statement,
|
|
86
|
+
super(sql_statement, *args, &wrapped_block)
|
|
87
87
|
end
|
|
88
88
|
end
|
|
89
89
|
|
|
90
|
-
def sync_exec_prepared(statement_name,
|
|
90
|
+
def sync_exec_prepared(statement_name, *args, &block)
|
|
91
91
|
return super unless enabled?
|
|
92
92
|
|
|
93
93
|
trace(Ext::SPAN_SYNC_EXEC_PREPARED, statement_name: statement_name, block: block) do |_, wrapped_block|
|
|
94
|
-
super(statement_name,
|
|
94
|
+
super(statement_name, *args, &wrapped_block)
|
|
95
95
|
end
|
|
96
96
|
end
|
|
97
97
|
|
|
@@ -56,7 +56,7 @@ module Datadog
|
|
|
56
56
|
end
|
|
57
57
|
end
|
|
58
58
|
|
|
59
|
-
following = (middleware.instance_variable_get(
|
|
59
|
+
following = (middleware.instance_variable_get(:@app) if middleware.instance_variable_defined?(:@app))
|
|
60
60
|
|
|
61
61
|
retain_middleware_name(following)
|
|
62
62
|
end
|
|
@@ -34,8 +34,8 @@ module Datadog
|
|
|
34
34
|
|
|
35
35
|
def parse_opts(sql, opts, db_opts, dataset = nil)
|
|
36
36
|
# Prepared statements don't provide their sql query in the +sql+ parameter.
|
|
37
|
-
if !sql.is_a?(String) &&
|
|
38
|
-
|
|
37
|
+
if !sql.is_a?(String) && dataset&.respond_to?(:prepared_sql) &&
|
|
38
|
+
(resolved_sql = dataset.prepared_sql)
|
|
39
39
|
# The dataset contains the resolved SQL query and prepared statement name.
|
|
40
40
|
prepared_name = dataset.prepared_statement_name
|
|
41
41
|
sql = resolved_sql
|
|
@@ -69,7 +69,7 @@ module Datadog
|
|
|
69
69
|
|
|
70
70
|
args = job['args']
|
|
71
71
|
if args && !args.empty?
|
|
72
|
-
span.set_tag(Ext::TAG_JOB_ARGS, Contrib::Utils::Quantization::HashFormatter.format(args,
|
|
72
|
+
span.set_tag(Ext::TAG_JOB_ARGS, Contrib::Utils::Quantization::HashFormatter.format(args, @quantize[:args] || {}))
|
|
73
73
|
end
|
|
74
74
|
|
|
75
75
|
yield
|
|
@@ -81,7 +81,7 @@ module Datadog
|
|
|
81
81
|
# The block gets passed prepared arguments for the caller to decide
|
|
82
82
|
# how to insert.
|
|
83
83
|
def self.insert_middleware(builder, middleware, args, block)
|
|
84
|
-
use = builder.instance_variable_get(
|
|
84
|
+
use = builder.instance_variable_get(:@use)
|
|
85
85
|
wrapped = wrap_middleware(middleware, *args, &block)
|
|
86
86
|
|
|
87
87
|
# Makes the insert idempotent
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require_relative '../ext'
|
|
3
4
|
require_relative '../metadata/ext'
|
|
4
5
|
require_relative '../trace_digest'
|
|
5
6
|
require_relative 'datadog_tags_codec'
|
|
@@ -243,7 +244,7 @@ module Datadog
|
|
|
243
244
|
# Record telemetry metrics for baggage operations
|
|
244
245
|
def record_telemetry_metric(metric_name, value, tags)
|
|
245
246
|
telemetry = ::Datadog.send(:components).telemetry
|
|
246
|
-
telemetry.inc(
|
|
247
|
+
telemetry.inc(Tracing::Ext::TELEMETRY_METRICS_NAMESPACE, metric_name, value, tags: tags)
|
|
247
248
|
end
|
|
248
249
|
end
|
|
249
250
|
end
|
|
@@ -15,6 +15,9 @@ module Datadog
|
|
|
15
15
|
1 << 13, # APM_TRACING_LOGS_INJECTION: Dynamic trace logs injection configuration
|
|
16
16
|
1 << 14, # APM_TRACING_HTTP_HEADER_TAGS: Dynamic trace HTTP header tags configuration
|
|
17
17
|
1 << 29, # APM_TRACING_SAMPLE_RULES: Dynamic trace sampling rules configuration
|
|
18
|
+
# APM_TRACING_ENABLE_DYNAMIC_INSTRUMENTATION (bit 38) is declared in
|
|
19
|
+
# DI::Remote.capabilities, not here, so it is registered only when DI
|
|
20
|
+
# is not explicitly disabled and the runtime supports DI.
|
|
18
21
|
].freeze
|
|
19
22
|
|
|
20
23
|
def products
|
|
@@ -25,7 +28,7 @@ module Datadog
|
|
|
25
28
|
CAPABILITIES
|
|
26
29
|
end
|
|
27
30
|
|
|
28
|
-
def process_config(config, content)
|
|
31
|
+
def process_config(config, content, repository = nil)
|
|
29
32
|
lib_config = config['lib_config']
|
|
30
33
|
|
|
31
34
|
env_vars = Datadog::Tracing::Configuration::Dynamic::OPTIONS.map do |name, env_var, option|
|
|
@@ -39,9 +42,37 @@ module Datadog
|
|
|
39
42
|
[env_var, value]
|
|
40
43
|
end
|
|
41
44
|
|
|
45
|
+
if (di_enabled = lib_config['dynamic_instrumentation_enabled']) != nil # rubocop:disable Style/NonNilCheck
|
|
46
|
+
# repository is forwarded so that an enable signal can reconcile DI
|
|
47
|
+
# against probes delivered in an earlier poll while DI was stopped
|
|
48
|
+
# (see Datadog::DI::Remote.handle_rc_enablement).
|
|
49
|
+
Datadog::DI::Remote.handle_rc_enablement(di_enabled, repository)
|
|
50
|
+
|
|
51
|
+
if di_enabled
|
|
52
|
+
# DI was just (implicitly) enabled. A Symbol Database upload signal
|
|
53
|
+
# received in an earlier poll while DI was inactive was deferred by
|
|
54
|
+
# the component's DI-active gate; re-attempt it now. Mirrors the DI
|
|
55
|
+
# probe replay in handle_rc_enablement above. allow_initialization:
|
|
56
|
+
# false because this runs on the remote-config worker thread.
|
|
57
|
+
Datadog.send(:components, allow_initialization: false)&.symbol_database&.resume_pending_upload
|
|
58
|
+
else
|
|
59
|
+
# DI was disabled via remote configuration. In the nil-default
|
|
60
|
+
# (follows-DI) case, stop Symbol Database too so its TracePoint and
|
|
61
|
+
# scheduler don't keep uploading while DI is off. An explicit
|
|
62
|
+
# symbol_database.enabled = true is independent and keeps running.
|
|
63
|
+
Datadog.send(:components, allow_initialization: false)&.symbol_database&.stop_for_di_disable
|
|
64
|
+
end
|
|
65
|
+
end
|
|
66
|
+
|
|
42
67
|
content.applied
|
|
43
68
|
|
|
44
|
-
|
|
69
|
+
# allow_initialization: false because process_config runs on the
|
|
70
|
+
# remote-config worker thread. If components haven't been built yet
|
|
71
|
+
# (e.g. during a teardown/reset window), the default `true` would
|
|
72
|
+
# synchronously build the entire component tree from this thread.
|
|
73
|
+
# The &. chain matches the pattern used by DI::Remote.handle_rc_enablement
|
|
74
|
+
# in the same dispatch path.
|
|
75
|
+
Datadog.send(:components, allow_initialization: false)&.telemetry&.client_configuration_change!(env_vars)
|
|
45
76
|
rescue => e
|
|
46
77
|
content.errored("#{e.class}: #{e.message}: #{Array(e.backtrace).join("\n")}")
|
|
47
78
|
end
|
|
@@ -55,7 +86,7 @@ module Datadog
|
|
|
55
86
|
case content.path.product
|
|
56
87
|
when PRODUCT
|
|
57
88
|
config = parse_content(content)
|
|
58
|
-
process_config(config, content)
|
|
89
|
+
process_config(config, content, repository)
|
|
59
90
|
end
|
|
60
91
|
end
|
|
61
92
|
end
|
|
@@ -117,7 +117,7 @@ module Datadog
|
|
|
117
117
|
|
|
118
118
|
root_span.set_tag(
|
|
119
119
|
Tracing::Metadata::Ext::Distributed::TAG_KNUTH_SAMPLING_RATE,
|
|
120
|
-
format('%.6f', (rate * 1e6).round / 1e6
|
|
120
|
+
format('%.6f', (rate * 1e6).round / 1e6).sub(/\.?0+\z/, '')
|
|
121
121
|
)
|
|
122
122
|
end
|
|
123
123
|
|
data/lib/datadog/version.rb
CHANGED
data/lib/datadog.rb
CHANGED
|
@@ -12,6 +12,7 @@ require_relative 'datadog/profiling'
|
|
|
12
12
|
require_relative 'datadog/ai_guard'
|
|
13
13
|
require_relative 'datadog/appsec'
|
|
14
14
|
require_relative 'datadog/di'
|
|
15
|
+
require_relative 'datadog/symbol_database/extensions'
|
|
15
16
|
require_relative 'datadog/data_streams'
|
|
16
17
|
require_relative 'datadog/open_feature'
|
|
17
18
|
|
metadata
CHANGED
|
@@ -1,7 +1,7 @@
|
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
|
2
2
|
name: datadog
|
|
3
3
|
version: !ruby/object:Gem::Version
|
|
4
|
-
version: 2.
|
|
4
|
+
version: 2.38.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Datadog, Inc.
|
|
@@ -32,7 +32,7 @@ dependencies:
|
|
|
32
32
|
version: '3.5'
|
|
33
33
|
- - ">="
|
|
34
34
|
- !ruby/object:Gem::Version
|
|
35
|
-
version: 3.5.
|
|
35
|
+
version: 3.5.3
|
|
36
36
|
type: :runtime
|
|
37
37
|
prerelease: false
|
|
38
38
|
version_requirements: !ruby/object:Gem::Requirement
|
|
@@ -42,7 +42,7 @@ dependencies:
|
|
|
42
42
|
version: '3.5'
|
|
43
43
|
- - ">="
|
|
44
44
|
- !ruby/object:Gem::Version
|
|
45
|
-
version: 3.5.
|
|
45
|
+
version: 3.5.3
|
|
46
46
|
- !ruby/object:Gem::Dependency
|
|
47
47
|
name: libddwaf
|
|
48
48
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -63,14 +63,14 @@ dependencies:
|
|
|
63
63
|
requirements:
|
|
64
64
|
- - "~>"
|
|
65
65
|
- !ruby/object:Gem::Version
|
|
66
|
-
version:
|
|
66
|
+
version: 36.0.0.1.0
|
|
67
67
|
type: :runtime
|
|
68
68
|
prerelease: false
|
|
69
69
|
version_requirements: !ruby/object:Gem::Requirement
|
|
70
70
|
requirements:
|
|
71
71
|
- - "~>"
|
|
72
72
|
- !ruby/object:Gem::Version
|
|
73
|
-
version:
|
|
73
|
+
version: 36.0.0.1.0
|
|
74
74
|
- !ruby/object:Gem::Dependency
|
|
75
75
|
name: logger
|
|
76
76
|
requirement: !ruby/object:Gem::Requirement
|
|
@@ -316,6 +316,10 @@ files:
|
|
|
316
316
|
- lib/datadog/appsec/rate_limiter.rb
|
|
317
317
|
- lib/datadog/appsec/remote.rb
|
|
318
318
|
- lib/datadog/appsec/response.rb
|
|
319
|
+
- lib/datadog/appsec/route_normalizer.rb
|
|
320
|
+
- lib/datadog/appsec/route_normalizer/rails_route_pattern.rb
|
|
321
|
+
- lib/datadog/appsec/route_normalizer/route_pattern.rb
|
|
322
|
+
- lib/datadog/appsec/route_normalizer/route_text.rb
|
|
319
323
|
- lib/datadog/appsec/sample_rate.rb
|
|
320
324
|
- lib/datadog/appsec/security_engine.rb
|
|
321
325
|
- lib/datadog/appsec/security_engine/engine.rb
|
|
@@ -328,6 +332,7 @@ files:
|
|
|
328
332
|
- lib/datadog/appsec/utils/hash_coercion.rb
|
|
329
333
|
- lib/datadog/appsec/utils/http.rb
|
|
330
334
|
- lib/datadog/appsec/utils/http/body.rb
|
|
335
|
+
- lib/datadog/appsec/utils/http/body_reader.rb
|
|
331
336
|
- lib/datadog/appsec/utils/http/media_range.rb
|
|
332
337
|
- lib/datadog/appsec/utils/http/media_type.rb
|
|
333
338
|
- lib/datadog/appsec/utils/http/url_encoded.rb
|
|
@@ -380,6 +385,7 @@ files:
|
|
|
380
385
|
- lib/datadog/core/environment/vm_cache.rb
|
|
381
386
|
- lib/datadog/core/environment/yjit.rb
|
|
382
387
|
- lib/datadog/core/error.rb
|
|
388
|
+
- lib/datadog/core/evp.rb
|
|
383
389
|
- lib/datadog/core/extensions.rb
|
|
384
390
|
- lib/datadog/core/feature_flags.rb
|
|
385
391
|
- lib/datadog/core/git/ext.rb
|
|
@@ -514,6 +520,9 @@ files:
|
|
|
514
520
|
- lib/datadog/di.rb
|
|
515
521
|
- lib/datadog/di/base.rb
|
|
516
522
|
- lib/datadog/di/boot.rb
|
|
523
|
+
- lib/datadog/di/capture_expression.rb
|
|
524
|
+
- lib/datadog/di/capture_expression_evaluator.rb
|
|
525
|
+
- lib/datadog/di/capture_limits.rb
|
|
517
526
|
- lib/datadog/di/code_tracker.rb
|
|
518
527
|
- lib/datadog/di/component.rb
|
|
519
528
|
- lib/datadog/di/configuration.rb
|
|
@@ -527,6 +536,7 @@ files:
|
|
|
527
536
|
- lib/datadog/di/el/expression.rb
|
|
528
537
|
- lib/datadog/di/error.rb
|
|
529
538
|
- lib/datadog/di/extensions.rb
|
|
539
|
+
- lib/datadog/di/fatal_exceptions.rb
|
|
530
540
|
- lib/datadog/di/instrumenter.rb
|
|
531
541
|
- lib/datadog/di/logger.rb
|
|
532
542
|
- lib/datadog/di/preload.rb
|
|
@@ -572,7 +582,10 @@ files:
|
|
|
572
582
|
- lib/datadog/open_feature/exposures/reporter.rb
|
|
573
583
|
- lib/datadog/open_feature/exposures/worker.rb
|
|
574
584
|
- lib/datadog/open_feature/ext.rb
|
|
575
|
-
- lib/datadog/open_feature/
|
|
585
|
+
- lib/datadog/open_feature/flag_evaluation/aggregator.rb
|
|
586
|
+
- lib/datadog/open_feature/flag_evaluation/writer.rb
|
|
587
|
+
- lib/datadog/open_feature/hooks/flag_eval_evp_hook.rb
|
|
588
|
+
- lib/datadog/open_feature/hooks/flag_eval_metrics_hook.rb
|
|
576
589
|
- lib/datadog/open_feature/metrics/flag_eval_metrics.rb
|
|
577
590
|
- lib/datadog/open_feature/native_evaluator.rb
|
|
578
591
|
- lib/datadog/open_feature/noop_evaluator.rb
|
|
@@ -588,6 +601,7 @@ files:
|
|
|
588
601
|
- lib/datadog/opentelemetry/ext.rb
|
|
589
602
|
- lib/datadog/opentelemetry/logs.rb
|
|
590
603
|
- lib/datadog/opentelemetry/metrics.rb
|
|
604
|
+
- lib/datadog/opentelemetry/sdk.rb
|
|
591
605
|
- lib/datadog/opentelemetry/sdk/configurator.rb
|
|
592
606
|
- lib/datadog/opentelemetry/sdk/id_generator.rb
|
|
593
607
|
- lib/datadog/opentelemetry/sdk/logs_exporter.rb
|
|
@@ -629,6 +643,7 @@ files:
|
|
|
629
643
|
- lib/datadog/symbol_database.rb
|
|
630
644
|
- lib/datadog/symbol_database/component.rb
|
|
631
645
|
- lib/datadog/symbol_database/configuration.rb
|
|
646
|
+
- lib/datadog/symbol_database/extensions.rb
|
|
632
647
|
- lib/datadog/symbol_database/extractor.rb
|
|
633
648
|
- lib/datadog/symbol_database/file_hash.rb
|
|
634
649
|
- lib/datadog/symbol_database/logger.rb
|
|
@@ -691,6 +706,7 @@ files:
|
|
|
691
706
|
- lib/datadog/tracing/contrib/action_view/patcher.rb
|
|
692
707
|
- lib/datadog/tracing/contrib/action_view/utils.rb
|
|
693
708
|
- lib/datadog/tracing/contrib/active_job/configuration/settings.rb
|
|
709
|
+
- lib/datadog/tracing/contrib/active_job/data_streams.rb
|
|
694
710
|
- lib/datadog/tracing/contrib/active_job/event.rb
|
|
695
711
|
- lib/datadog/tracing/contrib/active_job/events.rb
|
|
696
712
|
- lib/datadog/tracing/contrib/active_job/events/discard.rb
|
|
@@ -1081,6 +1097,7 @@ files:
|
|
|
1081
1097
|
- lib/datadog/tracing/distributed/propagation_policy.rb
|
|
1082
1098
|
- lib/datadog/tracing/distributed/trace_context.rb
|
|
1083
1099
|
- lib/datadog/tracing/event.rb
|
|
1100
|
+
- lib/datadog/tracing/ext.rb
|
|
1084
1101
|
- lib/datadog/tracing/flush.rb
|
|
1085
1102
|
- lib/datadog/tracing/metadata.rb
|
|
1086
1103
|
- lib/datadog/tracing/metadata/analytics.rb
|
|
@@ -1140,8 +1157,8 @@ licenses:
|
|
|
1140
1157
|
- Apache-2.0
|
|
1141
1158
|
metadata:
|
|
1142
1159
|
allowed_push_host: https://rubygems.org
|
|
1143
|
-
changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.
|
|
1144
|
-
source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.
|
|
1160
|
+
changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.38.0/CHANGELOG.md
|
|
1161
|
+
source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.38.0
|
|
1145
1162
|
post_install_message: 'JRuby support in the datadog gem is deprecated. Details: https://dtdg.co/jruby-deprecation'
|
|
1146
1163
|
rdoc_options: []
|
|
1147
1164
|
require_paths:
|