datadog 2.36.0 → 2.37.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 -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 +6 -3
- data/ext/datadog_profiling_native_extension/collectors_idle_sampling_helper.c +17 -3
- data/ext/datadog_profiling_native_extension/collectors_thread_context.c +219 -98
- data/ext/datadog_profiling_native_extension/collectors_thread_context.h +2 -0
- data/ext/datadog_profiling_native_extension/extconf.rb +11 -0
- data/ext/datadog_profiling_native_extension/ruby_helpers.c +7 -0
- 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/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 +2 -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/components.rb +82 -2
- data/lib/datadog/core/configuration/components_state.rb +6 -1
- data/lib/datadog/core/configuration/settings.rb +0 -3
- data/lib/datadog/core/configuration/supported_configurations.rb +2 -0
- data/lib/datadog/core/evp.rb +11 -0
- data/lib/datadog/core/remote/client/capabilities.rb +34 -7
- data/lib/datadog/core/telemetry/event/app_started.rb +8 -1
- data/lib/datadog/di/base.rb +3 -1
- data/lib/datadog/di/code_tracker.rb +5 -2
- data/lib/datadog/di/component.rb +110 -36
- data/lib/datadog/di/error.rb +10 -0
- data/lib/datadog/di/fatal_exceptions.rb +26 -0
- data/lib/datadog/di/instrumenter.rb +381 -165
- data/lib/datadog/di/probe.rb +14 -0
- 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 +4 -1
- data/lib/datadog/di/probe_notifier_worker.rb +52 -32
- data/lib/datadog/di/redactor.rb +16 -1
- data/lib/datadog/di/remote.rb +175 -14
- data/lib/datadog/di/serializer.rb +12 -5
- 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 +1 -1
- data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +5 -3
- 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/distributed/baggage.rb +2 -1
- data/lib/datadog/tracing/ext.rb +9 -0
- data/lib/datadog/tracing/remote.rb +34 -3
- data/lib/datadog/version.rb +1 -1
- data/lib/datadog.rb +1 -0
- metadata +19 -6
|
@@ -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
|
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.37.0
|
|
5
5
|
platform: ruby
|
|
6
6
|
authors:
|
|
7
7
|
- Datadog, Inc.
|
|
@@ -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
|
|
@@ -527,6 +533,7 @@ files:
|
|
|
527
533
|
- lib/datadog/di/el/expression.rb
|
|
528
534
|
- lib/datadog/di/error.rb
|
|
529
535
|
- lib/datadog/di/extensions.rb
|
|
536
|
+
- lib/datadog/di/fatal_exceptions.rb
|
|
530
537
|
- lib/datadog/di/instrumenter.rb
|
|
531
538
|
- lib/datadog/di/logger.rb
|
|
532
539
|
- lib/datadog/di/preload.rb
|
|
@@ -572,7 +579,10 @@ files:
|
|
|
572
579
|
- lib/datadog/open_feature/exposures/reporter.rb
|
|
573
580
|
- lib/datadog/open_feature/exposures/worker.rb
|
|
574
581
|
- lib/datadog/open_feature/ext.rb
|
|
575
|
-
- lib/datadog/open_feature/
|
|
582
|
+
- lib/datadog/open_feature/flag_evaluation/aggregator.rb
|
|
583
|
+
- lib/datadog/open_feature/flag_evaluation/writer.rb
|
|
584
|
+
- lib/datadog/open_feature/hooks/flag_eval_evp_hook.rb
|
|
585
|
+
- lib/datadog/open_feature/hooks/flag_eval_metrics_hook.rb
|
|
576
586
|
- lib/datadog/open_feature/metrics/flag_eval_metrics.rb
|
|
577
587
|
- lib/datadog/open_feature/native_evaluator.rb
|
|
578
588
|
- lib/datadog/open_feature/noop_evaluator.rb
|
|
@@ -588,6 +598,7 @@ files:
|
|
|
588
598
|
- lib/datadog/opentelemetry/ext.rb
|
|
589
599
|
- lib/datadog/opentelemetry/logs.rb
|
|
590
600
|
- lib/datadog/opentelemetry/metrics.rb
|
|
601
|
+
- lib/datadog/opentelemetry/sdk.rb
|
|
591
602
|
- lib/datadog/opentelemetry/sdk/configurator.rb
|
|
592
603
|
- lib/datadog/opentelemetry/sdk/id_generator.rb
|
|
593
604
|
- lib/datadog/opentelemetry/sdk/logs_exporter.rb
|
|
@@ -629,6 +640,7 @@ files:
|
|
|
629
640
|
- lib/datadog/symbol_database.rb
|
|
630
641
|
- lib/datadog/symbol_database/component.rb
|
|
631
642
|
- lib/datadog/symbol_database/configuration.rb
|
|
643
|
+
- lib/datadog/symbol_database/extensions.rb
|
|
632
644
|
- lib/datadog/symbol_database/extractor.rb
|
|
633
645
|
- lib/datadog/symbol_database/file_hash.rb
|
|
634
646
|
- lib/datadog/symbol_database/logger.rb
|
|
@@ -1081,6 +1093,7 @@ files:
|
|
|
1081
1093
|
- lib/datadog/tracing/distributed/propagation_policy.rb
|
|
1082
1094
|
- lib/datadog/tracing/distributed/trace_context.rb
|
|
1083
1095
|
- lib/datadog/tracing/event.rb
|
|
1096
|
+
- lib/datadog/tracing/ext.rb
|
|
1084
1097
|
- lib/datadog/tracing/flush.rb
|
|
1085
1098
|
- lib/datadog/tracing/metadata.rb
|
|
1086
1099
|
- lib/datadog/tracing/metadata/analytics.rb
|
|
@@ -1140,8 +1153,8 @@ licenses:
|
|
|
1140
1153
|
- Apache-2.0
|
|
1141
1154
|
metadata:
|
|
1142
1155
|
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.
|
|
1156
|
+
changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.37.0/CHANGELOG.md
|
|
1157
|
+
source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.37.0
|
|
1145
1158
|
post_install_message: 'JRuby support in the datadog gem is deprecated. Details: https://dtdg.co/jruby-deprecation'
|
|
1146
1159
|
rdoc_options: []
|
|
1147
1160
|
require_paths:
|