datadog 2.38.0 → 2.40.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/bin/ddprofrb +4 -4
- data/ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +77 -1
- data/ext/datadog_profiling_native_extension/collectors_stack.c +218 -147
- data/ext/datadog_profiling_native_extension/collectors_stack.h +16 -2
- data/ext/datadog_profiling_native_extension/collectors_thread_context.c +12 -7
- data/ext/datadog_profiling_native_extension/crashtracking_runtime_stacks.c +5 -4
- data/ext/datadog_profiling_native_extension/datadog_ruby_common.c +19 -11
- data/ext/datadog_profiling_native_extension/datadog_ruby_common.h +7 -0
- data/ext/datadog_profiling_native_extension/extconf.rb +13 -8
- data/ext/datadog_profiling_native_extension/private_vm_api_access.c +259 -65
- data/ext/datadog_profiling_native_extension/private_vm_api_access.h +16 -10
- data/ext/datadog_profiling_native_extension/setup_signal_handler.c +2 -0
- data/ext/libdatadog_api/datadog_ruby_common.c +19 -11
- data/ext/libdatadog_api/datadog_ruby_common.h +7 -0
- data/ext/libdatadog_api/extconf.rb +24 -24
- data/ext/libdatadog_api/feature_flags.c +26 -0
- data/ext/libdatadog_api/init.c +4 -0
- data/ext/libdatadog_api/trace_exporter.c +974 -0
- data/ext/libdatadog_api/trace_exporter.h +5 -0
- data/ext/libdatadog_extconf_helpers.rb +9 -9
- data/lib/datadog/ai_guard/api_client.rb +2 -2
- data/lib/datadog/ai_guard/component.rb +10 -10
- data/lib/datadog/ai_guard/evaluation.rb +1 -0
- data/lib/datadog/ai_guard/ext.rb +2 -0
- data/lib/datadog/appsec/actions_handler/serializable_backtrace.rb +16 -16
- data/lib/datadog/appsec/actions_handler.rb +6 -6
- data/lib/datadog/appsec/anonymizer.rb +1 -1
- data/lib/datadog/appsec/api_security/endpoint_collection/grape_route_serializer.rb +1 -1
- data/lib/datadog/appsec/api_security/endpoint_collection/rails_collector.rb +6 -6
- data/lib/datadog/appsec/api_security/endpoint_collection/sinatra_route_serializer.rb +1 -1
- data/lib/datadog/appsec/api_security/route_extractor.rb +11 -11
- data/lib/datadog/appsec/api_security/sampler.rb +5 -5
- data/lib/datadog/appsec/api_security.rb +1 -1
- data/lib/datadog/appsec/assets.rb +7 -7
- data/lib/datadog/appsec/autoload.rb +3 -3
- data/lib/datadog/appsec/component.rb +15 -15
- data/lib/datadog/appsec/compressed_json.rb +6 -6
- data/lib/datadog/appsec/configuration.rb +68 -59
- data/lib/datadog/appsec/context.rb +6 -6
- data/lib/datadog/appsec/contrib/active_record/instrumentation.rb +6 -6
- data/lib/datadog/appsec/contrib/active_record/integration.rb +4 -4
- data/lib/datadog/appsec/contrib/active_record/patcher.rb +4 -4
- data/lib/datadog/appsec/contrib/aws_lambda/gateway/watcher.rb +7 -7
- data/lib/datadog/appsec/contrib/aws_lambda/integration.rb +2 -2
- data/lib/datadog/appsec/contrib/aws_lambda/patcher.rb +2 -2
- data/lib/datadog/appsec/contrib/aws_lambda/waf_addresses.rb +36 -34
- data/lib/datadog/appsec/contrib/devise/data_extractor.rb +3 -3
- data/lib/datadog/appsec/contrib/devise/ext.rb +20 -20
- data/lib/datadog/appsec/contrib/devise/integration.rb +4 -4
- data/lib/datadog/appsec/contrib/devise/patcher.rb +8 -8
- data/lib/datadog/appsec/contrib/devise/patches/signin_tracking_patch.rb +12 -12
- data/lib/datadog/appsec/contrib/devise/patches/signup_tracking_patch.rb +8 -8
- data/lib/datadog/appsec/contrib/devise/tracking_middleware.rb +24 -9
- data/lib/datadog/appsec/contrib/excon/integration.rb +4 -4
- data/lib/datadog/appsec/contrib/excon/patcher.rb +1 -1
- data/lib/datadog/appsec/contrib/excon/ssrf_detection_middleware.rb +26 -26
- data/lib/datadog/appsec/contrib/faraday/integration.rb +4 -4
- data/lib/datadog/appsec/contrib/faraday/patcher.rb +4 -4
- data/lib/datadog/appsec/contrib/faraday/ssrf_detection_middleware.rb +22 -22
- data/lib/datadog/appsec/contrib/graphql/appsec_trace.rb +4 -4
- data/lib/datadog/appsec/contrib/graphql/gateway/multiplex.rb +2 -2
- data/lib/datadog/appsec/contrib/graphql/gateway/watcher.rb +7 -7
- data/lib/datadog/appsec/contrib/graphql/integration.rb +9 -9
- data/lib/datadog/appsec/contrib/graphql/patcher.rb +3 -3
- data/lib/datadog/appsec/contrib/rack/buffered_input.rb +1 -1
- data/lib/datadog/appsec/contrib/rack/ext.rb +29 -29
- data/lib/datadog/appsec/contrib/rack/gateway/request.rb +14 -18
- data/lib/datadog/appsec/contrib/rack/gateway/response.rb +1 -1
- data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +24 -24
- data/lib/datadog/appsec/contrib/rack/input_peeker.rb +6 -6
- data/lib/datadog/appsec/contrib/rack/integration.rb +6 -6
- data/lib/datadog/appsec/contrib/rack/patcher.rb +3 -3
- data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +11 -8
- data/lib/datadog/appsec/contrib/rack/request_middleware.rb +26 -26
- data/lib/datadog/appsec/contrib/rack/response_body.rb +1 -1
- data/lib/datadog/appsec/contrib/rails/gateway/request.rb +10 -10
- data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +10 -10
- data/lib/datadog/appsec/contrib/rails/integration.rb +5 -5
- data/lib/datadog/appsec/contrib/rails/patcher.rb +17 -17
- data/lib/datadog/appsec/contrib/rails/patches/process_action_patch.rb +2 -2
- data/lib/datadog/appsec/contrib/rails/patches/render_to_body_patch.rb +3 -3
- data/lib/datadog/appsec/contrib/rails/request.rb +3 -3
- data/lib/datadog/appsec/contrib/rails/request_middleware.rb +2 -1
- data/lib/datadog/appsec/contrib/rest_client/integration.rb +5 -5
- data/lib/datadog/appsec/contrib/rest_client/patcher.rb +1 -1
- data/lib/datadog/appsec/contrib/rest_client/request_ssrf_detection_patch.rb +23 -23
- data/lib/datadog/appsec/contrib/sinatra/gateway/request.rb +1 -1
- data/lib/datadog/appsec/contrib/sinatra/gateway/route_params.rb +1 -1
- data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +15 -15
- data/lib/datadog/appsec/contrib/sinatra/integration.rb +5 -5
- data/lib/datadog/appsec/contrib/sinatra/patcher.rb +11 -11
- data/lib/datadog/appsec/contrib/sinatra/patches/json_patch.rb +3 -3
- data/lib/datadog/appsec/contrib/sinatra/request_middleware.rb +2 -1
- data/lib/datadog/appsec/counter_sampler.rb +1 -1
- data/lib/datadog/appsec/event.rb +14 -14
- data/lib/datadog/appsec/ext.rb +11 -11
- data/lib/datadog/appsec/extensions.rb +2 -2
- data/lib/datadog/appsec/instrumentation/gateway.rb +1 -1
- data/lib/datadog/appsec/metrics/exporter.rb +8 -8
- data/lib/datadog/appsec/metrics/telemetry.rb +7 -7
- data/lib/datadog/appsec/metrics/telemetry_exporter.rb +4 -4
- data/lib/datadog/appsec/metrics.rb +4 -4
- data/lib/datadog/appsec/monitor/gateway/watcher.rb +16 -12
- data/lib/datadog/appsec/monitor.rb +1 -1
- data/lib/datadog/appsec/processor/rule_loader.rb +26 -26
- data/lib/datadog/appsec/rate_limiter.rb +1 -1
- data/lib/datadog/appsec/remote.rb +6 -6
- data/lib/datadog/appsec/response.rb +21 -21
- data/lib/datadog/appsec/route_normalizer/rails_route_pattern.rb +11 -11
- data/lib/datadog/appsec/route_normalizer/route_pattern.rb +15 -15
- data/lib/datadog/appsec/route_normalizer/route_text.rb +3 -3
- data/lib/datadog/appsec/route_normalizer.rb +15 -15
- data/lib/datadog/appsec/security_engine/engine.rb +37 -37
- data/lib/datadog/appsec/security_engine/runner.rb +2 -2
- data/lib/datadog/appsec/security_event.rb +2 -2
- data/lib/datadog/appsec/utils/http/body.rb +11 -8
- data/lib/datadog/appsec/utils/http/body_reader.rb +1 -1
- data/lib/datadog/appsec/utils/http/media_range.rb +15 -15
- data/lib/datadog/appsec/utils/http/media_type.rb +4 -4
- data/lib/datadog/appsec/utils/http/url_encoded.rb +80 -25
- data/lib/datadog/appsec.rb +16 -16
- data/lib/datadog/auto_instrument.rb +2 -2
- data/lib/datadog/core/buffer/cruby.rb +1 -1
- data/lib/datadog/core/buffer/thread_safe.rb +1 -1
- data/lib/datadog/core/configuration/agent_settings.rb +1 -1
- data/lib/datadog/core/configuration/agent_settings_resolver.rb +15 -15
- data/lib/datadog/core/configuration/base.rb +2 -2
- data/lib/datadog/core/configuration/components.rb +33 -29
- data/lib/datadog/core/configuration/config_helper.rb +3 -3
- data/lib/datadog/core/configuration/deprecations.rb +6 -6
- data/lib/datadog/core/configuration/ext.rb +11 -11
- data/lib/datadog/core/configuration/option.rb +16 -16
- data/lib/datadog/core/configuration/option_definition.rb +4 -4
- data/lib/datadog/core/configuration/options.rb +1 -1
- data/lib/datadog/core/configuration/settings.rb +91 -99
- data/lib/datadog/core/configuration/stable_config.rb +1 -1
- data/lib/datadog/core/configuration/supported_configurations.rb +5 -1
- data/lib/datadog/core/configuration.rb +8 -8
- data/lib/datadog/core/contrib/rails/railtie.rb +3 -3
- data/lib/datadog/core/crashtracking/component.rb +9 -9
- data/lib/datadog/core/crashtracking/tag_builder.rb +5 -5
- data/lib/datadog/core/deprecations.rb +1 -1
- data/lib/datadog/core/diagnostics/environment_logger.rb +6 -6
- data/lib/datadog/core/diagnostics/health.rb +2 -2
- data/lib/datadog/core/encoding.rb +4 -4
- data/lib/datadog/core/environment/agent_info.rb +2 -2
- data/lib/datadog/core/environment/cgroup.rb +4 -4
- data/lib/datadog/core/environment/container.rb +9 -9
- data/lib/datadog/core/environment/execution.rb +3 -3
- data/lib/datadog/core/environment/ext.rb +18 -18
- data/lib/datadog/core/environment/gc.rb +1 -1
- data/lib/datadog/core/environment/git.rb +2 -2
- data/lib/datadog/core/environment/identity.rb +10 -10
- data/lib/datadog/core/environment/platform.rb +8 -8
- data/lib/datadog/core/environment/process.rb +3 -3
- data/lib/datadog/core/environment/socket.rb +2 -2
- data/lib/datadog/core/environment/variable_helpers.rb +1 -1
- data/lib/datadog/core/environment/vm_cache.rb +1 -1
- data/lib/datadog/core/environment/yjit.rb +2 -2
- data/lib/datadog/core/error.rb +5 -5
- data/lib/datadog/core/evp.rb +2 -2
- data/lib/datadog/core/extensions.rb +1 -1
- data/lib/datadog/core/feature_flags.rb +2 -2
- data/lib/datadog/core/git/ext.rb +4 -4
- data/lib/datadog/core/logger.rb +3 -3
- data/lib/datadog/core/logging/ext.rb +1 -1
- data/lib/datadog/core/metrics/client.rb +20 -20
- data/lib/datadog/core/metrics/ext.rb +5 -5
- data/lib/datadog/core/metrics/logging.rb +2 -2
- data/lib/datadog/core/metrics/options.rb +3 -3
- data/lib/datadog/core/pin.rb +1 -1
- data/lib/datadog/core/process_discovery.rb +8 -8
- data/lib/datadog/core/rate_limiter.rb +1 -1
- data/lib/datadog/core/remote/client/capabilities.rb +36 -20
- data/lib/datadog/core/remote/client.rb +16 -16
- data/lib/datadog/core/remote/component.rb +20 -12
- data/lib/datadog/core/remote/configuration/content.rb +3 -3
- data/lib/datadog/core/remote/configuration/digest.rb +1 -1
- data/lib/datadog/core/remote/configuration/path.rb +9 -9
- data/lib/datadog/core/remote/configuration/repository.rb +2 -2
- data/lib/datadog/core/remote/configuration/target.rb +9 -9
- data/lib/datadog/core/remote/configuration.rb +4 -4
- data/lib/datadog/core/remote/ext.rb +3 -3
- data/lib/datadog/core/remote/negotiation.rb +1 -1
- data/lib/datadog/core/remote/tie/tracing.rb +7 -7
- data/lib/datadog/core/remote/transport/config.rb +4 -4
- data/lib/datadog/core/remote/transport/http/config.rb +7 -7
- data/lib/datadog/core/remote/transport/http/negotiation.rb +4 -4
- data/lib/datadog/core/remote/transport/http.rb +10 -10
- data/lib/datadog/core/remote/transport/negotiation.rb +3 -3
- data/lib/datadog/core/remote/worker.rb +5 -5
- data/lib/datadog/core/runtime/ext.rb +22 -22
- data/lib/datadog/core/runtime/metrics.rb +9 -9
- data/lib/datadog/core/tag_builder.rb +18 -18
- data/lib/datadog/core/tag_normalizer.rb +7 -7
- data/lib/datadog/core/telemetry/component.rb +13 -13
- data/lib/datadog/core/telemetry/emitter.rb +4 -4
- data/lib/datadog/core/telemetry/event/app_client_configuration_change.rb +5 -5
- data/lib/datadog/core/telemetry/event/app_closing.rb +2 -2
- data/lib/datadog/core/telemetry/event/app_dependencies_loaded.rb +2 -2
- data/lib/datadog/core/telemetry/event/app_endpoints_loaded.rb +2 -2
- data/lib/datadog/core/telemetry/event/app_extended_heartbeat.rb +2 -2
- data/lib/datadog/core/telemetry/event/app_heartbeat.rb +2 -2
- data/lib/datadog/core/telemetry/event/app_integrations_change.rb +2 -2
- data/lib/datadog/core/telemetry/event/app_started.rb +33 -33
- data/lib/datadog/core/telemetry/event/base.rb +1 -1
- data/lib/datadog/core/telemetry/event/distributions.rb +2 -2
- data/lib/datadog/core/telemetry/event/generate_metrics.rb +2 -2
- data/lib/datadog/core/telemetry/event/log.rb +4 -4
- data/lib/datadog/core/telemetry/event/message_batch.rb +1 -1
- data/lib/datadog/core/telemetry/event/synth_app_client_configuration_change.rb +3 -3
- data/lib/datadog/core/telemetry/event.rb +16 -16
- data/lib/datadog/core/telemetry/ext.rb +11 -11
- data/lib/datadog/core/telemetry/logger.rb +1 -1
- data/lib/datadog/core/telemetry/logging.rb +5 -5
- data/lib/datadog/core/telemetry/metric.rb +7 -7
- data/lib/datadog/core/telemetry/metrics_collection.rb +2 -2
- data/lib/datadog/core/telemetry/metrics_manager.rb +1 -1
- data/lib/datadog/core/telemetry/request.rb +4 -4
- data/lib/datadog/core/telemetry/transport/http/telemetry.rb +14 -14
- data/lib/datadog/core/telemetry/transport/http.rb +7 -7
- data/lib/datadog/core/telemetry/transport/telemetry.rb +3 -3
- data/lib/datadog/core/telemetry/worker.rb +6 -6
- data/lib/datadog/core/transport/ext.rb +14 -14
- data/lib/datadog/core/transport/http/adapters/net.rb +4 -4
- data/lib/datadog/core/transport/http/adapters/test.rb +1 -1
- data/lib/datadog/core/transport/http/adapters/unix_socket.rb +4 -4
- data/lib/datadog/core/transport/http/api/endpoint.rb +1 -1
- data/lib/datadog/core/transport/http/api/map.rb +1 -1
- data/lib/datadog/core/transport/http/builder.rb +5 -5
- data/lib/datadog/core/transport/http/client.rb +2 -2
- data/lib/datadog/core/transport/http/response.rb +1 -1
- data/lib/datadog/core/transport/http.rb +8 -8
- data/lib/datadog/core/transport/transport.rb +1 -1
- data/lib/datadog/core/utils/at_fork_monkey_patch.rb +82 -14
- data/lib/datadog/core/utils/base64_codec.rb +3 -3
- data/lib/datadog/core/utils/duration.rb +1 -1
- data/lib/datadog/core/utils/forking.rb +2 -2
- data/lib/datadog/core/utils/lru_cache.rb +3 -3
- data/lib/datadog/core/utils/network.rb +11 -11
- data/lib/datadog/core/utils/only_once_successful.rb +1 -1
- data/lib/datadog/core/utils/safe_dup.rb +2 -1
- data/lib/datadog/core/utils/sequence.rb +3 -6
- data/lib/datadog/core/utils/spawn_monkey_patch.rb +2 -2
- data/lib/datadog/core/utils/time.rb +16 -54
- data/lib/datadog/core/utils/url.rb +1 -1
- data/lib/datadog/core/utils.rb +4 -4
- data/lib/datadog/core/workers/async.rb +1 -1
- data/lib/datadog/core/workers/polling.rb +2 -2
- data/lib/datadog/core/workers/runtime_metrics.rb +4 -4
- data/lib/datadog/core.rb +4 -4
- data/lib/datadog/data_streams/configuration.rb +3 -3
- data/lib/datadog/data_streams/ext.rb +1 -1
- data/lib/datadog/data_streams/extensions.rb +2 -2
- data/lib/datadog/data_streams/pathway_context.rb +5 -5
- data/lib/datadog/data_streams/processor.rb +52 -52
- data/lib/datadog/data_streams/transport/http/stats.rb +5 -5
- data/lib/datadog/data_streams/transport/http.rb +5 -5
- data/lib/datadog/data_streams/transport/stats.rb +7 -7
- data/lib/datadog/data_streams.rb +5 -5
- data/lib/datadog/di/base.rb +4 -4
- data/lib/datadog/di/boot.rb +25 -25
- data/lib/datadog/di/code_tracker.rb +6 -6
- data/lib/datadog/di/component.rb +11 -3
- data/lib/datadog/di/configuration.rb +2 -2
- data/lib/datadog/di/contrib/railtie.rb +1 -1
- data/lib/datadog/di/contrib.rb +5 -5
- data/lib/datadog/di/el/compiler.rb +90 -37
- data/lib/datadog/di/el/evaluator.rb +82 -2
- data/lib/datadog/di/el/expression.rb +10 -2
- data/lib/datadog/di/el.rb +3 -3
- data/lib/datadog/di/instrumenter.rb +19 -9
- data/lib/datadog/di/logger.rb +1 -1
- data/lib/datadog/di/preload.rb +1 -1
- data/lib/datadog/di/probe_builder.rb +24 -24
- data/lib/datadog/di/probe_file_loader/railtie.rb +1 -1
- data/lib/datadog/di/probe_file_loader.rb +5 -5
- data/lib/datadog/di/probe_manager.rb +1 -1
- data/lib/datadog/di/probe_notification_builder.rb +16 -16
- data/lib/datadog/di/probe_notifier_worker.rb +6 -6
- data/lib/datadog/di/probe_repository.rb +1 -1
- data/lib/datadog/di/remote.rb +3 -3
- data/lib/datadog/di/serializer.rb +13 -13
- data/lib/datadog/di/transport/diagnostics.rb +5 -5
- data/lib/datadog/di/transport/http/diagnostics.rb +3 -3
- data/lib/datadog/di/transport/http/input.rb +2 -2
- data/lib/datadog/di/transport/http.rb +10 -10
- data/lib/datadog/di/transport/input.rb +9 -9
- data/lib/datadog/di/utils.rb +4 -4
- data/lib/datadog/di.rb +5 -5
- data/lib/datadog/error_tracking/collector.rb +2 -2
- data/lib/datadog/error_tracking/component.rb +12 -12
- data/lib/datadog/error_tracking/configuration.rb +2 -2
- data/lib/datadog/error_tracking/ext.rb +7 -7
- data/lib/datadog/error_tracking/extensions.rb +2 -2
- data/lib/datadog/error_tracking/filters.rb +4 -4
- data/lib/datadog/error_tracking.rb +6 -6
- data/lib/datadog/kit/appsec/events/v2.rb +39 -39
- data/lib/datadog/kit/appsec/events.rb +25 -25
- data/lib/datadog/kit/enable_core_dumps.rb +2 -2
- data/lib/datadog/kit/identity.rb +18 -18
- data/lib/datadog/kit/tracing/method_tracer.rb +7 -7
- data/lib/datadog/kit.rb +1 -1
- data/lib/datadog/open_feature/component.rb +31 -22
- data/lib/datadog/open_feature/configuration.rb +15 -2
- data/lib/datadog/open_feature/evaluation_engine.rb +7 -7
- data/lib/datadog/open_feature/exposures/buffer.rb +1 -1
- data/lib/datadog/open_feature/exposures/deduplicator.rb +1 -1
- data/lib/datadog/open_feature/exposures/event.rb +2 -2
- data/lib/datadog/open_feature/exposures/reporter.rb +3 -3
- data/lib/datadog/open_feature/exposures/worker.rb +6 -6
- data/lib/datadog/open_feature/ext.rb +13 -8
- data/lib/datadog/open_feature/flag_evaluation/aggregator.rb +8 -8
- data/lib/datadog/open_feature/flag_evaluation/writer.rb +36 -36
- data/lib/datadog/open_feature/hooks/flag_eval_evp_hook.rb +5 -4
- data/lib/datadog/open_feature/hooks/flag_eval_metrics_hook.rb +3 -1
- data/lib/datadog/open_feature/hooks/span_enrichment_hook/codec.rb +58 -0
- data/lib/datadog/open_feature/hooks/span_enrichment_hook/span_enrichment_state.rb +96 -0
- data/lib/datadog/open_feature/hooks/span_enrichment_hook/span_enrichment_state_store.rb +49 -0
- data/lib/datadog/open_feature/hooks/span_enrichment_hook.rb +184 -0
- data/lib/datadog/open_feature/metrics/flag_eval_metrics.rb +24 -24
- data/lib/datadog/open_feature/native_evaluator.rb +4 -4
- data/lib/datadog/open_feature/noop_evaluator.rb +3 -3
- data/lib/datadog/open_feature/provider.rb +45 -10
- data/lib/datadog/open_feature/remote.rb +2 -2
- data/lib/datadog/open_feature/resolution_details.rb +4 -2
- data/lib/datadog/open_feature/transport.rb +14 -14
- data/lib/datadog/open_feature.rb +2 -2
- data/lib/datadog/opentelemetry/api/baggage.rb +3 -3
- data/lib/datadog/opentelemetry/api/context.rb +4 -4
- data/lib/datadog/opentelemetry/configuration/settings.rb +41 -41
- data/lib/datadog/opentelemetry/ext.rb +1 -1
- data/lib/datadog/opentelemetry/logs.rb +5 -5
- data/lib/datadog/opentelemetry/metrics.rb +7 -7
- data/lib/datadog/opentelemetry/sdk/configurator.rb +8 -8
- data/lib/datadog/opentelemetry/sdk/id_generator.rb +2 -2
- data/lib/datadog/opentelemetry/sdk/logs_exporter.rb +6 -6
- data/lib/datadog/opentelemetry/sdk/metrics_exporter.rb +5 -5
- data/lib/datadog/opentelemetry/sdk/propagator.rb +7 -7
- data/lib/datadog/opentelemetry/sdk/span_processor.rb +15 -15
- data/lib/datadog/opentelemetry/sdk/trace/span.rb +32 -32
- data/lib/datadog/opentelemetry/sdk.rb +2 -2
- data/lib/datadog/opentelemetry/signal_configuration.rb +11 -11
- data/lib/datadog/opentelemetry/trace.rb +1 -1
- data/lib/datadog/opentelemetry.rb +8 -8
- data/lib/datadog/profiling/collectors/thread_context.rb +6 -13
- data/lib/datadog/profiling/component.rb +1 -0
- data/lib/datadog/profiling/exporter.rb +1 -1
- data/lib/datadog/profiling/http_transport.rb +1 -1
- data/lib/datadog/profiling/sequence_tracker.rb +1 -1
- data/lib/datadog/profiling/tag_builder.rb +19 -19
- data/lib/datadog/profiling.rb +31 -27
- data/lib/datadog/single_step_instrument.rb +1 -1
- data/lib/datadog/symbol_database/component.rb +15 -15
- data/lib/datadog/symbol_database/configuration.rb +3 -3
- data/lib/datadog/symbol_database/extensions.rb +2 -2
- data/lib/datadog/symbol_database/extractor.rb +53 -53
- data/lib/datadog/symbol_database/file_hash.rb +3 -3
- data/lib/datadog/symbol_database/logger.rb +1 -1
- data/lib/datadog/symbol_database/remote.rb +21 -6
- data/lib/datadog/symbol_database/scope.rb +2 -2
- data/lib/datadog/symbol_database/scope_batcher.rb +2 -2
- data/lib/datadog/symbol_database/service_version.rb +4 -4
- data/lib/datadog/symbol_database/symbol.rb +1 -1
- data/lib/datadog/symbol_database/transport/http/endpoint.rb +1 -1
- data/lib/datadog/symbol_database/transport/http.rb +6 -6
- data/lib/datadog/symbol_database/transport.rb +4 -4
- data/lib/datadog/symbol_database/uploader.rb +22 -22
- data/lib/datadog/symbol_database.rb +2 -2
- data/lib/datadog/tracing/analytics.rb +1 -1
- data/lib/datadog/tracing/buffer.rb +5 -5
- data/lib/datadog/tracing/client_ip.rb +4 -4
- data/lib/datadog/tracing/component.rb +28 -7
- data/lib/datadog/tracing/configuration/dynamic.rb +8 -8
- data/lib/datadog/tracing/configuration/ext.rb +43 -42
- data/lib/datadog/tracing/configuration/http.rb +2 -2
- data/lib/datadog/tracing/configuration/settings.rb +32 -16
- data/lib/datadog/tracing/context.rb +1 -1
- data/lib/datadog/tracing/context_provider.rb +2 -2
- data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/action_cable/event.rb +4 -4
- data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +5 -5
- data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +4 -4
- data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +5 -5
- data/lib/datadog/tracing/contrib/action_cable/events.rb +4 -4
- data/lib/datadog/tracing/contrib/action_cable/ext.rb +18 -18
- data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +4 -4
- data/lib/datadog/tracing/contrib/action_cable/integration.rb +7 -7
- data/lib/datadog/tracing/contrib/action_cable/patcher.rb +4 -4
- data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/action_mailer/event.rb +3 -3
- data/lib/datadog/tracing/contrib/action_mailer/events/deliver.rb +8 -8
- data/lib/datadog/tracing/contrib/action_mailer/events/process.rb +4 -4
- data/lib/datadog/tracing/contrib/action_mailer/events.rb +2 -2
- data/lib/datadog/tracing/contrib/action_mailer/ext.rb +18 -18
- data/lib/datadog/tracing/contrib/action_mailer/integration.rb +7 -7
- data/lib/datadog/tracing/contrib/action_mailer/patcher.rb +3 -3
- data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +8 -8
- data/lib/datadog/tracing/contrib/action_pack/action_controller/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/action_pack/action_dispatch/instrumentation.rb +4 -4
- data/lib/datadog/tracing/contrib/action_pack/action_dispatch/patcher.rb +4 -4
- data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +3 -3
- data/lib/datadog/tracing/contrib/action_pack/ext.rb +10 -10
- data/lib/datadog/tracing/contrib/action_pack/integration.rb +7 -7
- data/lib/datadog/tracing/contrib/action_pack/patcher.rb +3 -3
- data/lib/datadog/tracing/contrib/action_pack/utils.rb +1 -1
- data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +3 -3
- data/lib/datadog/tracing/contrib/action_view/event.rb +1 -1
- data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +6 -6
- data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +6 -6
- data/lib/datadog/tracing/contrib/action_view/events.rb +2 -2
- data/lib/datadog/tracing/contrib/action_view/ext.rb +10 -10
- data/lib/datadog/tracing/contrib/action_view/integration.rb +11 -11
- data/lib/datadog/tracing/contrib/action_view/patcher.rb +5 -5
- data/lib/datadog/tracing/contrib/action_view/utils.rb +2 -2
- data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/active_job/data_streams.rb +2 -2
- data/lib/datadog/tracing/contrib/active_job/event.rb +3 -3
- data/lib/datadog/tracing/contrib/active_job/events/discard.rb +5 -5
- data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +5 -5
- data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +5 -5
- data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +5 -5
- data/lib/datadog/tracing/contrib/active_job/events/perform.rb +5 -5
- data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +5 -5
- data/lib/datadog/tracing/contrib/active_job/events.rb +6 -6
- data/lib/datadog/tracing/contrib/active_job/ext.rb +23 -23
- data/lib/datadog/tracing/contrib/active_job/integration.rb +7 -7
- data/lib/datadog/tracing/contrib/active_job/patcher.rb +7 -7
- data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/active_model_serializers/event.rb +4 -4
- data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +6 -6
- data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +6 -6
- data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +2 -2
- data/lib/datadog/tracing/contrib/active_model_serializers/ext.rb +10 -10
- data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +5 -5
- data/lib/datadog/tracing/contrib/active_model_serializers/patcher.rb +3 -3
- data/lib/datadog/tracing/contrib/active_record/configuration/makara_resolver.rb +1 -1
- data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +6 -6
- data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +4 -4
- data/lib/datadog/tracing/contrib/active_record/event.rb +1 -1
- data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +8 -8
- data/lib/datadog/tracing/contrib/active_record/events/sql.rb +9 -9
- data/lib/datadog/tracing/contrib/active_record/events.rb +2 -2
- data/lib/datadog/tracing/contrib/active_record/ext.rb +15 -15
- data/lib/datadog/tracing/contrib/active_record/integration.rb +11 -11
- data/lib/datadog/tracing/contrib/active_record/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/active_record/utils.rb +3 -3
- data/lib/datadog/tracing/contrib/active_support/cache/event.rb +1 -1
- data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +11 -11
- data/lib/datadog/tracing/contrib/active_support/cache/events.rb +1 -1
- data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +4 -4
- data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +5 -5
- data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +4 -4
- data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +3 -3
- data/lib/datadog/tracing/contrib/active_support/ext.rb +16 -16
- data/lib/datadog/tracing/contrib/active_support/integration.rb +8 -8
- data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +1 -1
- data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +2 -2
- data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +1 -1
- data/lib/datadog/tracing/contrib/active_support/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/analytics.rb +1 -1
- data/lib/datadog/tracing/contrib/auto_instrument.rb +4 -4
- data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +3 -3
- data/lib/datadog/tracing/contrib/aws/ext.rb +25 -25
- data/lib/datadog/tracing/contrib/aws/instrumentation.rb +5 -5
- data/lib/datadog/tracing/contrib/aws/integration.rb +9 -9
- data/lib/datadog/tracing/contrib/aws/parsed_context.rb +1 -1
- data/lib/datadog/tracing/contrib/aws/patcher.rb +5 -5
- data/lib/datadog/tracing/contrib/aws/service/dynamodb.rb +2 -2
- data/lib/datadog/tracing/contrib/aws/service/eventbridge.rb +2 -2
- data/lib/datadog/tracing/contrib/aws/service/kinesis.rb +4 -4
- data/lib/datadog/tracing/contrib/aws/service/s3.rb +2 -2
- data/lib/datadog/tracing/contrib/aws/service/sns.rb +3 -3
- data/lib/datadog/tracing/contrib/aws/service/sqs.rb +3 -3
- data/lib/datadog/tracing/contrib/aws/service/states.rb +5 -5
- data/lib/datadog/tracing/contrib/aws/services.rb +14 -14
- data/lib/datadog/tracing/contrib/concurrent_ruby/async_patch.rb +1 -1
- data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +1 -1
- data/lib/datadog/tracing/contrib/concurrent_ruby/ext.rb +2 -2
- data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +1 -1
- data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +6 -6
- data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +4 -4
- data/lib/datadog/tracing/contrib/concurrent_ruby/promises_future_patch.rb +1 -1
- data/lib/datadog/tracing/contrib/configurable.rb +2 -2
- data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +1 -1
- data/lib/datadog/tracing/contrib/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/dalli/ext.rb +13 -13
- data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +5 -5
- data/lib/datadog/tracing/contrib/dalli/integration.rb +7 -7
- data/lib/datadog/tracing/contrib/dalli/patcher.rb +3 -3
- data/lib/datadog/tracing/contrib/dalli/quantize.rb +2 -2
- data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/delayed_job/ext.rb +14 -14
- data/lib/datadog/tracing/contrib/delayed_job/integration.rb +5 -5
- data/lib/datadog/tracing/contrib/delayed_job/patcher.rb +3 -3
- data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +5 -5
- data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +15 -15
- data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +6 -6
- data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +10 -10
- data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +2 -2
- data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +8 -8
- data/lib/datadog/tracing/contrib/ethon/ext.rb +13 -13
- data/lib/datadog/tracing/contrib/ethon/integration.rb +6 -6
- data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +3 -3
- data/lib/datadog/tracing/contrib/ethon/patcher.rb +3 -3
- data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +5 -5
- data/lib/datadog/tracing/contrib/excon/ext.rb +11 -11
- data/lib/datadog/tracing/contrib/excon/integration.rb +6 -6
- data/lib/datadog/tracing/contrib/excon/middleware.rb +8 -8
- data/lib/datadog/tracing/contrib/excon/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/ext.rb +15 -15
- data/lib/datadog/tracing/contrib/extensions.rb +2 -2
- data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +4 -4
- data/lib/datadog/tracing/contrib/faraday/ext.rb +11 -11
- data/lib/datadog/tracing/contrib/faraday/integration.rb +6 -6
- data/lib/datadog/tracing/contrib/faraday/middleware.rb +8 -8
- data/lib/datadog/tracing/contrib/faraday/patcher.rb +6 -6
- data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +4 -4
- data/lib/datadog/tracing/contrib/grape/endpoint.rb +20 -20
- data/lib/datadog/tracing/contrib/grape/ext.rb +15 -15
- data/lib/datadog/tracing/contrib/grape/instrumentation.rb +3 -3
- data/lib/datadog/tracing/contrib/grape/integration.rb +5 -5
- data/lib/datadog/tracing/contrib/grape/patcher.rb +5 -5
- data/lib/datadog/tracing/contrib/graphql/configuration/error_extension_env_parser.rb +1 -1
- data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +3 -3
- data/lib/datadog/tracing/contrib/graphql/ext.rb +9 -9
- data/lib/datadog/tracing/contrib/graphql/integration.rb +9 -9
- data/lib/datadog/tracing/contrib/graphql/patcher.rb +7 -7
- data/lib/datadog/tracing/contrib/graphql/unified_trace.rb +37 -37
- data/lib/datadog/tracing/contrib/graphql/unified_trace_patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +7 -7
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +7 -7
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +6 -6
- data/lib/datadog/tracing/contrib/grpc/distributed/fetcher.rb +1 -1
- data/lib/datadog/tracing/contrib/grpc/distributed/propagation.rb +8 -8
- data/lib/datadog/tracing/contrib/grpc/ext.rb +14 -14
- data/lib/datadog/tracing/contrib/grpc/formatting.rb +7 -7
- data/lib/datadog/tracing/contrib/grpc/integration.rb +5 -5
- data/lib/datadog/tracing/contrib/grpc/intercept_with_datadog.rb +1 -1
- data/lib/datadog/tracing/contrib/grpc/patcher.rb +3 -3
- data/lib/datadog/tracing/contrib/grpc.rb +6 -6
- data/lib/datadog/tracing/contrib/hanami/action_tracer.rb +3 -3
- data/lib/datadog/tracing/contrib/hanami/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/hanami/ext.rb +8 -8
- data/lib/datadog/tracing/contrib/hanami/integration.rb +6 -6
- data/lib/datadog/tracing/contrib/hanami/patcher.rb +5 -5
- data/lib/datadog/tracing/contrib/hanami/renderer_policy_tracing.rb +3 -3
- data/lib/datadog/tracing/contrib/hanami/router_tracing.rb +5 -4
- data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +1 -1
- data/lib/datadog/tracing/contrib/http/configuration/settings.rb +4 -4
- data/lib/datadog/tracing/contrib/http/distributed/fetcher.rb +3 -3
- data/lib/datadog/tracing/contrib/http/distributed/propagation.rb +8 -8
- data/lib/datadog/tracing/contrib/http/ext.rb +11 -11
- data/lib/datadog/tracing/contrib/http/instrumentation.rb +6 -6
- data/lib/datadog/tracing/contrib/http/integration.rb +7 -7
- data/lib/datadog/tracing/contrib/http/patcher.rb +3 -3
- data/lib/datadog/tracing/contrib/http.rb +6 -6
- data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +4 -4
- data/lib/datadog/tracing/contrib/httpclient/ext.rb +11 -11
- data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +5 -5
- data/lib/datadog/tracing/contrib/httpclient/integration.rb +6 -6
- data/lib/datadog/tracing/contrib/httpclient/patcher.rb +3 -3
- data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +4 -4
- data/lib/datadog/tracing/contrib/httprb/ext.rb +11 -11
- data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +6 -6
- data/lib/datadog/tracing/contrib/httprb/integration.rb +7 -7
- data/lib/datadog/tracing/contrib/httprb/patcher.rb +3 -3
- data/lib/datadog/tracing/contrib/integration.rb +3 -3
- data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/kafka/event.rb +3 -3
- data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +7 -3
- data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +4 -4
- data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +4 -4
- data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +5 -5
- data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +5 -5
- data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +5 -5
- data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +5 -5
- data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +10 -5
- data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +10 -5
- data/lib/datadog/tracing/contrib/kafka/events.rb +9 -9
- data/lib/datadog/tracing/contrib/kafka/ext.rb +40 -40
- data/lib/datadog/tracing/contrib/kafka/instrumentation/consumer.rb +2 -2
- data/lib/datadog/tracing/contrib/kafka/instrumentation/producer.rb +4 -4
- data/lib/datadog/tracing/contrib/kafka/integration.rb +6 -6
- data/lib/datadog/tracing/contrib/kafka/patcher.rb +5 -5
- data/lib/datadog/tracing/contrib/karafka/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/karafka/distributed/propagation.rb +8 -8
- data/lib/datadog/tracing/contrib/karafka/ext.rb +13 -13
- data/lib/datadog/tracing/contrib/karafka/integration.rb +5 -5
- data/lib/datadog/tracing/contrib/karafka/monitor.rb +14 -14
- data/lib/datadog/tracing/contrib/karafka/patcher.rb +8 -8
- data/lib/datadog/tracing/contrib/karafka.rb +6 -6
- data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/lograge/ext.rb +1 -1
- data/lib/datadog/tracing/contrib/lograge/integration.rb +5 -5
- data/lib/datadog/tracing/contrib/lograge/patcher.rb +9 -9
- data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/mongodb/ext.rb +18 -18
- data/lib/datadog/tracing/contrib/mongodb/instrumentation.rb +3 -3
- data/lib/datadog/tracing/contrib/mongodb/integration.rb +7 -7
- data/lib/datadog/tracing/contrib/mongodb/parsers.rb +5 -5
- data/lib/datadog/tracing/contrib/mongodb/patcher.rb +3 -3
- data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +13 -13
- data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +3 -3
- data/lib/datadog/tracing/contrib/mysql2/ext.rb +11 -11
- data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +6 -6
- data/lib/datadog/tracing/contrib/mysql2/integration.rb +5 -5
- data/lib/datadog/tracing/contrib/mysql2/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/opensearch/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/opensearch/ext.rb +22 -22
- data/lib/datadog/tracing/contrib/opensearch/integration.rb +6 -6
- data/lib/datadog/tracing/contrib/opensearch/patcher.rb +13 -13
- data/lib/datadog/tracing/contrib/opensearch/quantize.rb +3 -3
- data/lib/datadog/tracing/contrib/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +3 -3
- data/lib/datadog/tracing/contrib/pg/ext.rb +19 -19
- data/lib/datadog/tracing/contrib/pg/instrumentation.rb +6 -6
- data/lib/datadog/tracing/contrib/pg/integration.rb +5 -5
- data/lib/datadog/tracing/contrib/pg/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/presto/ext.rb +21 -21
- data/lib/datadog/tracing/contrib/presto/instrumentation.rb +2 -2
- data/lib/datadog/tracing/contrib/presto/integration.rb +6 -6
- data/lib/datadog/tracing/contrib/presto/patcher.rb +4 -4
- data/lib/datadog/tracing/contrib/propagation/sql_comment/comment.rb +2 -2
- data/lib/datadog/tracing/contrib/propagation/sql_comment/ext.rb +17 -17
- data/lib/datadog/tracing/contrib/propagation/sql_comment/mode.rb +1 -1
- data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +5 -5
- data/lib/datadog/tracing/contrib/que/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/que/ext.rb +19 -19
- data/lib/datadog/tracing/contrib/que/integration.rb +6 -6
- data/lib/datadog/tracing/contrib/que/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/que/tracer.rb +1 -1
- data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +3 -3
- data/lib/datadog/tracing/contrib/racecar/event.rb +4 -4
- data/lib/datadog/tracing/contrib/racecar/events/batch.rb +3 -3
- data/lib/datadog/tracing/contrib/racecar/events/consume.rb +3 -3
- data/lib/datadog/tracing/contrib/racecar/events/message.rb +3 -3
- data/lib/datadog/tracing/contrib/racecar/events.rb +3 -3
- data/lib/datadog/tracing/contrib/racecar/ext.rb +18 -18
- data/lib/datadog/tracing/contrib/racecar/integration.rb +5 -5
- data/lib/datadog/tracing/contrib/racecar/patcher.rb +3 -3
- data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/rack/ext.rb +33 -33
- data/lib/datadog/tracing/contrib/rack/header_collection.rb +3 -3
- data/lib/datadog/tracing/contrib/rack/header_tagging.rb +4 -4
- data/lib/datadog/tracing/contrib/rack/integration.rb +6 -6
- data/lib/datadog/tracing/contrib/rack/middlewares.rb +24 -24
- data/lib/datadog/tracing/contrib/rack/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/rack/request_queue.rb +3 -3
- data/lib/datadog/tracing/contrib/rack/route_inference.rb +11 -11
- data/lib/datadog/tracing/contrib/rack/trace_proxy_middleware.rb +15 -15
- data/lib/datadog/tracing/contrib/rails/auto_instrument_railtie.rb +1 -1
- data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +3 -3
- data/lib/datadog/tracing/contrib/rails/ext.rb +15 -15
- data/lib/datadog/tracing/contrib/rails/framework.rb +11 -11
- data/lib/datadog/tracing/contrib/rails/integration.rb +5 -5
- data/lib/datadog/tracing/contrib/rails/middlewares.rb +1 -1
- data/lib/datadog/tracing/contrib/rails/patcher.rb +8 -8
- data/lib/datadog/tracing/contrib/rails/railtie.rb +4 -4
- data/lib/datadog/tracing/contrib/rails/runner.rb +1 -1
- data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +3 -3
- data/lib/datadog/tracing/contrib/rake/ext.rb +12 -12
- data/lib/datadog/tracing/contrib/rake/instrumentation.rb +4 -4
- data/lib/datadog/tracing/contrib/rake/integration.rb +5 -5
- data/lib/datadog/tracing/contrib/rake/patcher.rb +3 -3
- data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +2 -2
- data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/redis/ext.rb +16 -16
- data/lib/datadog/tracing/contrib/redis/instrumentation.rb +6 -6
- data/lib/datadog/tracing/contrib/redis/integration.rb +7 -7
- data/lib/datadog/tracing/contrib/redis/patcher.rb +10 -10
- data/lib/datadog/tracing/contrib/redis/quantize.rb +4 -4
- data/lib/datadog/tracing/contrib/redis/tags.rb +5 -5
- data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +5 -5
- data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/resque/ext.rb +7 -7
- data/lib/datadog/tracing/contrib/resque/integration.rb +5 -5
- data/lib/datadog/tracing/contrib/resque/patcher.rb +3 -3
- data/lib/datadog/tracing/contrib/resque/resque_job.rb +5 -5
- data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/rest_client/ext.rb +10 -10
- data/lib/datadog/tracing/contrib/rest_client/integration.rb +6 -6
- data/lib/datadog/tracing/contrib/rest_client/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +5 -5
- data/lib/datadog/tracing/contrib/roda/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/roda/ext.rb +6 -6
- data/lib/datadog/tracing/contrib/roda/instrumentation.rb +4 -4
- data/lib/datadog/tracing/contrib/roda/integration.rb +6 -6
- data/lib/datadog/tracing/contrib/roda/patcher.rb +3 -3
- data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/semantic_logger/ext.rb +1 -1
- data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +5 -5
- data/lib/datadog/tracing/contrib/semantic_logger/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/sequel/database.rb +6 -10
- data/lib/datadog/tracing/contrib/sequel/dataset.rb +5 -5
- data/lib/datadog/tracing/contrib/sequel/ext.rb +12 -8
- data/lib/datadog/tracing/contrib/sequel/integration.rb +5 -5
- data/lib/datadog/tracing/contrib/sequel/patcher.rb +3 -3
- data/lib/datadog/tracing/contrib/sequel/utils.rb +113 -8
- data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/shoryuken/ext.rb +12 -12
- data/lib/datadog/tracing/contrib/shoryuken/integration.rb +6 -6
- data/lib/datadog/tracing/contrib/shoryuken/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +2 -2
- data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +8 -8
- data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/sidekiq/distributed/propagation.rb +9 -9
- data/lib/datadog/tracing/contrib/sidekiq/ext.rb +30 -30
- data/lib/datadog/tracing/contrib/sidekiq/integration.rb +7 -7
- data/lib/datadog/tracing/contrib/sidekiq/patcher.rb +8 -8
- data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +13 -13
- data/lib/datadog/tracing/contrib/sidekiq/utils.rb +9 -9
- data/lib/datadog/tracing/contrib/sidekiq.rb +6 -6
- data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/sinatra/env.rb +6 -6
- data/lib/datadog/tracing/contrib/sinatra/ext.rb +17 -17
- data/lib/datadog/tracing/contrib/sinatra/framework.rb +1 -1
- data/lib/datadog/tracing/contrib/sinatra/integration.rb +5 -5
- data/lib/datadog/tracing/contrib/sinatra/patcher.rb +5 -5
- data/lib/datadog/tracing/contrib/sinatra/tracer.rb +10 -10
- data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +8 -8
- data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +1 -1
- data/lib/datadog/tracing/contrib/sneakers/ext.rb +12 -12
- data/lib/datadog/tracing/contrib/sneakers/integration.rb +7 -7
- data/lib/datadog/tracing/contrib/sneakers/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/sneakers/tracer.rb +3 -3
- data/lib/datadog/tracing/contrib/span_attribute_schema.rb +2 -2
- data/lib/datadog/tracing/contrib/status_range_env_parser.rb +2 -2
- data/lib/datadog/tracing/contrib/status_range_matcher.rb +1 -1
- data/lib/datadog/tracing/contrib/stripe/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/stripe/ext.rb +12 -12
- data/lib/datadog/tracing/contrib/stripe/integration.rb +5 -5
- data/lib/datadog/tracing/contrib/stripe/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/stripe/request.rb +3 -3
- data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/sucker_punch/exception_handler.rb +1 -1
- data/lib/datadog/tracing/contrib/sucker_punch/ext.rb +13 -13
- data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +4 -4
- data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +5 -5
- data/lib/datadog/tracing/contrib/sucker_punch/patcher.rb +4 -4
- data/lib/datadog/tracing/contrib/trilogy/configuration/settings.rb +3 -3
- data/lib/datadog/tracing/contrib/trilogy/ext.rb +11 -11
- data/lib/datadog/tracing/contrib/trilogy/instrumentation.rb +6 -6
- data/lib/datadog/tracing/contrib/trilogy/integration.rb +5 -5
- data/lib/datadog/tracing/contrib/trilogy/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/utils/database.rb +5 -5
- data/lib/datadog/tracing/contrib/utils/quantization/hash_formatter.rb +1 -1
- data/lib/datadog/tracing/contrib/utils/quantization/http.rb +10 -10
- data/lib/datadog/tracing/contrib/waterdrop/configuration/settings.rb +2 -2
- data/lib/datadog/tracing/contrib/waterdrop/distributed/propagation.rb +8 -8
- data/lib/datadog/tracing/contrib/waterdrop/ext.rb +4 -4
- data/lib/datadog/tracing/contrib/waterdrop/integration.rb +5 -5
- data/lib/datadog/tracing/contrib/waterdrop/middleware.rb +2 -2
- data/lib/datadog/tracing/contrib/waterdrop/patcher.rb +7 -7
- data/lib/datadog/tracing/contrib/waterdrop/producer.rb +3 -3
- data/lib/datadog/tracing/contrib/waterdrop.rb +6 -6
- data/lib/datadog/tracing/contrib.rb +54 -54
- data/lib/datadog/tracing/correlation.rb +10 -10
- data/lib/datadog/tracing/diagnostics/environment_logger.rb +9 -9
- data/lib/datadog/tracing/diagnostics/ext.rb +19 -19
- data/lib/datadog/tracing/diagnostics/health.rb +1 -1
- data/lib/datadog/tracing/distributed/b3_multi.rb +8 -8
- data/lib/datadog/tracing/distributed/b3_single.rb +4 -4
- data/lib/datadog/tracing/distributed/baggage.rb +27 -27
- data/lib/datadog/tracing/distributed/datadog.rb +21 -21
- data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +3 -3
- data/lib/datadog/tracing/distributed/fetcher.rb +1 -1
- data/lib/datadog/tracing/distributed/helpers.rb +3 -3
- data/lib/datadog/tracing/distributed/propagation.rb +12 -12
- data/lib/datadog/tracing/distributed/propagation_policy.rb +5 -0
- data/lib/datadog/tracing/distributed/trace_context.rb +33 -33
- data/lib/datadog/tracing/event.rb +1 -1
- data/lib/datadog/tracing/ext.rb +1 -1
- data/lib/datadog/tracing/metadata/analytics.rb +2 -2
- data/lib/datadog/tracing/metadata/errors.rb +4 -4
- data/lib/datadog/tracing/metadata/ext.rb +69 -69
- data/lib/datadog/tracing/metadata/metastruct.rb +1 -1
- data/lib/datadog/tracing/metadata/metastruct_tagging.rb +1 -1
- data/lib/datadog/tracing/metadata/tagging.rb +2 -2
- data/lib/datadog/tracing/metadata.rb +4 -4
- data/lib/datadog/tracing/pipeline/span_filter.rb +2 -2
- data/lib/datadog/tracing/pipeline.rb +2 -2
- data/lib/datadog/tracing/remote.rb +23 -16
- data/lib/datadog/tracing/sampling/all_sampler.rb +1 -1
- data/lib/datadog/tracing/sampling/ext.rb +8 -8
- data/lib/datadog/tracing/sampling/matcher.rb +4 -4
- data/lib/datadog/tracing/sampling/priority_sampler.rb +4 -4
- data/lib/datadog/tracing/sampling/rate_by_key_sampler.rb +3 -3
- data/lib/datadog/tracing/sampling/rate_by_service_sampler.rb +2 -2
- data/lib/datadog/tracing/sampling/rate_sampler.rb +2 -2
- data/lib/datadog/tracing/sampling/rule.rb +4 -4
- data/lib/datadog/tracing/sampling/rule_sampler.rb +12 -12
- data/lib/datadog/tracing/sampling/sampler.rb +2 -2
- data/lib/datadog/tracing/sampling/span/ext.rb +3 -3
- data/lib/datadog/tracing/sampling/span/matcher.rb +2 -2
- data/lib/datadog/tracing/sampling/span/rule.rb +1 -1
- data/lib/datadog/tracing/sampling/span/rule_parser.rb +8 -8
- data/lib/datadog/tracing/span.rb +8 -8
- data/lib/datadog/tracing/span_event.rb +5 -5
- data/lib/datadog/tracing/span_operation.rb +21 -21
- data/lib/datadog/tracing/sync_writer.rb +12 -7
- data/lib/datadog/tracing/trace_operation.rb +11 -11
- data/lib/datadog/tracing/trace_segment.rb +10 -10
- data/lib/datadog/tracing/tracer.rb +23 -15
- data/lib/datadog/tracing/transport/http/client.rb +4 -4
- data/lib/datadog/tracing/transport/http/statistics.rb +2 -2
- data/lib/datadog/tracing/transport/http/traces.rb +8 -8
- data/lib/datadog/tracing/transport/http.rb +10 -10
- data/lib/datadog/tracing/transport/io/client.rb +2 -2
- data/lib/datadog/tracing/transport/io/response.rb +1 -1
- data/lib/datadog/tracing/transport/io/traces.rb +4 -4
- data/lib/datadog/tracing/transport/io.rb +3 -3
- data/lib/datadog/tracing/transport/native/response.rb +71 -0
- data/lib/datadog/tracing/transport/native.rb +363 -0
- data/lib/datadog/tracing/transport/serializable_trace.rb +19 -19
- data/lib/datadog/tracing/transport/statistics.rb +2 -2
- data/lib/datadog/tracing/transport/trace_formatter.rb +10 -10
- data/lib/datadog/tracing/transport/traces.rb +8 -8
- data/lib/datadog/tracing/utils.rb +2 -2
- data/lib/datadog/tracing/workers.rb +2 -2
- data/lib/datadog/tracing/writer.rb +21 -8
- data/lib/datadog/tracing.rb +3 -3
- data/lib/datadog/version.rb +4 -4
- data/lib/datadog.rb +13 -13
- metadata +13 -5
data/lib/datadog/di/boot.rb
CHANGED
|
@@ -1,27 +1,27 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require_relative
|
|
4
|
-
require_relative
|
|
5
|
-
require_relative
|
|
6
|
-
require_relative
|
|
7
|
-
require_relative
|
|
8
|
-
require_relative
|
|
9
|
-
require_relative
|
|
10
|
-
require_relative
|
|
11
|
-
require_relative
|
|
12
|
-
require_relative
|
|
13
|
-
require_relative
|
|
14
|
-
require_relative
|
|
15
|
-
require_relative
|
|
16
|
-
require_relative
|
|
17
|
-
require_relative
|
|
18
|
-
require_relative
|
|
19
|
-
require_relative
|
|
20
|
-
require_relative
|
|
21
|
-
require_relative
|
|
22
|
-
require_relative
|
|
3
|
+
require_relative "logger"
|
|
4
|
+
require_relative "base"
|
|
5
|
+
require_relative "error"
|
|
6
|
+
require_relative "code_tracker"
|
|
7
|
+
require_relative "component"
|
|
8
|
+
require_relative "context"
|
|
9
|
+
require_relative "capture_limits"
|
|
10
|
+
require_relative "capture_expression"
|
|
11
|
+
require_relative "capture_expression_evaluator"
|
|
12
|
+
require_relative "instrumenter"
|
|
13
|
+
require_relative "probe"
|
|
14
|
+
require_relative "probe_builder"
|
|
15
|
+
require_relative "probe_manager"
|
|
16
|
+
require_relative "probe_notification_builder"
|
|
17
|
+
require_relative "probe_notifier_worker"
|
|
18
|
+
require_relative "probe_repository"
|
|
19
|
+
require_relative "redactor"
|
|
20
|
+
require_relative "serializer"
|
|
21
|
+
require_relative "transport/http"
|
|
22
|
+
require_relative "utils"
|
|
23
23
|
|
|
24
|
-
if %w[1 true yes].include?(Datadog::DATADOG_ENV[
|
|
24
|
+
if %w[1 true yes].include?(Datadog::DATADOG_ENV["DD_DYNAMIC_INSTRUMENTATION_ENABLED"])
|
|
25
25
|
|
|
26
26
|
# For initial release of Dynamic Instrumentation, activate code tracking
|
|
27
27
|
# only if DI is explicitly requested in the environment.
|
|
@@ -35,13 +35,13 @@ if %w[1 true yes].include?(Datadog::DATADOG_ENV['DD_DYNAMIC_INSTRUMENTATION_ENAB
|
|
|
35
35
|
Datadog::DI.activate_tracking
|
|
36
36
|
end
|
|
37
37
|
|
|
38
|
-
require_relative
|
|
38
|
+
require_relative "contrib"
|
|
39
39
|
|
|
40
40
|
Datadog::DI::Contrib.load_now_or_later
|
|
41
41
|
|
|
42
|
-
if %w[1 true yes].include?(Datadog::DATADOG_ENV[
|
|
43
|
-
if Datadog::DATADOG_ENV[
|
|
44
|
-
require_relative
|
|
42
|
+
if %w[1 true yes].include?(Datadog::DATADOG_ENV["DD_DYNAMIC_INSTRUMENTATION_ENABLED"])
|
|
43
|
+
if Datadog::DATADOG_ENV["DD_DYNAMIC_INSTRUMENTATION_PROBE_FILE"]
|
|
44
|
+
require_relative "probe_file_loader"
|
|
45
45
|
Datadog::DI::ProbeFileLoader.load_now_or_later
|
|
46
46
|
end
|
|
47
47
|
end
|
|
@@ -2,8 +2,8 @@
|
|
|
2
2
|
|
|
3
3
|
# rubocop:disable Lint/AssignmentInCondition
|
|
4
4
|
|
|
5
|
-
require_relative
|
|
6
|
-
require_relative
|
|
5
|
+
require_relative "error"
|
|
6
|
+
require_relative "fatal_exceptions"
|
|
7
7
|
|
|
8
8
|
module Datadog
|
|
9
9
|
module DI
|
|
@@ -275,8 +275,8 @@ module Datadog
|
|
|
275
275
|
if inexact.any?
|
|
276
276
|
return inexact.first
|
|
277
277
|
end
|
|
278
|
-
break unless working_suffix.include?(
|
|
279
|
-
working_suffix.sub!(%r{.*/+},
|
|
278
|
+
break unless working_suffix.include?("/")
|
|
279
|
+
working_suffix.sub!(%r{.*/+}, "")
|
|
280
280
|
end
|
|
281
281
|
end
|
|
282
282
|
nil
|
|
@@ -393,8 +393,8 @@ module Datadog
|
|
|
393
393
|
matches = paths.select { |p| Utils.path_matches_suffix?(p, working_suffix, case_insensitive: case_insensitive) }
|
|
394
394
|
raise Error::MultiplePathsMatch, "Multiple paths matched requested suffix" if matches.length > 1
|
|
395
395
|
return matches.first if matches.any?
|
|
396
|
-
break unless working_suffix.include?(
|
|
397
|
-
working_suffix.sub!(%r{.*/+},
|
|
396
|
+
break unless working_suffix.include?("/")
|
|
397
|
+
working_suffix.sub!(%r{.*/+}, "")
|
|
398
398
|
end
|
|
399
399
|
end
|
|
400
400
|
nil
|
data/lib/datadog/di/component.rb
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require_relative
|
|
3
|
+
require_relative "fatal_exceptions"
|
|
4
4
|
|
|
5
5
|
module Datadog
|
|
6
6
|
module DI
|
|
@@ -123,6 +123,14 @@ module Datadog
|
|
|
123
123
|
@lifecycle_mutex.synchronize do
|
|
124
124
|
return if @started
|
|
125
125
|
|
|
126
|
+
# DI.activate_tracking creates the global code tracker lazily. When DI
|
|
127
|
+
# is enabled after boot via remote configuration (in-product
|
|
128
|
+
# enablement), this component and its instrumenter were built with a
|
|
129
|
+
# nil tracker; adopt the now-current global tracker so line probes
|
|
130
|
+
# can be targeted.
|
|
131
|
+
@code_tracker = DI.code_tracker
|
|
132
|
+
instrumenter.code_tracker = @code_tracker
|
|
133
|
+
|
|
126
134
|
probe_notifier_worker.start
|
|
127
135
|
probe_manager.reopen
|
|
128
136
|
@started = true
|
|
@@ -190,14 +198,14 @@ module Datadog
|
|
|
190
198
|
Datadog::DI.reraise_if_fatal(exc)
|
|
191
199
|
begin
|
|
192
200
|
probe = Struct.new(:id).new(
|
|
193
|
-
probe_spec[
|
|
201
|
+
probe_spec["id"],
|
|
194
202
|
)
|
|
195
203
|
payload = probe_notification_builder.build_errored(probe, exc)
|
|
196
204
|
probe_notifier_worker.add_status(payload)
|
|
197
205
|
rescue Exception => nested_exc # standard:disable Lint/RescueException
|
|
198
206
|
Datadog::DI.reraise_if_fatal(nested_exc)
|
|
199
207
|
logger.debug { "di: failed to build error notification: #{nested_exc.class}: #{nested_exc.message}" }
|
|
200
|
-
telemetry&.report(nested_exc, description:
|
|
208
|
+
telemetry&.report(nested_exc, description: "Error building probe error notification")
|
|
201
209
|
raise
|
|
202
210
|
end
|
|
203
211
|
|
|
@@ -137,7 +137,7 @@ module Datadog
|
|
|
137
137
|
option :max_time_to_serialize_ms do |o|
|
|
138
138
|
o.type :int
|
|
139
139
|
o.default 200
|
|
140
|
-
o.env
|
|
140
|
+
o.env "DD_DYNAMIC_INSTRUMENTATION_MAX_TIME_TO_SERIALIZE"
|
|
141
141
|
end
|
|
142
142
|
|
|
143
143
|
# Settings in the 'internal' group are for internal Datadog
|
|
@@ -229,7 +229,7 @@ module Datadog
|
|
|
229
229
|
# dedicated environment variable in the future but
|
|
230
230
|
# will likely need a way to turn on remote config
|
|
231
231
|
# debugging (since DI uses RC for configuration).
|
|
232
|
-
o.env
|
|
232
|
+
o.env "DD_TRACE_DEBUG"
|
|
233
233
|
end
|
|
234
234
|
|
|
235
235
|
# If the CPU time consumed by the thread performing instrumentation
|
|
@@ -6,7 +6,7 @@ module Datadog
|
|
|
6
6
|
# Railtie class initializes dynamic instrumentation contrib code
|
|
7
7
|
# in Rails environments.
|
|
8
8
|
class Railtie < Rails::Railtie
|
|
9
|
-
initializer
|
|
9
|
+
initializer "datadog.dynamic_instrumentation.initialize" do |app|
|
|
10
10
|
Contrib.load_now
|
|
11
11
|
end
|
|
12
12
|
end
|
data/lib/datadog/di/contrib.rb
CHANGED
|
@@ -1,14 +1,14 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require_relative
|
|
3
|
+
require_relative "../core/contrib/rails/utils"
|
|
4
4
|
|
|
5
5
|
module Datadog
|
|
6
6
|
module DI
|
|
7
7
|
module Contrib
|
|
8
8
|
module_function def load_now_or_later
|
|
9
9
|
if Datadog::Core::Contrib::Rails::Utils.railtie_supported?
|
|
10
|
-
Datadog.logger.debug(
|
|
11
|
-
require_relative
|
|
10
|
+
Datadog.logger.debug("di: loading contrib/railtie")
|
|
11
|
+
require_relative "contrib/railtie"
|
|
12
12
|
else
|
|
13
13
|
load_now
|
|
14
14
|
end
|
|
@@ -19,8 +19,8 @@ module Datadog
|
|
|
19
19
|
# dependencies are loaded (or potentially loaded).
|
|
20
20
|
module_function def load_now
|
|
21
21
|
if defined?(ActiveRecord::Base)
|
|
22
|
-
Datadog.logger.debug(
|
|
23
|
-
require_relative
|
|
22
|
+
Datadog.logger.debug("di: loading contrib/active_record")
|
|
23
|
+
require_relative "contrib/active_record"
|
|
24
24
|
end
|
|
25
25
|
end
|
|
26
26
|
end
|
|
@@ -16,20 +16,31 @@ module Datadog
|
|
|
16
16
|
#
|
|
17
17
|
# @api private
|
|
18
18
|
class Compiler
|
|
19
|
+
# Compiles +ast+ into eval'able Ruby source.
|
|
20
|
+
#
|
|
21
|
+
# Returns the compiled source and companion compiled Regexp
|
|
22
|
+
# objects.
|
|
23
|
+
#
|
|
24
|
+
# @param ast [untyped] expression AST from the probe definition.
|
|
25
|
+
# @return [Array(String, Array<Regexp>)] the compiled Ruby source and
|
|
26
|
+
# the precompiled Regexps, indexed in the order the compiled code
|
|
27
|
+
# references them.
|
|
19
28
|
def compile(ast)
|
|
20
|
-
|
|
29
|
+
regexps = []
|
|
30
|
+
code = compile_partial(ast, regexps)
|
|
31
|
+
[code, regexps]
|
|
21
32
|
end
|
|
22
33
|
|
|
23
34
|
private
|
|
24
35
|
|
|
25
36
|
# Steep: https://github.com/soutaro/steep/issues/363
|
|
26
37
|
OPERATORS = { # steep:ignore IncompatibleAssignment
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
38
|
+
"eq" => "==",
|
|
39
|
+
"ne" => "!=",
|
|
40
|
+
"ge" => ">=",
|
|
41
|
+
"gt" => ">",
|
|
42
|
+
"le" => "<=",
|
|
43
|
+
"lt" => "<",
|
|
33
44
|
}.freeze
|
|
34
45
|
|
|
35
46
|
# Steep: https://github.com/soutaro/steep/issues/363
|
|
@@ -37,49 +48,58 @@ module Datadog
|
|
|
37
48
|
len isEmpty isUndefined
|
|
38
49
|
].freeze # steep:ignore IncompatibleAssignment
|
|
39
50
|
|
|
51
|
+
# `matches` is also a two-argument method but is special-cased in
|
|
52
|
+
# #compile_partial so that regular expressions can be precompiled
|
|
53
|
+
# once, so it is not listed here.
|
|
54
|
+
#
|
|
40
55
|
# Steep: https://github.com/soutaro/steep/issues/363
|
|
41
56
|
TWO_ARG_METHODS = %w[
|
|
42
|
-
startsWith endsWith contains
|
|
57
|
+
startsWith endsWith contains
|
|
43
58
|
getmember index instanceof
|
|
44
59
|
].freeze # steep:ignore IncompatibleAssignment
|
|
45
60
|
|
|
46
61
|
# Steep: https://github.com/soutaro/steep/issues/363
|
|
47
62
|
MULTI_ARG_METHODS = { # steep:ignore IncompatibleAssignment
|
|
48
|
-
|
|
49
|
-
|
|
63
|
+
"and" => "&&",
|
|
64
|
+
"or" => "||",
|
|
50
65
|
}.freeze
|
|
51
66
|
|
|
52
|
-
|
|
67
|
+
# @param ast [untyped] AST node to compile.
|
|
68
|
+
# @param regexps [Array<Regexp>] output array that collects the
|
|
69
|
+
# companion precompiled Regexp objects.
|
|
70
|
+
# @return [String] compiled Ruby source for +ast+.
|
|
71
|
+
def compile_partial(ast, regexps)
|
|
53
72
|
case ast
|
|
54
73
|
when Hash
|
|
55
|
-
|
|
74
|
+
entry = ast.first
|
|
75
|
+
if ast.length != 1 || entry.nil?
|
|
56
76
|
raise DI::Error::InvalidExpression, "Expected hash of length 1: #{ast}"
|
|
57
77
|
end
|
|
58
|
-
op, target =
|
|
78
|
+
op, target = entry
|
|
59
79
|
case op
|
|
60
|
-
when
|
|
80
|
+
when "ref"
|
|
61
81
|
unless String === target
|
|
62
82
|
raise DI::Error::InvalidExpression, "Bad ref value type: #{target.class}: #{target}"
|
|
63
83
|
end
|
|
64
84
|
case target
|
|
65
|
-
when
|
|
66
|
-
|
|
67
|
-
when
|
|
68
|
-
|
|
69
|
-
when
|
|
70
|
-
|
|
71
|
-
when
|
|
85
|
+
when "@it"
|
|
86
|
+
"current_item"
|
|
87
|
+
when "@key"
|
|
88
|
+
"current_key"
|
|
89
|
+
when "@value"
|
|
90
|
+
"current_value"
|
|
91
|
+
when "@return"
|
|
72
92
|
# For @return, @duration and @exception we shadow
|
|
73
93
|
# instance variables.
|
|
74
94
|
"context.return_value"
|
|
75
|
-
when
|
|
95
|
+
when "@duration"
|
|
76
96
|
# There is no way to explicitly format the duration.
|
|
77
97
|
# TODO come up with better formatting?
|
|
78
98
|
# We could format to a string here but what if customer
|
|
79
99
|
# has @duration as part of an expression and wants
|
|
80
100
|
# to retain it as a number?
|
|
81
101
|
"(context.duration && context.duration * 1000)"
|
|
82
|
-
when
|
|
102
|
+
when "@exception"
|
|
83
103
|
"context.exception"
|
|
84
104
|
else
|
|
85
105
|
# Ruby technically allows all kinds of symbols in variable
|
|
@@ -89,44 +109,60 @@ module Datadog
|
|
|
89
109
|
unless target =~ %r{\A(@?)([a-zA-Z0-9_]+)\z}
|
|
90
110
|
raise DI::Error::BadVariableName, "Bad variable name: #{target}"
|
|
91
111
|
end
|
|
92
|
-
method_name = (($1 ==
|
|
112
|
+
method_name = (($1 == "@") ? "iref" : "ref")
|
|
93
113
|
"#{method_name}('#{target}')"
|
|
94
114
|
end
|
|
95
115
|
when *SINGLE_ARG_METHODS
|
|
96
116
|
method_name = op.gsub(/[A-Z]/) { |m| "_#{m.downcase}" }
|
|
97
|
-
"#{method_name}(#{compile_partial(target)}, '#{var_name_maybe(target)}')"
|
|
117
|
+
"#{method_name}(#{compile_partial(target, regexps)}, '#{var_name_maybe(target)}')"
|
|
118
|
+
when "matches"
|
|
119
|
+
unless Array === target && target.length == 2
|
|
120
|
+
raise DI::Error::InvalidExpression, "Improper matches syntax"
|
|
121
|
+
end
|
|
122
|
+
first, second = target
|
|
123
|
+
if String === second
|
|
124
|
+
# Match against a literal regular expression (string).
|
|
125
|
+
index = precompile_regexp(second, regexps)
|
|
126
|
+
"matches_compiled(#{compile_partial(first, regexps)}, #{index})"
|
|
127
|
+
else
|
|
128
|
+
# Match against a (complex) expression.
|
|
129
|
+
"matches(#{compile_partial(first, regexps)}, (#{compile_partial(second, regexps)}))"
|
|
130
|
+
end
|
|
98
131
|
when *TWO_ARG_METHODS
|
|
99
132
|
method_name = op.gsub(/[A-Z]/) { |m| "_#{m.downcase}" }
|
|
100
133
|
unless Array === target && target.length == 2
|
|
101
134
|
raise DI::Error::InvalidExpression, "Improper #{op} syntax"
|
|
102
135
|
end
|
|
103
136
|
first, second = target
|
|
104
|
-
"#{method_name}(#{compile_partial(first)}, (#{compile_partial(second)}))"
|
|
137
|
+
"#{method_name}(#{compile_partial(first, regexps)}, (#{compile_partial(second, regexps)}))"
|
|
105
138
|
when *MULTI_ARG_METHODS.keys
|
|
106
139
|
unless Array === target && target.length >= 1
|
|
107
140
|
raise DI::Error::InvalidExpression, "Improper #{op} syntax"
|
|
108
141
|
end
|
|
109
142
|
compiled_targets = target.map do |item|
|
|
110
|
-
"(#{compile_partial(item)})"
|
|
143
|
+
"(#{compile_partial(item, regexps)})"
|
|
111
144
|
end
|
|
112
145
|
compiled_op = MULTI_ARG_METHODS[op]
|
|
113
146
|
"(#{compiled_targets.join(" #{compiled_op} ")})"
|
|
114
|
-
when
|
|
147
|
+
when "substring"
|
|
115
148
|
unless Array === target && target.length == 3
|
|
116
149
|
raise DI::Error::InvalidExpression, "Improper #{op} syntax"
|
|
117
150
|
end
|
|
118
|
-
"#{op}(#{target.map { |arg| "(#{compile_partial(arg)})" }.join(", ")})"
|
|
119
|
-
when
|
|
120
|
-
"!(#{compile_partial(target)})"
|
|
151
|
+
"#{op}(#{target.map { |arg| "(#{compile_partial(arg, regexps)})" }.join(", ")})"
|
|
152
|
+
when "not"
|
|
153
|
+
"!(#{compile_partial(target, regexps)})"
|
|
121
154
|
when *OPERATORS.keys
|
|
122
155
|
unless Array === target && target.length == 2
|
|
123
156
|
raise DI::Error::InvalidExpression, "Improper #{op} syntax"
|
|
124
157
|
end
|
|
125
158
|
first, second = target
|
|
126
159
|
operator = OPERATORS.fetch(op)
|
|
127
|
-
"(#{compile_partial(first)}) #{operator} (#{compile_partial(second)})"
|
|
128
|
-
when
|
|
129
|
-
|
|
160
|
+
"(#{compile_partial(first, regexps)}) #{operator} (#{compile_partial(second, regexps)})"
|
|
161
|
+
when "any", "all", "filter"
|
|
162
|
+
unless Array === target && target.length == 2
|
|
163
|
+
raise DI::Error::InvalidExpression, "Improper #{op} syntax"
|
|
164
|
+
end
|
|
165
|
+
"#{op}(#{compile_partial(target.first, regexps)}) { |current_item, current_key, current_value| #{compile_partial(target.last, regexps)} }"
|
|
130
166
|
else
|
|
131
167
|
raise DI::Error::InvalidExpression, "Unknown operation: #{op}"
|
|
132
168
|
end
|
|
@@ -151,16 +187,33 @@ module Datadog
|
|
|
151
187
|
# WARNING: the result of this method is included in eval'd code,
|
|
152
188
|
# it must be sanitized to avoid injection.
|
|
153
189
|
def var_name_maybe(target)
|
|
154
|
-
if Hash === target && target.length == 1 && target.keys.first ==
|
|
190
|
+
if Hash === target && target.length == 1 && target.keys.first == "ref" &&
|
|
155
191
|
String === (value = target.values.first)
|
|
156
192
|
escape(value)
|
|
157
193
|
else
|
|
158
|
-
|
|
194
|
+
"(expression)"
|
|
159
195
|
end
|
|
160
196
|
end
|
|
161
197
|
|
|
162
198
|
def escape(needle)
|
|
163
|
-
needle.gsub("\\") { "\\\\" }.gsub('"') { "\\\"" }.gsub(
|
|
199
|
+
needle.gsub("\\") { "\\\\" }.gsub('"') { "\\\"" }.gsub("#") { "\\#" }
|
|
200
|
+
end
|
|
201
|
+
|
|
202
|
+
# Compile a literal regular expression +regexp_str+ at
|
|
203
|
+
# instrumentation time. Append it to +regexps+, returning its index for
|
|
204
|
+
# Evaluator#matches_compiled to look up.
|
|
205
|
+
#
|
|
206
|
+
# @param regexp_str [String] regular expression source.
|
|
207
|
+
# @param regexps [Array<Regexp>] output array to append the compiled
|
|
208
|
+
# regexp to.
|
|
209
|
+
# @return [Integer] index into +regexps+.
|
|
210
|
+
# @raise [DI::Error::InvalidExpression] if +needle+ is not a valid regexp.
|
|
211
|
+
def precompile_regexp(regexp_str, regexps)
|
|
212
|
+
index = regexps.length
|
|
213
|
+
regexps << Evaluator.compile_regexp(regexp_str)
|
|
214
|
+
index
|
|
215
|
+
rescue RegexpError => exc
|
|
216
|
+
raise DI::Error::InvalidExpression, "Invalid regular expression in matches: #{exc.class}: #{exc.message}"
|
|
164
217
|
end
|
|
165
218
|
end
|
|
166
219
|
end
|
|
@@ -1,5 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
+
require_relative "../../ruby_version"
|
|
4
|
+
|
|
5
|
+
require "timeout" if Datadog::RubyVersion.is?("< 3.2")
|
|
6
|
+
|
|
3
7
|
module Datadog
|
|
4
8
|
module DI
|
|
5
9
|
module EL
|
|
@@ -7,6 +11,20 @@ module Datadog
|
|
|
7
11
|
#
|
|
8
12
|
# @api private
|
|
9
13
|
class Evaluator
|
|
14
|
+
# Maximum wall-clock time allowed for evaluating a single `matches`
|
|
15
|
+
# operator.
|
|
16
|
+
MATCHES_TIMEOUT_SECONDS = 0.5
|
|
17
|
+
|
|
18
|
+
# @param regexps [Array<Regexp>] Regexps precompiled from literal
|
|
19
|
+
# `matches` patterns, looked up by index by #matches_compiled.
|
|
20
|
+
# Empty when the expression has no `matches` pattern with
|
|
21
|
+
# a direct regular expression argument.
|
|
22
|
+
def initialize(regexps = [])
|
|
23
|
+
@regexps = regexps
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
attr_reader :regexps
|
|
27
|
+
|
|
10
28
|
def ref(var)
|
|
11
29
|
@context.fetch(var)
|
|
12
30
|
end
|
|
@@ -48,10 +66,72 @@ module Datadog
|
|
|
48
66
|
end
|
|
49
67
|
end
|
|
50
68
|
|
|
69
|
+
# Build a Regexp from a pattern string. On Ruby 3.2+ the per-match
|
|
70
|
+
# timeout (MATCHES_TIMEOUT_SECONDS) is baked into the compiled
|
|
71
|
+
# Regexp via the in-engine `timeout:` keyword, which interrupts the
|
|
72
|
+
# matcher at every backtrack step and reliably bounds matcher
|
|
73
|
+
# runtime regardless of pattern shape. On older Rubies the Regexp
|
|
74
|
+
# carries no timeout; the bound is applied at match time by
|
|
75
|
+
# #bounded_match? instead.
|
|
76
|
+
#
|
|
77
|
+
# @param needle [String] regexp source.
|
|
78
|
+
# @return [Regexp] compiled regexp, with baked-in timeout on Ruby 3.2+.
|
|
79
|
+
if Datadog::RubyVersion.is?(">= 3.2")
|
|
80
|
+
def self.compile_regexp(needle)
|
|
81
|
+
Regexp.new(needle, timeout: MATCHES_TIMEOUT_SECONDS)
|
|
82
|
+
end
|
|
83
|
+
else
|
|
84
|
+
def self.compile_regexp(needle)
|
|
85
|
+
Regexp.compile(needle)
|
|
86
|
+
end
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
# Match +haystack+ against a regexp whose needle is computed at
|
|
90
|
+
# evaluation time, so the Regexp cannot be precompiled. Literal needles are
|
|
91
|
+
# precompiled by the Compiler and dispatched to #matches_compiled.
|
|
92
|
+
#
|
|
93
|
+
# @param haystack [String] string to match against.
|
|
94
|
+
# @param needle [String] regexp source.
|
|
95
|
+
# @return [Boolean] whether the haystack matches the regexp.
|
|
96
|
+
# @raise [Regexp::TimeoutError] (Ruby 3.2+) regexp engine exceeded MATCHES_TIMEOUT_SECONDS.
|
|
97
|
+
# @raise [Timeout::Error] (Ruby < 3.2) Timeout.timeout fired.
|
|
51
98
|
def matches(haystack, needle)
|
|
52
|
-
|
|
53
|
-
|
|
99
|
+
bounded_match?(Evaluator.compile_regexp(needle), haystack)
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
# Match +haystack+ against a Regexp precompiled at expression-compile
|
|
103
|
+
# time, looked up by index in +regexps+.
|
|
104
|
+
#
|
|
105
|
+
# @param haystack [String] string to match against.
|
|
106
|
+
# @param index [Integer] position of the precompiled Regexp in +regexps+.
|
|
107
|
+
# @return [Boolean] whether the haystack matches the regexp.
|
|
108
|
+
# @raise [Regexp::TimeoutError] (Ruby 3.2+) regexp engine exceeded MATCHES_TIMEOUT_SECONDS.
|
|
109
|
+
# @raise [Timeout::Error] (Ruby < 3.2) Timeout.timeout fired.
|
|
110
|
+
def matches_compiled(haystack, index)
|
|
111
|
+
bounded_match?(regexps.fetch(index), haystack)
|
|
112
|
+
end
|
|
113
|
+
|
|
114
|
+
# Match +haystack+ against +re+, bounded at MATCHES_TIMEOUT_SECONDS
|
|
115
|
+
# wall-clock.
|
|
116
|
+
#
|
|
117
|
+
# @param re [Regexp] regexp to match against.
|
|
118
|
+
# @param haystack [String] string to match against.
|
|
119
|
+
# @return [Boolean] whether the haystack matches the regexp.
|
|
120
|
+
if Datadog::RubyVersion.is?(">= 3.2")
|
|
121
|
+
def bounded_match?(re, haystack)
|
|
122
|
+
# Uses Regexp#match? rather than =~ so that the
|
|
123
|
+
# thread-local match data ($~, $1, ...) is not mutated as a side
|
|
124
|
+
# effect of DI expression evaluation.
|
|
125
|
+
re.match?(haystack)
|
|
126
|
+
end
|
|
127
|
+
else
|
|
128
|
+
def bounded_match?(re, haystack)
|
|
129
|
+
Timeout.timeout(MATCHES_TIMEOUT_SECONDS) do
|
|
130
|
+
re.match?(haystack)
|
|
131
|
+
end
|
|
132
|
+
end
|
|
54
133
|
end
|
|
134
|
+
private :bounded_match?
|
|
55
135
|
|
|
56
136
|
def getmember(object, field)
|
|
57
137
|
object.instance_variable_get("@#{field}")
|
|
@@ -7,7 +7,12 @@ module Datadog
|
|
|
7
7
|
#
|
|
8
8
|
# @api private
|
|
9
9
|
class Expression
|
|
10
|
-
|
|
10
|
+
# @param dsl_expr [String] human-readable DSL form, kept for debugging.
|
|
11
|
+
# @param compiled_expr [String] Ruby source produced by Compiler#compile.
|
|
12
|
+
# @param regexps [Array<Regexp>] precompiled `matches` regexps (see
|
|
13
|
+
# Compiler#precompile_regexp), the second element returned by
|
|
14
|
+
# Compiler#compile.
|
|
15
|
+
def initialize(dsl_expr, compiled_expr, regexps = [])
|
|
11
16
|
unless String === compiled_expr
|
|
12
17
|
raise ArgumentError, "compiled_expr must be a string"
|
|
13
18
|
end
|
|
@@ -23,7 +28,10 @@ module Datadog
|
|
|
23
28
|
end
|
|
24
29
|
RUBY
|
|
25
30
|
end
|
|
26
|
-
|
|
31
|
+
# cls inherits Evaluator#initialize(regexps), but Steep types
|
|
32
|
+
# Class#new as () -> untyped and cannot see that initializer
|
|
33
|
+
# through this dynamically created subclass.
|
|
34
|
+
@evaluator = cls.new(regexps) # steep:ignore UnexpectedPositionalArgument
|
|
27
35
|
end
|
|
28
36
|
|
|
29
37
|
attr_reader :dsl_expr
|
data/lib/datadog/di/el.rb
CHANGED
|
@@ -1,9 +1,9 @@
|
|
|
1
1
|
# frozen_string_literal: true
|
|
2
2
|
|
|
3
|
-
require_relative
|
|
4
|
-
require_relative
|
|
5
|
-
require_relative
|
|
6
|
-
require_relative
|
|
3
|
+
require_relative "../core/utils/time"
|
|
4
|
+
require_relative "../ruby_version"
|
|
5
|
+
require_relative "fatal_exceptions"
|
|
6
|
+
require_relative "capture_expression_evaluator"
|
|
7
7
|
|
|
8
8
|
# rubocop:disable Lint/AssignmentInCondition
|
|
9
9
|
# rubocop:disable Style/AndOr
|
|
@@ -85,6 +85,12 @@ module Datadog
|
|
|
85
85
|
attr_reader :telemetry
|
|
86
86
|
attr_reader :code_tracker
|
|
87
87
|
|
|
88
|
+
# The code tracker is a global singleton created lazily by
|
|
89
|
+
# DI.activate_tracking. When DI is enabled after boot via remote
|
|
90
|
+
# configuration this instrumenter was already built with a nil tracker;
|
|
91
|
+
# Component#start! assigns the now-current tracker here.
|
|
92
|
+
attr_writer :code_tracker
|
|
93
|
+
|
|
88
94
|
def capture_expression_evaluator
|
|
89
95
|
@capture_expression_evaluator ||= CaptureExpressionEvaluator.new(
|
|
90
96
|
settings: settings, serializer: serializer, logger: logger, telemetry: telemetry,
|
|
@@ -186,7 +192,7 @@ module Datadog
|
|
|
186
192
|
# invokes it with yield, which does not dispatch Proc#call, so a
|
|
187
193
|
# user probe on Proc#call cannot intercept the trampoline, and no
|
|
188
194
|
# Proc is allocated for the block.
|
|
189
|
-
if RubyVersion.is?(
|
|
195
|
+
if RubyVersion.is?(">= 3")
|
|
190
196
|
define_method(method_name) do |*args, **kwargs, &target_block| # steep:ignore NoMethod
|
|
191
197
|
# steep:ignore FallbackAny below: Steep cannot narrow the
|
|
192
198
|
# **kwargs parameter inside this define_method block, so it
|
|
@@ -694,7 +700,7 @@ module Datadog
|
|
|
694
700
|
#
|
|
695
701
|
# Defined only on Ruby < 3; the Ruby 3+ wrapper captures keyword
|
|
696
702
|
# arguments directly and never calls this.
|
|
697
|
-
if RubyVersion.is?(
|
|
703
|
+
if RubyVersion.is?("< 3")
|
|
698
704
|
def kwargs_from_splat(args)
|
|
699
705
|
last = args.last
|
|
700
706
|
if DI.hash?(last)
|
|
@@ -860,8 +866,8 @@ module Datadog
|
|
|
860
866
|
Utils.path_matches_suffix?(path, working_suffix, case_insensitive: case_insensitive)
|
|
861
867
|
end
|
|
862
868
|
break if found
|
|
863
|
-
break unless working_suffix.include?(
|
|
864
|
-
working_suffix.sub!(%r{.*/+},
|
|
869
|
+
break unless working_suffix.include?("/")
|
|
870
|
+
working_suffix.sub!(%r{.*/+}, "")
|
|
865
871
|
end
|
|
866
872
|
break if found
|
|
867
873
|
end
|
|
@@ -875,7 +881,11 @@ module Datadog
|
|
|
875
881
|
has_per_method = code_tracker&.send(:instance_variable_defined?, :@per_method_registry) &&
|
|
876
882
|
code_tracker.send(:per_method_registry).key?(loaded_path)
|
|
877
883
|
|
|
878
|
-
if
|
|
884
|
+
if code_tracker.nil?
|
|
885
|
+
raise Error::DITargetNotInRegistry,
|
|
886
|
+
"File #{loaded_path} is loaded but code tracking is not active; " \
|
|
887
|
+
"line probes cannot be targeted."
|
|
888
|
+
elsif has_per_method
|
|
879
889
|
raise Error::DITargetNotInRegistry,
|
|
880
890
|
"File #{loaded_path} is loaded and has per-method iseqs, " \
|
|
881
891
|
"but none cover line #{line_no}. " \
|
data/lib/datadog/di/logger.rb
CHANGED
data/lib/datadog/di/preload.rb
CHANGED
|
@@ -4,7 +4,7 @@
|
|
|
4
4
|
# enable dynamic instrumentation for third-party libraries used by the
|
|
5
5
|
# application.
|
|
6
6
|
|
|
7
|
-
require_relative
|
|
7
|
+
require_relative "base"
|
|
8
8
|
|
|
9
9
|
# Code tracking is required for line probes to work; see the comments
|
|
10
10
|
# on the activate_tracking methods in di.rb for further details.
|