ddtrace 1.12.1 → 1.18.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 +388 -10
- data/ext/ddtrace_profiling_native_extension/NativeExtensionDesign.md +3 -5
- data/ext/ddtrace_profiling_native_extension/clock_id.h +0 -3
- data/ext/ddtrace_profiling_native_extension/clock_id_from_pthread.c +3 -22
- data/ext/ddtrace_profiling_native_extension/clock_id_noop.c +0 -1
- data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +41 -6
- data/ext/ddtrace_profiling_native_extension/collectors_idle_sampling_helper.c +3 -0
- data/ext/ddtrace_profiling_native_extension/collectors_stack.c +76 -24
- data/ext/ddtrace_profiling_native_extension/collectors_stack.h +1 -1
- data/ext/ddtrace_profiling_native_extension/collectors_thread_context.c +292 -27
- data/ext/ddtrace_profiling_native_extension/collectors_thread_context.h +1 -1
- data/ext/ddtrace_profiling_native_extension/extconf.rb +40 -10
- data/ext/ddtrace_profiling_native_extension/http_transport.c +48 -16
- data/ext/ddtrace_profiling_native_extension/libdatadog_helpers.c +42 -0
- data/ext/ddtrace_profiling_native_extension/libdatadog_helpers.h +6 -0
- data/ext/ddtrace_profiling_native_extension/native_extension_helpers.rb +1 -1
- data/ext/ddtrace_profiling_native_extension/pid_controller.c +57 -0
- data/ext/ddtrace_profiling_native_extension/pid_controller.h +45 -0
- data/ext/ddtrace_profiling_native_extension/private_vm_api_access.c +136 -32
- data/ext/ddtrace_profiling_native_extension/private_vm_api_access.h +12 -0
- data/ext/ddtrace_profiling_native_extension/profiling.c +1 -2
- data/ext/ddtrace_profiling_native_extension/stack_recorder.c +81 -50
- data/ext/ddtrace_profiling_native_extension/stack_recorder.h +13 -3
- data/ext/ddtrace_profiling_native_extension/time_helpers.c +40 -4
- data/ext/ddtrace_profiling_native_extension/time_helpers.h +14 -0
- data/lib/datadog/appsec/assets/waf_rules/processors.json +92 -0
- data/lib/datadog/appsec/assets/waf_rules/recommended.json +698 -75
- data/lib/datadog/appsec/assets/waf_rules/scanners.json +114 -0
- data/lib/datadog/appsec/assets/waf_rules/strict.json +98 -8
- data/lib/datadog/appsec/assets.rb +8 -0
- data/lib/datadog/appsec/component.rb +21 -2
- data/lib/datadog/appsec/configuration/settings.rb +167 -189
- data/lib/datadog/appsec/configuration.rb +0 -79
- data/lib/datadog/appsec/contrib/auto_instrument.rb +2 -4
- data/lib/datadog/appsec/contrib/devise/event.rb +57 -0
- data/lib/datadog/appsec/contrib/devise/ext.rb +13 -0
- data/lib/datadog/appsec/contrib/devise/integration.rb +42 -0
- data/lib/datadog/appsec/contrib/devise/patcher/authenticatable_patch.rb +76 -0
- data/lib/datadog/appsec/contrib/devise/patcher/registration_controller_patch.rb +54 -0
- data/lib/datadog/appsec/contrib/devise/patcher.rb +45 -0
- data/lib/datadog/appsec/contrib/devise/resource.rb +35 -0
- data/lib/datadog/appsec/contrib/devise/tracking.rb +49 -0
- data/lib/datadog/appsec/contrib/rack/ext.rb +2 -1
- data/lib/datadog/appsec/contrib/rack/gateway/request.rb +6 -2
- data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +8 -6
- data/lib/datadog/appsec/contrib/rack/reactive/request.rb +3 -8
- data/lib/datadog/appsec/contrib/rack/reactive/request_body.rb +3 -6
- data/lib/datadog/appsec/contrib/rack/reactive/response.rb +3 -6
- data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +3 -2
- data/lib/datadog/appsec/contrib/rack/request_middleware.rb +36 -17
- data/lib/datadog/appsec/contrib/rails/ext.rb +3 -2
- data/lib/datadog/appsec/contrib/rails/framework.rb +1 -3
- data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +3 -2
- data/lib/datadog/appsec/contrib/rails/patcher.rb +17 -11
- data/lib/datadog/appsec/contrib/rails/reactive/action.rb +3 -6
- data/lib/datadog/appsec/contrib/sinatra/ext.rb +2 -1
- data/lib/datadog/appsec/contrib/sinatra/framework.rb +1 -3
- data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +6 -4
- data/lib/datadog/appsec/contrib/sinatra/patcher.rb +13 -7
- data/lib/datadog/appsec/contrib/sinatra/reactive/routed.rb +3 -6
- data/lib/datadog/appsec/event.rb +106 -50
- data/lib/datadog/appsec/extensions.rb +1 -130
- data/lib/datadog/appsec/monitor/gateway/watcher.rb +3 -3
- data/lib/datadog/appsec/monitor/reactive/set_user.rb +3 -6
- data/lib/datadog/appsec/processor/actions.rb +49 -0
- data/lib/datadog/appsec/processor/rule_loader.rb +60 -0
- data/lib/datadog/appsec/processor/rule_merger.rb +22 -2
- data/lib/datadog/appsec/processor.rb +35 -7
- data/lib/datadog/appsec/rate_limiter.rb +1 -1
- data/lib/datadog/appsec/remote.rb +17 -11
- data/lib/datadog/appsec/response.rb +82 -4
- data/lib/datadog/appsec/sample_rate.rb +21 -0
- data/lib/datadog/appsec.rb +3 -4
- data/lib/datadog/core/backport.rb +51 -0
- data/lib/datadog/core/configuration/agent_settings_resolver.rb +38 -29
- data/lib/datadog/core/configuration/base.rb +6 -16
- data/lib/datadog/core/configuration/components.rb +15 -3
- data/lib/datadog/core/configuration/ext.rb +28 -5
- data/lib/datadog/core/configuration/option.rb +269 -21
- data/lib/datadog/core/configuration/option_definition.rb +73 -32
- data/lib/datadog/core/configuration/options.rb +27 -15
- data/lib/datadog/core/configuration/settings.rb +182 -102
- data/lib/datadog/core/configuration.rb +4 -0
- data/lib/datadog/core/diagnostics/environment_logger.rb +130 -234
- data/lib/datadog/core/environment/execution.rb +103 -0
- data/lib/datadog/core/environment/ext.rb +13 -11
- data/lib/datadog/core/environment/variable_helpers.rb +0 -69
- data/lib/datadog/core/environment/yjit.rb +58 -0
- data/lib/datadog/core/error.rb +1 -0
- data/lib/datadog/core/git/ext.rb +26 -22
- data/lib/datadog/core/logging/ext.rb +3 -1
- data/lib/datadog/core/metrics/ext.rb +7 -5
- data/lib/datadog/core/remote/client/capabilities.rb +6 -1
- data/lib/datadog/core/remote/client.rb +3 -0
- data/lib/datadog/core/remote/component.rb +27 -36
- data/lib/datadog/core/remote/configuration/content.rb +28 -1
- data/lib/datadog/core/remote/configuration/repository.rb +3 -1
- data/lib/datadog/core/remote/ext.rb +1 -1
- data/lib/datadog/core/remote/negotiation.rb +19 -6
- data/lib/datadog/core/remote/transport/config.rb +60 -0
- data/lib/datadog/core/remote/transport/http/api/instance.rb +39 -0
- data/lib/datadog/core/remote/transport/http/api/spec.rb +21 -0
- data/lib/datadog/core/remote/transport/http/api.rb +58 -0
- data/lib/datadog/core/remote/transport/http/builder.rb +219 -0
- data/lib/datadog/core/remote/transport/http/client.rb +48 -0
- data/lib/datadog/core/remote/transport/http/config.rb +280 -0
- data/lib/datadog/core/remote/transport/http/negotiation.rb +146 -0
- data/lib/datadog/core/remote/transport/http.rb +179 -0
- data/lib/datadog/core/{transport → remote/transport}/negotiation.rb +25 -23
- data/lib/datadog/core/remote/worker.rb +4 -1
- data/lib/datadog/core/runtime/ext.rb +22 -12
- data/lib/datadog/core/runtime/metrics.rb +43 -0
- data/lib/datadog/core/telemetry/client.rb +12 -2
- data/lib/datadog/core/telemetry/collector.rb +13 -4
- data/lib/datadog/core/telemetry/emitter.rb +4 -2
- data/lib/datadog/core/telemetry/event.rb +19 -4
- data/lib/datadog/core/telemetry/ext.rb +4 -1
- data/lib/datadog/core/telemetry/heartbeat.rb +2 -4
- data/lib/datadog/core/telemetry/http/ext.rb +10 -8
- data/lib/datadog/core/telemetry/http/transport.rb +2 -0
- data/lib/datadog/core/telemetry/v2/app_client_configuration_change.rb +41 -0
- data/lib/datadog/core/telemetry/v2/request.rb +29 -0
- data/lib/datadog/core/transport/ext.rb +47 -0
- data/lib/datadog/core/transport/http/adapters/net.rb +168 -0
- data/lib/datadog/core/transport/http/adapters/registry.rb +29 -0
- data/lib/datadog/core/transport/http/adapters/test.rb +89 -0
- data/lib/datadog/core/transport/http/adapters/unix_socket.rb +83 -0
- data/lib/datadog/core/transport/http/api/endpoint.rb +31 -0
- data/lib/datadog/core/transport/http/api/fallbacks.rb +26 -0
- data/lib/datadog/core/transport/http/api/map.rb +18 -0
- data/lib/datadog/core/transport/http/env.rb +62 -0
- data/lib/datadog/core/transport/http/response.rb +60 -0
- data/lib/datadog/core/transport/parcel.rb +22 -0
- data/lib/datadog/core/transport/request.rb +17 -0
- data/lib/datadog/core/transport/response.rb +64 -0
- data/lib/datadog/core/utils/duration.rb +52 -0
- data/lib/datadog/core/utils/hash.rb +47 -0
- data/lib/datadog/core/utils/network.rb +1 -1
- data/lib/datadog/core/utils/safe_dup.rb +27 -20
- data/lib/datadog/core/utils.rb +1 -1
- data/lib/datadog/core/workers/async.rb +3 -2
- data/lib/datadog/core/workers/polling.rb +2 -2
- data/lib/datadog/kit/appsec/events.rb +139 -89
- data/lib/datadog/kit/enable_core_dumps.rb +5 -6
- data/lib/datadog/kit/identity.rb +80 -65
- data/lib/datadog/opentelemetry/api/context.rb +10 -3
- data/lib/datadog/opentelemetry/sdk/propagator.rb +2 -1
- data/lib/datadog/opentelemetry/sdk/span_processor.rb +48 -5
- data/lib/datadog/opentelemetry/sdk/trace/span.rb +167 -0
- data/lib/datadog/opentelemetry/trace.rb +58 -0
- data/lib/datadog/opentelemetry.rb +1 -0
- data/lib/datadog/opentracer/text_map_propagator.rb +2 -1
- data/lib/datadog/opentracer.rb +9 -0
- data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +16 -17
- data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +3 -1
- data/lib/datadog/profiling/collectors/thread_context.rb +17 -2
- data/lib/datadog/profiling/component.rb +69 -94
- data/lib/datadog/profiling/diagnostics/environment_logger.rb +39 -0
- data/lib/datadog/profiling/exporter.rb +5 -1
- data/lib/datadog/profiling/ext.rb +0 -12
- data/lib/datadog/profiling/flush.rb +7 -5
- data/lib/datadog/profiling/http_transport.rb +19 -6
- data/lib/datadog/profiling/load_native_extension.rb +7 -1
- data/lib/datadog/profiling/native_extension.rb +0 -21
- data/lib/datadog/profiling/profiler.rb +36 -13
- data/lib/datadog/profiling/scheduler.rb +16 -9
- data/lib/datadog/profiling.rb +16 -78
- data/lib/datadog/tracing/component.rb +70 -11
- data/lib/datadog/tracing/configuration/agent_settings_resolver.rb +13 -0
- data/lib/datadog/tracing/configuration/dynamic/option.rb +71 -0
- data/lib/datadog/tracing/configuration/dynamic.rb +64 -0
- data/lib/datadog/tracing/configuration/ext.rb +40 -32
- data/lib/datadog/tracing/configuration/http.rb +74 -0
- data/lib/datadog/tracing/configuration/settings.rb +134 -98
- data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +9 -6
- data/lib/datadog/tracing/contrib/action_cable/ext.rb +20 -18
- data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +9 -6
- data/lib/datadog/tracing/contrib/action_mailer/ext.rb +20 -18
- data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +9 -7
- data/lib/datadog/tracing/contrib/action_pack/ext.rb +10 -8
- data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +9 -6
- data/lib/datadog/tracing/contrib/action_view/ext.rb +12 -10
- data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +13 -7
- data/lib/datadog/tracing/contrib/active_job/ext.rb +25 -23
- data/lib/datadog/tracing/contrib/active_job/log_injection.rb +1 -1
- data/lib/datadog/tracing/contrib/active_job/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +9 -6
- data/lib/datadog/tracing/contrib/active_model_serializers/ext.rb +12 -10
- data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +18 -11
- data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +9 -7
- data/lib/datadog/tracing/contrib/active_record/events/sql.rb +2 -6
- data/lib/datadog/tracing/contrib/active_record/ext.rb +17 -15
- data/lib/datadog/tracing/contrib/active_record/utils.rb +1 -1
- data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +106 -202
- data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +3 -0
- data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +9 -7
- data/lib/datadog/tracing/contrib/active_support/ext.rb +18 -16
- data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +14 -7
- data/lib/datadog/tracing/contrib/aws/ext.rb +37 -24
- data/lib/datadog/tracing/contrib/aws/instrumentation.rb +16 -5
- data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +3 -2
- data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +14 -14
- data/lib/datadog/tracing/contrib/concurrent_ruby/ext.rb +4 -2
- data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +3 -10
- data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +2 -1
- data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +8 -1
- data/lib/datadog/tracing/contrib/concurrent_ruby/promises_future_patch.rb +22 -0
- data/lib/datadog/tracing/contrib/configuration/settings.rb +1 -1
- data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +20 -7
- data/lib/datadog/tracing/contrib/dalli/ext.rb +26 -11
- data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +17 -8
- data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +13 -7
- data/lib/datadog/tracing/contrib/delayed_job/ext.rb +16 -14
- data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +14 -7
- data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +21 -15
- data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +104 -99
- data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +16 -9
- data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +48 -3
- data/lib/datadog/tracing/contrib/ethon/ext.rb +19 -11
- data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +6 -3
- data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +19 -10
- data/lib/datadog/tracing/contrib/excon/ext.rb +16 -8
- data/lib/datadog/tracing/contrib/excon/middleware.rb +25 -5
- data/lib/datadog/tracing/contrib/ext.rb +26 -1
- data/lib/datadog/tracing/contrib/extensions.rb +32 -0
- data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +20 -10
- data/lib/datadog/tracing/contrib/faraday/ext.rb +16 -8
- data/lib/datadog/tracing/contrib/faraday/middleware.rb +21 -5
- data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +8 -6
- data/lib/datadog/tracing/contrib/grape/ext.rb +16 -14
- data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +8 -6
- data/lib/datadog/tracing/contrib/graphql/ext.rb +7 -5
- data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +39 -9
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +39 -20
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +37 -18
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +0 -4
- data/lib/datadog/tracing/contrib/grpc/ext.rb +16 -13
- data/lib/datadog/tracing/contrib/grpc/formatting.rb +127 -0
- data/lib/datadog/tracing/contrib/hanami/configuration/settings.rb +3 -2
- data/lib/datadog/tracing/contrib/hanami/ext.rb +10 -8
- data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +5 -8
- data/lib/datadog/tracing/contrib/http/configuration/settings.rb +33 -11
- data/lib/datadog/tracing/contrib/http/ext.rb +16 -9
- data/lib/datadog/tracing/contrib/http/instrumentation.rb +27 -7
- data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +33 -11
- data/lib/datadog/tracing/contrib/httpclient/ext.rb +17 -9
- data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +22 -5
- data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +33 -11
- data/lib/datadog/tracing/contrib/httprb/ext.rb +16 -9
- data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +22 -5
- data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +9 -6
- data/lib/datadog/tracing/contrib/kafka/ext.rb +42 -39
- data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +3 -2
- data/lib/datadog/tracing/contrib/lograge/ext.rb +3 -1
- data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +2 -17
- data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +14 -7
- data/lib/datadog/tracing/contrib/mongodb/ext.rb +20 -16
- data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +16 -5
- data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +17 -14
- data/lib/datadog/tracing/contrib/mysql2/ext.rb +15 -10
- data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +20 -6
- data/lib/datadog/tracing/contrib/opensearch/configuration/settings.rb +52 -0
- data/lib/datadog/tracing/contrib/opensearch/ext.rb +37 -0
- data/lib/datadog/tracing/contrib/opensearch/integration.rb +44 -0
- data/lib/datadog/tracing/contrib/opensearch/patcher.rb +135 -0
- data/lib/datadog/tracing/contrib/opensearch/quantize.rb +81 -0
- data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +22 -14
- data/lib/datadog/tracing/contrib/pg/ext.rb +22 -19
- data/lib/datadog/tracing/contrib/pg/instrumentation.rb +38 -5
- data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +14 -7
- data/lib/datadog/tracing/contrib/presto/ext.rb +25 -20
- data/lib/datadog/tracing/contrib/presto/instrumentation.rb +14 -5
- data/lib/datadog/tracing/contrib/propagation/sql_comment/ext.rb +12 -10
- data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +1 -1
- data/lib/datadog/tracing/contrib/qless/configuration/settings.rb +12 -8
- data/lib/datadog/tracing/contrib/qless/ext.rb +14 -12
- data/lib/datadog/tracing/contrib/que/configuration/settings.rb +21 -12
- data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +9 -7
- data/lib/datadog/tracing/contrib/racecar/event.rb +5 -5
- data/lib/datadog/tracing/contrib/racecar/ext.rb +20 -18
- data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +16 -12
- data/lib/datadog/tracing/contrib/rack/ext.rb +18 -16
- data/lib/datadog/tracing/contrib/rack/header_collection.rb +3 -0
- data/lib/datadog/tracing/contrib/rack/header_tagging.rb +63 -0
- data/lib/datadog/tracing/contrib/rack/middlewares.rb +8 -49
- data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +19 -15
- data/lib/datadog/tracing/contrib/rails/ext.rb +7 -5
- data/lib/datadog/tracing/contrib/rails/log_injection.rb +7 -10
- data/lib/datadog/tracing/contrib/rails/patcher.rb +10 -41
- data/lib/datadog/tracing/contrib/rails/railtie.rb +3 -3
- data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +13 -10
- data/lib/datadog/tracing/contrib/rake/ext.rb +14 -12
- data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +17 -9
- data/lib/datadog/tracing/contrib/redis/ext.rb +22 -15
- data/lib/datadog/tracing/contrib/redis/instrumentation.rb +3 -38
- data/lib/datadog/tracing/contrib/redis/tags.rb +16 -7
- data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +46 -33
- data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +13 -7
- data/lib/datadog/tracing/contrib/resque/ext.rb +9 -7
- data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +16 -9
- data/lib/datadog/tracing/contrib/rest_client/ext.rb +15 -8
- data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +25 -5
- data/lib/datadog/tracing/contrib/roda/configuration/settings.rb +9 -6
- data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +3 -2
- data/lib/datadog/tracing/contrib/semantic_logger/ext.rb +3 -1
- data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +4 -20
- data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +9 -6
- data/lib/datadog/tracing/contrib/sequel/ext.rb +10 -8
- data/lib/datadog/tracing/contrib/sequel/utils.rb +7 -7
- data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +14 -8
- data/lib/datadog/tracing/contrib/shoryuken/ext.rb +14 -12
- data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +18 -11
- data/lib/datadog/tracing/contrib/sidekiq/ext.rb +32 -30
- data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +11 -9
- data/lib/datadog/tracing/contrib/sinatra/env.rb +0 -17
- data/lib/datadog/tracing/contrib/sinatra/ext.rb +21 -19
- data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +3 -14
- data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +14 -8
- data/lib/datadog/tracing/contrib/sneakers/ext.rb +1 -0
- data/lib/datadog/tracing/contrib/sneakers/tracer.rb +1 -1
- data/lib/datadog/tracing/contrib/span_attribute_schema.rb +74 -10
- data/lib/datadog/tracing/contrib/stripe/configuration/settings.rb +9 -6
- data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +9 -6
- data/lib/datadog/tracing/contrib/sucker_punch/ext.rb +15 -13
- data/lib/datadog/tracing/contrib/utils/database.rb +5 -3
- data/lib/datadog/tracing/contrib/utils/quantization/http.rb +11 -11
- data/lib/datadog/tracing/contrib.rb +1 -0
- data/lib/datadog/tracing/correlation.rb +29 -12
- data/lib/datadog/tracing/diagnostics/environment_logger.rb +165 -0
- data/lib/datadog/tracing/diagnostics/ext.rb +21 -19
- data/lib/datadog/tracing/distributed/b3_multi.rb +2 -2
- data/lib/datadog/tracing/distributed/b3_single.rb +1 -1
- data/lib/datadog/tracing/distributed/datadog.rb +0 -1
- data/lib/datadog/tracing/distributed/propagation.rb +35 -34
- data/lib/datadog/tracing/distributed/trace_context.rb +52 -17
- data/lib/datadog/tracing/metadata/ext.rb +9 -6
- data/lib/datadog/tracing/metadata/tagging.rb +3 -3
- data/lib/datadog/tracing/remote.rb +78 -0
- data/lib/datadog/tracing/sampling/rule_sampler.rb +29 -0
- data/lib/datadog/tracing/span_operation.rb +3 -15
- data/lib/datadog/tracing/sync_writer.rb +3 -3
- data/lib/datadog/tracing/trace_digest.rb +31 -0
- data/lib/datadog/tracing/trace_operation.rb +16 -3
- data/lib/datadog/tracing/trace_segment.rb +5 -2
- data/lib/datadog/tracing/tracer.rb +12 -1
- data/lib/datadog/{core → tracing}/transport/http/api/instance.rb +1 -1
- data/lib/datadog/{core → tracing}/transport/http/api/spec.rb +1 -1
- data/lib/datadog/tracing/transport/http/api.rb +43 -0
- data/lib/datadog/{core → tracing}/transport/http/builder.rb +13 -68
- data/lib/datadog/tracing/transport/http/client.rb +57 -0
- data/lib/datadog/tracing/transport/http/statistics.rb +47 -0
- data/lib/datadog/tracing/transport/http/traces.rb +152 -0
- data/lib/datadog/tracing/transport/http.rb +124 -0
- data/lib/datadog/tracing/transport/io/client.rb +89 -0
- data/lib/datadog/tracing/transport/io/response.rb +27 -0
- data/lib/datadog/tracing/transport/io/traces.rb +101 -0
- data/lib/datadog/tracing/transport/io.rb +30 -0
- data/lib/datadog/tracing/transport/serializable_trace.rb +126 -0
- data/lib/datadog/tracing/transport/statistics.rb +77 -0
- data/lib/datadog/tracing/transport/trace_formatter.rb +209 -0
- data/lib/datadog/tracing/transport/traces.rb +224 -0
- data/lib/datadog/tracing/workers/trace_writer.rb +6 -4
- data/lib/datadog/tracing/workers.rb +4 -2
- data/lib/datadog/tracing/writer.rb +5 -2
- data/lib/ddtrace/transport/ext.rb +22 -14
- data/lib/ddtrace/version.rb +9 -12
- data/lib/ddtrace.rb +1 -1
- metadata +101 -93
- data/lib/datadog/ci/configuration/components.rb +0 -32
- data/lib/datadog/ci/configuration/settings.rb +0 -53
- data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +0 -33
- data/lib/datadog/ci/contrib/cucumber/ext.rb +0 -20
- data/lib/datadog/ci/contrib/cucumber/formatter.rb +0 -94
- data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +0 -28
- data/lib/datadog/ci/contrib/cucumber/integration.rb +0 -47
- data/lib/datadog/ci/contrib/cucumber/patcher.rb +0 -27
- data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +0 -33
- data/lib/datadog/ci/contrib/rspec/example.rb +0 -68
- data/lib/datadog/ci/contrib/rspec/ext.rb +0 -19
- data/lib/datadog/ci/contrib/rspec/integration.rb +0 -48
- data/lib/datadog/ci/contrib/rspec/patcher.rb +0 -27
- data/lib/datadog/ci/ext/app_types.rb +0 -9
- data/lib/datadog/ci/ext/environment.rb +0 -575
- data/lib/datadog/ci/ext/settings.rb +0 -10
- data/lib/datadog/ci/ext/test.rb +0 -35
- data/lib/datadog/ci/extensions.rb +0 -19
- data/lib/datadog/ci/flush.rb +0 -38
- data/lib/datadog/ci/test.rb +0 -81
- data/lib/datadog/ci.rb +0 -20
- data/lib/datadog/core/configuration/dependency_resolver.rb +0 -28
- data/lib/datadog/core/configuration/option_definition_set.rb +0 -22
- data/lib/datadog/core/configuration/option_set.rb +0 -10
- data/lib/datadog/core/transport/config.rb +0 -58
- data/lib/datadog/core/transport/http/api.rb +0 -57
- data/lib/datadog/core/transport/http/client.rb +0 -45
- data/lib/datadog/core/transport/http/config.rb +0 -268
- data/lib/datadog/core/transport/http/negotiation.rb +0 -144
- data/lib/datadog/core/transport/http.rb +0 -169
- data/lib/datadog/core/utils/object_set.rb +0 -43
- data/lib/datadog/core/utils/string_table.rb +0 -47
- data/lib/datadog/profiling/backtrace_location.rb +0 -34
- data/lib/datadog/profiling/buffer.rb +0 -43
- data/lib/datadog/profiling/collectors/old_stack.rb +0 -301
- data/lib/datadog/profiling/encoding/profile.rb +0 -41
- data/lib/datadog/profiling/event.rb +0 -15
- data/lib/datadog/profiling/events/stack.rb +0 -82
- data/lib/datadog/profiling/old_recorder.rb +0 -107
- data/lib/datadog/profiling/pprof/builder.rb +0 -125
- data/lib/datadog/profiling/pprof/converter.rb +0 -102
- data/lib/datadog/profiling/pprof/message_set.rb +0 -16
- data/lib/datadog/profiling/pprof/payload.rb +0 -20
- data/lib/datadog/profiling/pprof/pprof.proto +0 -212
- data/lib/datadog/profiling/pprof/pprof_pb.rb +0 -81
- data/lib/datadog/profiling/pprof/stack_sample.rb +0 -139
- data/lib/datadog/profiling/pprof/string_table.rb +0 -12
- data/lib/datadog/profiling/pprof/template.rb +0 -118
- data/lib/datadog/profiling/trace_identifiers/ddtrace.rb +0 -43
- data/lib/datadog/profiling/trace_identifiers/helper.rb +0 -45
- data/lib/datadog/tracing/contrib/sinatra/headers.rb +0 -35
- data/lib/ddtrace/transport/http/adapters/net.rb +0 -168
- data/lib/ddtrace/transport/http/adapters/registry.rb +0 -27
- data/lib/ddtrace/transport/http/adapters/test.rb +0 -85
- data/lib/ddtrace/transport/http/adapters/unix_socket.rb +0 -77
- data/lib/ddtrace/transport/http/api/endpoint.rb +0 -29
- data/lib/ddtrace/transport/http/api/fallbacks.rb +0 -24
- data/lib/ddtrace/transport/http/api/instance.rb +0 -35
- data/lib/ddtrace/transport/http/api/map.rb +0 -16
- data/lib/ddtrace/transport/http/api/spec.rb +0 -17
- data/lib/ddtrace/transport/http/api.rb +0 -39
- data/lib/ddtrace/transport/http/builder.rb +0 -176
- data/lib/ddtrace/transport/http/client.rb +0 -52
- data/lib/ddtrace/transport/http/env.rb +0 -58
- data/lib/ddtrace/transport/http/response.rb +0 -58
- data/lib/ddtrace/transport/http/statistics.rb +0 -43
- data/lib/ddtrace/transport/http/traces.rb +0 -144
- data/lib/ddtrace/transport/http.rb +0 -117
- data/lib/ddtrace/transport/io/client.rb +0 -85
- data/lib/ddtrace/transport/io/response.rb +0 -25
- data/lib/ddtrace/transport/io/traces.rb +0 -99
- data/lib/ddtrace/transport/io.rb +0 -28
- data/lib/ddtrace/transport/parcel.rb +0 -20
- data/lib/ddtrace/transport/request.rb +0 -15
- data/lib/ddtrace/transport/response.rb +0 -60
- data/lib/ddtrace/transport/serializable_trace.rb +0 -122
- data/lib/ddtrace/transport/statistics.rb +0 -75
- data/lib/ddtrace/transport/trace_formatter.rb +0 -198
- data/lib/ddtrace/transport/traces.rb +0 -216
|
@@ -1,6 +1,6 @@
|
|
|
1
|
-
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
2
3
|
require_relative 'option_definition'
|
|
3
|
-
require_relative 'option_definition_set'
|
|
4
4
|
|
|
5
5
|
module Datadog
|
|
6
6
|
module Core
|
|
@@ -18,13 +18,15 @@ module Datadog
|
|
|
18
18
|
module ClassMethods
|
|
19
19
|
def options
|
|
20
20
|
# Allows for class inheritance of option definitions
|
|
21
|
-
@options ||= superclass <= Options ? superclass.options.dup :
|
|
21
|
+
@options ||= superclass <= Options ? superclass.options.dup : {}
|
|
22
22
|
end
|
|
23
23
|
|
|
24
24
|
protected
|
|
25
25
|
|
|
26
26
|
def option(name, meta = {}, &block)
|
|
27
|
-
|
|
27
|
+
settings_name = defined?(@settings_name) && @settings_name
|
|
28
|
+
option_name = settings_name ? "#{settings_name}.#{name}" : name
|
|
29
|
+
builder = OptionDefinition::Builder.new(option_name, meta, &block)
|
|
28
30
|
options[name] = builder.to_definition.tap do
|
|
29
31
|
# Resolve and define helper functions
|
|
30
32
|
helpers = default_helpers(name)
|
|
@@ -62,17 +64,19 @@ module Datadog
|
|
|
62
64
|
# @public_api
|
|
63
65
|
module InstanceMethods
|
|
64
66
|
def options
|
|
65
|
-
@options ||=
|
|
67
|
+
@options ||= {}
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
def set_option(name, value, precedence: Configuration::Option::Precedence::PROGRAMMATIC)
|
|
71
|
+
resolve_option(name).set(value, precedence: precedence)
|
|
66
72
|
end
|
|
67
73
|
|
|
68
|
-
def
|
|
69
|
-
|
|
70
|
-
options[name].set(value)
|
|
74
|
+
def unset_option(name, precedence: Configuration::Option::Precedence::PROGRAMMATIC)
|
|
75
|
+
resolve_option(name).unset(precedence)
|
|
71
76
|
end
|
|
72
77
|
|
|
73
78
|
def get_option(name)
|
|
74
|
-
|
|
75
|
-
options[name].get
|
|
79
|
+
resolve_option(name).get
|
|
76
80
|
end
|
|
77
81
|
|
|
78
82
|
def reset_option(name)
|
|
@@ -84,6 +88,12 @@ module Datadog
|
|
|
84
88
|
self.class.options.key?(name)
|
|
85
89
|
end
|
|
86
90
|
|
|
91
|
+
# Is this option's value the default fallback value?
|
|
92
|
+
def using_default?(name)
|
|
93
|
+
get_option(name) # Resolve value check if environment variable overwrote the default
|
|
94
|
+
options[name].default_precedence?
|
|
95
|
+
end
|
|
96
|
+
|
|
87
97
|
def options_hash
|
|
88
98
|
self.class.options.merge(options).each_with_object({}) do |(key, _), hash|
|
|
89
99
|
hash[key] = get_option(key)
|
|
@@ -91,17 +101,19 @@ module Datadog
|
|
|
91
101
|
end
|
|
92
102
|
|
|
93
103
|
def reset_options!
|
|
94
|
-
options.
|
|
104
|
+
options.each_value(&:reset)
|
|
95
105
|
end
|
|
96
106
|
|
|
97
107
|
private
|
|
98
108
|
|
|
99
|
-
|
|
109
|
+
# Ensure option DSL is loaded
|
|
110
|
+
def resolve_option(name)
|
|
111
|
+
option = options[name]
|
|
112
|
+
return option if option
|
|
113
|
+
|
|
100
114
|
assert_valid_option!(name)
|
|
101
115
|
definition = self.class.options[name]
|
|
102
|
-
definition.build(self)
|
|
103
|
-
options[name] = option
|
|
104
|
-
end
|
|
116
|
+
options[name] = definition.build(self)
|
|
105
117
|
end
|
|
106
118
|
|
|
107
119
|
def assert_valid_option!(name)
|
|
@@ -2,6 +2,7 @@ require 'logger'
|
|
|
2
2
|
|
|
3
3
|
require_relative 'base'
|
|
4
4
|
require_relative 'ext'
|
|
5
|
+
require_relative '../environment/execution'
|
|
5
6
|
require_relative '../environment/ext'
|
|
6
7
|
require_relative '../runtime/ext'
|
|
7
8
|
require_relative '../telemetry/ext'
|
|
@@ -79,8 +80,8 @@ module Datadog
|
|
|
79
80
|
# @default `DD_API_KEY` environment variable, otherwise `nil`
|
|
80
81
|
# @return [String,nil]
|
|
81
82
|
option :api_key do |o|
|
|
82
|
-
o.
|
|
83
|
-
o.
|
|
83
|
+
o.type :string, nilable: true
|
|
84
|
+
o.env Core::Environment::Ext::ENV_API_KEY
|
|
84
85
|
end
|
|
85
86
|
|
|
86
87
|
# Datadog diagnostic settings.
|
|
@@ -99,15 +100,15 @@ module Datadog
|
|
|
99
100
|
# @default `DD_TRACE_DEBUG` environment variable, otherwise `false`
|
|
100
101
|
# @return [Boolean]
|
|
101
102
|
option :debug do |o|
|
|
102
|
-
o.
|
|
103
|
-
o.
|
|
104
|
-
o.
|
|
103
|
+
o.env Datadog::Core::Configuration::Ext::Diagnostics::ENV_DEBUG_ENABLED
|
|
104
|
+
o.default false
|
|
105
|
+
o.type :bool
|
|
106
|
+
o.after_set do |enabled|
|
|
105
107
|
# Enable rich debug print statements.
|
|
106
108
|
# We do not need to unnecessarily load 'pp' unless in debugging mode.
|
|
107
109
|
require 'pp' if enabled
|
|
108
110
|
end
|
|
109
111
|
end
|
|
110
|
-
|
|
111
112
|
# Internal {Datadog::Statsd} metrics collection.
|
|
112
113
|
#
|
|
113
114
|
# @public_api
|
|
@@ -117,8 +118,9 @@ module Datadog
|
|
|
117
118
|
# @default `DD_HEALTH_METRICS_ENABLED` environment variable, otherwise `false`
|
|
118
119
|
# @return [Boolean]
|
|
119
120
|
option :enabled do |o|
|
|
120
|
-
o.
|
|
121
|
-
o.
|
|
121
|
+
o.env Datadog::Core::Configuration::Ext::Diagnostics::ENV_HEALTH_METRICS_ENABLED
|
|
122
|
+
o.default false
|
|
123
|
+
o.type :bool
|
|
122
124
|
end
|
|
123
125
|
|
|
124
126
|
# {Datadog::Statsd} instance to collect health metrics.
|
|
@@ -140,11 +142,11 @@ module Datadog
|
|
|
140
142
|
# is *not* running in a development environment.
|
|
141
143
|
#
|
|
142
144
|
# @default `DD_TRACE_STARTUP_LOGS` environment variable, otherwise `nil`
|
|
143
|
-
# @return [Boolean,nil]
|
|
145
|
+
# @return [Boolean, nil]
|
|
144
146
|
option :enabled do |o|
|
|
147
|
+
o.env Datadog::Core::Configuration::Ext::Diagnostics::ENV_STARTUP_LOGS_ENABLED
|
|
145
148
|
# Defaults to nil as we want to know when the default value is being used
|
|
146
|
-
o.
|
|
147
|
-
o.lazy
|
|
149
|
+
o.type :bool, nilable: true
|
|
148
150
|
end
|
|
149
151
|
end
|
|
150
152
|
end
|
|
@@ -158,8 +160,7 @@ module Datadog
|
|
|
158
160
|
o.setter { |v| v.to_s if v }
|
|
159
161
|
|
|
160
162
|
# NOTE: env also gets set as a side effect of tags. See the WORKAROUND note in #initialize for details.
|
|
161
|
-
o.
|
|
162
|
-
o.lazy
|
|
163
|
+
o.env Core::Environment::Ext::ENV_ENVIRONMENT
|
|
163
164
|
end
|
|
164
165
|
|
|
165
166
|
# Internal `Datadog.logger` configuration.
|
|
@@ -175,7 +176,7 @@ module Datadog
|
|
|
175
176
|
#
|
|
176
177
|
# @return Logger::Severity
|
|
177
178
|
option :instance do |o|
|
|
178
|
-
o.
|
|
179
|
+
o.after_set { |value| set_option(:level, value.level) unless value.nil? }
|
|
179
180
|
end
|
|
180
181
|
|
|
181
182
|
# Log level for `Datadog.logger`.
|
|
@@ -194,8 +195,9 @@ module Datadog
|
|
|
194
195
|
# @default `DD_PROFILING_ENABLED` environment variable, otherwise `false`
|
|
195
196
|
# @return [Boolean]
|
|
196
197
|
option :enabled do |o|
|
|
197
|
-
o.
|
|
198
|
-
o.
|
|
198
|
+
o.env Profiling::Ext::ENV_ENABLED
|
|
199
|
+
o.default false
|
|
200
|
+
o.type :bool
|
|
199
201
|
end
|
|
200
202
|
|
|
201
203
|
# @public_api
|
|
@@ -205,21 +207,16 @@ module Datadog
|
|
|
205
207
|
|
|
206
208
|
# @public_api
|
|
207
209
|
settings :advanced do
|
|
208
|
-
# @deprecated
|
|
210
|
+
# @deprecated No longer does anything, and will be removed on dd-trace-rb 2.0.
|
|
209
211
|
#
|
|
210
|
-
# This
|
|
211
|
-
#
|
|
212
|
-
# per second for a 60 second period.
|
|
212
|
+
# This was used prior to the GA of the new CPU Profiling 2.0 profiler. The CPU Profiling 2.0 profiler does not
|
|
213
|
+
# use or need this setting and thus it doesn't do anything.
|
|
213
214
|
option :max_events do |o|
|
|
214
|
-
o.
|
|
215
|
-
|
|
216
|
-
|
|
217
|
-
Datadog.
|
|
218
|
-
|
|
219
|
-
'anything unless you the `force_enable_legacy_profiler` option is in use. ' \
|
|
220
|
-
'Please remove it from your Datadog.configure block.'
|
|
221
|
-
)
|
|
222
|
-
end
|
|
215
|
+
o.after_set do
|
|
216
|
+
Datadog.logger.warn(
|
|
217
|
+
'The profiling.advanced.max_events setting has been deprecated for removal and no ' \
|
|
218
|
+
'longer does anything. Please remove it from your Datadog.configure block.'
|
|
219
|
+
)
|
|
223
220
|
end
|
|
224
221
|
end
|
|
225
222
|
|
|
@@ -228,8 +225,9 @@ module Datadog
|
|
|
228
225
|
#
|
|
229
226
|
# @default `DD_PROFILING_MAX_FRAMES` environment variable, otherwise 400
|
|
230
227
|
option :max_frames do |o|
|
|
231
|
-
o.
|
|
232
|
-
o.
|
|
228
|
+
o.type :int
|
|
229
|
+
o.env Profiling::Ext::ENV_MAX_FRAMES
|
|
230
|
+
o.default 400
|
|
233
231
|
end
|
|
234
232
|
|
|
235
233
|
# @public_api
|
|
@@ -241,8 +239,9 @@ module Datadog
|
|
|
241
239
|
# @default `DD_PROFILING_ENDPOINT_COLLECTION_ENABLED` environment variable, otherwise `true`
|
|
242
240
|
# @return [Boolean]
|
|
243
241
|
option :enabled do |o|
|
|
244
|
-
o.
|
|
245
|
-
o.
|
|
242
|
+
o.env Profiling::Ext::ENV_ENDPOINT_COLLECTION_ENABLED
|
|
243
|
+
o.default true
|
|
244
|
+
o.type :bool
|
|
246
245
|
end
|
|
247
246
|
end
|
|
248
247
|
end
|
|
@@ -256,7 +255,7 @@ module Datadog
|
|
|
256
255
|
# This was added as a temporary support option in case of issues with the new `Profiling::HttpTransport` class
|
|
257
256
|
# but we're now confident it's working nicely so we've removed the old code path.
|
|
258
257
|
option :legacy_transport_enabled do |o|
|
|
259
|
-
o.
|
|
258
|
+
o.after_set do
|
|
260
259
|
Datadog.logger.warn(
|
|
261
260
|
'The profiling.advanced.legacy_transport_enabled setting has been deprecated for removal and no ' \
|
|
262
261
|
'longer does anything. Please remove it from your Datadog.configure block.'
|
|
@@ -269,7 +268,7 @@ module Datadog
|
|
|
269
268
|
# This was used prior to the GA of the new CPU Profiling 2.0 profiler. Using CPU Profiling 2.0 is now the
|
|
270
269
|
# default and this doesn't do anything.
|
|
271
270
|
option :force_enable_new_profiler do |o|
|
|
272
|
-
o.
|
|
271
|
+
o.after_set do
|
|
273
272
|
Datadog.logger.warn(
|
|
274
273
|
'The profiling.advanced.force_enable_new_profiler setting has been deprecated for removal and no ' \
|
|
275
274
|
'longer does anything. Please remove it from your Datadog.configure block.'
|
|
@@ -277,25 +276,16 @@ module Datadog
|
|
|
277
276
|
end
|
|
278
277
|
end
|
|
279
278
|
|
|
280
|
-
# @deprecated
|
|
281
|
-
#
|
|
282
|
-
# Forces enabling the *legacy* non-CPU Profiling 2.0 profiler.
|
|
283
|
-
# Do not use unless instructed to by support.
|
|
279
|
+
# @deprecated No longer does anything, and will be removed on dd-trace-rb 2.0.
|
|
284
280
|
#
|
|
285
|
-
#
|
|
281
|
+
# This was used prior to the GA of the new CPU Profiling 2.0 profiler. Using CPU Profiling 2.0 is now the
|
|
282
|
+
# default and this doesn't do anything.
|
|
286
283
|
option :force_enable_legacy_profiler do |o|
|
|
287
|
-
o.
|
|
288
|
-
|
|
289
|
-
|
|
290
|
-
|
|
291
|
-
|
|
292
|
-
'The profiling.advanced.force_enable_legacy_profiler setting has been deprecated for removal. ' \
|
|
293
|
-
'Do not use unless instructed to by support. ' \
|
|
294
|
-
'If you needed to use it due to incompatibilities with the CPU Profiling 2.0 profiler, consider ' \
|
|
295
|
-
'using the profiling.advanced.no_signals_workaround_enabled setting instead. ' \
|
|
296
|
-
'See <https://dtdg.co/ruby-profiler-troubleshooting> for details.'
|
|
297
|
-
)
|
|
298
|
-
end
|
|
284
|
+
o.after_set do
|
|
285
|
+
Datadog.logger.warn(
|
|
286
|
+
'The profiling.advanced.force_enable_legacy_profiler setting has been deprecated for removal and no ' \
|
|
287
|
+
'longer does anything. Please remove it from your Datadog.configure block.'
|
|
288
|
+
)
|
|
299
289
|
end
|
|
300
290
|
end
|
|
301
291
|
|
|
@@ -317,21 +307,40 @@ module Datadog
|
|
|
317
307
|
#
|
|
318
308
|
# @default `DD_PROFILING_FORCE_ENABLE_GC` environment variable, otherwise `false`
|
|
319
309
|
option :force_enable_gc_profiling do |o|
|
|
320
|
-
o.
|
|
321
|
-
o.
|
|
310
|
+
o.env 'DD_PROFILING_FORCE_ENABLE_GC'
|
|
311
|
+
o.type :bool
|
|
312
|
+
o.default false
|
|
322
313
|
end
|
|
323
314
|
|
|
324
315
|
# Can be used to enable/disable the Datadog::Profiling.allocation_count feature.
|
|
325
316
|
#
|
|
326
|
-
# This feature is safe and enabled by default on Ruby 2.x, but
|
|
327
|
-
#
|
|
328
|
-
#
|
|
317
|
+
# This feature is safe and enabled by default on Ruby 2.x, but has a few caveats on Ruby 3.x.
|
|
318
|
+
#
|
|
319
|
+
# Caveat 1 (severe):
|
|
320
|
+
# On Ruby versions 3.0 (all), 3.1.0 to 3.1.3, and 3.2.0 to 3.2.2 this is disabled by default because it
|
|
321
|
+
# can trigger a VM bug that causes a segmentation fault during garbage collection of Ractors
|
|
322
|
+
# (https://bugs.ruby-lang.org/issues/18464). We don't recommend using this feature on such Rubies.
|
|
323
|
+
# This bug is fixed on Ruby versions 3.1.4, 3.2.3 and 3.3.0.
|
|
324
|
+
#
|
|
325
|
+
# Caveat 2 (annoyance):
|
|
326
|
+
# On all known versions of Ruby 3.x, due to https://bugs.ruby-lang.org/issues/19112, when a ractor gets
|
|
327
|
+
# garbage collected, Ruby will disable all active tracepoints, which this feature internally relies on.
|
|
328
|
+
# Thus this feature is only usable if you're not using Ractors.
|
|
329
329
|
#
|
|
330
|
-
#
|
|
331
|
-
#
|
|
330
|
+
# Caveat 3 (severe):
|
|
331
|
+
# Ruby 3.2.0 to 3.2.2 have a bug in the newobj tracepoint (https://bugs.ruby-lang.org/issues/19482,
|
|
332
|
+
# https://github.com/ruby/ruby/pull/7464) so that's an extra reason why it's not safe on those Rubies.
|
|
333
|
+
# This bug is fixed on Ruby versions 3.2.3 and 3.3.0.
|
|
332
334
|
#
|
|
333
|
-
# @default `true` on Ruby 2.x
|
|
334
|
-
option :allocation_counting_enabled
|
|
335
|
+
# @default `true` on Ruby 2.x and 3.1.4+, 3.2.3+ and 3.3.0+; `false` for Ruby 3.0 and unpatched Rubies.
|
|
336
|
+
option :allocation_counting_enabled do |o|
|
|
337
|
+
o.default do
|
|
338
|
+
RUBY_VERSION.start_with?('2.') ||
|
|
339
|
+
(RUBY_VERSION.start_with?('3.1.') && RUBY_VERSION >= '3.1.4') ||
|
|
340
|
+
(RUBY_VERSION.start_with?('3.2.') && RUBY_VERSION >= '3.2.3') ||
|
|
341
|
+
RUBY_VERSION >= '3.3.'
|
|
342
|
+
end
|
|
343
|
+
end
|
|
335
344
|
|
|
336
345
|
# Can be used to disable checking which version of `libmysqlclient` is being used by the `mysql2` gem.
|
|
337
346
|
#
|
|
@@ -339,8 +348,18 @@ module Datadog
|
|
|
339
348
|
#
|
|
340
349
|
# @default `DD_PROFILING_SKIP_MYSQL2_CHECK` environment variable, otherwise `false`
|
|
341
350
|
option :skip_mysql2_check do |o|
|
|
342
|
-
o.
|
|
343
|
-
o.
|
|
351
|
+
o.type :bool
|
|
352
|
+
o.env 'DD_PROFILING_SKIP_MYSQL2_CHECK'
|
|
353
|
+
o.default false
|
|
354
|
+
end
|
|
355
|
+
|
|
356
|
+
# Enables data collection for the timeline feature. This is still experimental and not recommended yet.
|
|
357
|
+
#
|
|
358
|
+
# @default `DD_PROFILING_EXPERIMENTAL_TIMELINE_ENABLED` environment variable as a boolean, otherwise `false`
|
|
359
|
+
option :experimental_timeline_enabled do |o|
|
|
360
|
+
o.type :bool
|
|
361
|
+
o.env 'DD_PROFILING_EXPERIMENTAL_TIMELINE_ENABLED'
|
|
362
|
+
o.default false
|
|
344
363
|
end
|
|
345
364
|
|
|
346
365
|
# The profiler gathers data by sending `SIGPROF` unix signals to Ruby application threads.
|
|
@@ -363,8 +382,14 @@ module Datadog
|
|
|
363
382
|
#
|
|
364
383
|
# @default `DD_PROFILING_NO_SIGNALS_WORKAROUND_ENABLED` environment variable as a boolean, otherwise `:auto`
|
|
365
384
|
option :no_signals_workaround_enabled do |o|
|
|
366
|
-
o.
|
|
367
|
-
o.
|
|
385
|
+
o.env 'DD_PROFILING_NO_SIGNALS_WORKAROUND_ENABLED'
|
|
386
|
+
o.default :auto
|
|
387
|
+
o.env_parser do |value|
|
|
388
|
+
if value
|
|
389
|
+
value = value.strip.downcase
|
|
390
|
+
['true', '1'].include?(value)
|
|
391
|
+
end
|
|
392
|
+
end
|
|
368
393
|
end
|
|
369
394
|
end
|
|
370
395
|
|
|
@@ -374,9 +399,9 @@ module Datadog
|
|
|
374
399
|
#
|
|
375
400
|
# @default `DD_PROFILING_UPLOAD_TIMEOUT` environment variable, otherwise `30.0`
|
|
376
401
|
option :timeout_seconds do |o|
|
|
377
|
-
o.
|
|
378
|
-
o.
|
|
379
|
-
o.
|
|
402
|
+
o.type :float
|
|
403
|
+
o.env Profiling::Ext::ENV_UPLOAD_TIMEOUT
|
|
404
|
+
o.default 30.0
|
|
380
405
|
end
|
|
381
406
|
end
|
|
382
407
|
end
|
|
@@ -389,11 +414,12 @@ module Datadog
|
|
|
389
414
|
# @default `DD_RUNTIME_METRICS_ENABLED` environment variable, otherwise `false`
|
|
390
415
|
# @return [Boolean]
|
|
391
416
|
option :enabled do |o|
|
|
392
|
-
o.
|
|
393
|
-
o.
|
|
417
|
+
o.env Core::Runtime::Ext::Metrics::ENV_ENABLED
|
|
418
|
+
o.default false
|
|
419
|
+
o.type :bool
|
|
394
420
|
end
|
|
395
421
|
|
|
396
|
-
option :opts, default:
|
|
422
|
+
option :opts, default: {}, type: :hash
|
|
397
423
|
option :statsd
|
|
398
424
|
end
|
|
399
425
|
|
|
@@ -406,8 +432,8 @@ module Datadog
|
|
|
406
432
|
o.setter { |v| v.to_s if v }
|
|
407
433
|
|
|
408
434
|
# NOTE: service also gets set as a side effect of tags. See the WORKAROUND note in #initialize for details.
|
|
409
|
-
o.
|
|
410
|
-
o.
|
|
435
|
+
o.env Core::Environment::Ext::ENV_SERVICE
|
|
436
|
+
o.default Core::Environment::Ext::FALLBACK_SERVICE_NAME
|
|
411
437
|
|
|
412
438
|
# There's a few cases where we don't want to use the fallback service name, so this helper allows us to get a
|
|
413
439
|
# nil instead so that one can do
|
|
@@ -429,8 +455,8 @@ module Datadog
|
|
|
429
455
|
# @default `DD_SITE` environment variable, otherwise `nil` which sends data to `app.datadoghq.com`
|
|
430
456
|
# @return [String,nil]
|
|
431
457
|
option :site do |o|
|
|
432
|
-
o.
|
|
433
|
-
o.
|
|
458
|
+
o.type :string, nilable: true
|
|
459
|
+
o.env Core::Environment::Ext::ENV_SITE
|
|
434
460
|
end
|
|
435
461
|
|
|
436
462
|
# Default tags
|
|
@@ -440,44 +466,57 @@ module Datadog
|
|
|
440
466
|
# @default `DD_TAGS` environment variable (in the format `'tag1:value1,tag2:value2'`), otherwise `{}`
|
|
441
467
|
# @return [Hash<String,String>]
|
|
442
468
|
option :tags do |o|
|
|
443
|
-
o.
|
|
444
|
-
|
|
469
|
+
o.type :hash, nilable: true
|
|
470
|
+
o.env Core::Environment::Ext::ENV_TAGS
|
|
471
|
+
o.env_parser do |env_value|
|
|
472
|
+
values = if env_value.include?(',')
|
|
473
|
+
env_value.split(',')
|
|
474
|
+
else
|
|
475
|
+
env_value.split(' ') # rubocop:disable Style/RedundantArgument
|
|
476
|
+
end
|
|
477
|
+
|
|
478
|
+
values.map! do |v|
|
|
479
|
+
v.gsub!(/\A[\s,]*|[\s,]*\Z/, '')
|
|
480
|
+
|
|
481
|
+
v.empty? ? nil : v
|
|
482
|
+
end
|
|
445
483
|
|
|
446
|
-
|
|
447
|
-
|
|
484
|
+
values.compact!
|
|
485
|
+
values.each_with_object({}) do |tag, tags|
|
|
448
486
|
key, value = tag.split(':', 2)
|
|
449
487
|
tags[key] = value if value && !value.empty?
|
|
450
488
|
end
|
|
489
|
+
end
|
|
490
|
+
o.setter do |new_value, old_value|
|
|
491
|
+
raw_tags = new_value || {}
|
|
451
492
|
|
|
452
|
-
|
|
453
|
-
|
|
454
|
-
|
|
493
|
+
env_value = env
|
|
494
|
+
version_value = version
|
|
495
|
+
service_name = service_without_fallback
|
|
455
496
|
|
|
456
|
-
tags
|
|
457
|
-
|
|
497
|
+
# Override tags if defined
|
|
498
|
+
raw_tags[Core::Environment::Ext::TAG_ENV] = env_value unless env_value.nil?
|
|
499
|
+
raw_tags[Core::Environment::Ext::TAG_VERSION] = version_value unless version_value.nil?
|
|
458
500
|
|
|
459
|
-
o.setter do |new_value, old_value|
|
|
460
501
|
# Coerce keys to strings
|
|
461
|
-
string_tags =
|
|
502
|
+
string_tags = raw_tags.collect { |k, v| [k.to_s, v] }.to_h
|
|
462
503
|
|
|
463
504
|
# Cross-populate tag values with other settings
|
|
464
|
-
if
|
|
505
|
+
if env_value.nil? && string_tags.key?(Core::Environment::Ext::TAG_ENV)
|
|
465
506
|
self.env = string_tags[Core::Environment::Ext::TAG_ENV]
|
|
466
507
|
end
|
|
467
508
|
|
|
468
|
-
if
|
|
509
|
+
if version_value.nil? && string_tags.key?(Core::Environment::Ext::TAG_VERSION)
|
|
469
510
|
self.version = string_tags[Core::Environment::Ext::TAG_VERSION]
|
|
470
511
|
end
|
|
471
512
|
|
|
472
|
-
if
|
|
513
|
+
if service_name.nil? && string_tags.key?(Core::Environment::Ext::TAG_SERVICE)
|
|
473
514
|
self.service = string_tags[Core::Environment::Ext::TAG_SERVICE]
|
|
474
515
|
end
|
|
475
516
|
|
|
476
517
|
# Merge with previous tags
|
|
477
518
|
(old_value || {}).merge(string_tags)
|
|
478
519
|
end
|
|
479
|
-
|
|
480
|
-
o.lazy
|
|
481
520
|
end
|
|
482
521
|
|
|
483
522
|
# The time provider used by Datadog. It must respect the interface of [Time](https://ruby-doc.org/core-3.0.1/Time.html).
|
|
@@ -490,9 +529,10 @@ module Datadog
|
|
|
490
529
|
# @default `->{ Time.now }`
|
|
491
530
|
# @return [Proc<Time>]
|
|
492
531
|
option :time_now_provider do |o|
|
|
493
|
-
o.
|
|
532
|
+
o.default_proc { ::Time.now }
|
|
533
|
+
o.type :proc
|
|
494
534
|
|
|
495
|
-
o.
|
|
535
|
+
o.after_set do |time_provider|
|
|
496
536
|
Core::Utils::Time.now_provider = time_provider
|
|
497
537
|
end
|
|
498
538
|
|
|
@@ -511,8 +551,8 @@ module Datadog
|
|
|
511
551
|
# @return [String,nil]
|
|
512
552
|
option :version do |o|
|
|
513
553
|
# NOTE: version also gets set as a side effect of tags. See the WORKAROUND note in #initialize for details.
|
|
514
|
-
o.
|
|
515
|
-
o.
|
|
554
|
+
o.type :string, nilable: true
|
|
555
|
+
o.env Core::Environment::Ext::ENV_VERSION
|
|
516
556
|
end
|
|
517
557
|
|
|
518
558
|
# Client-side telemetry configuration
|
|
@@ -522,10 +562,35 @@ module Datadog
|
|
|
522
562
|
#
|
|
523
563
|
# @default `DD_INSTRUMENTATION_TELEMETRY_ENABLED` environment variable, otherwise `true`.
|
|
524
564
|
# Can be disabled as documented [here](https://docs.datadoghq.com/tracing/configure_data_security/#telemetry-collection).
|
|
565
|
+
# By default, telemetry is disabled in development environments.
|
|
525
566
|
# @return [Boolean]
|
|
526
567
|
option :enabled do |o|
|
|
527
|
-
o.
|
|
528
|
-
o.
|
|
568
|
+
o.env Core::Telemetry::Ext::ENV_ENABLED
|
|
569
|
+
o.default do
|
|
570
|
+
if Datadog::Core::Environment::Execution.development?
|
|
571
|
+
Datadog.logger.debug do
|
|
572
|
+
'Development environment detected, disabling Telemetry. ' \
|
|
573
|
+
'You can enable it with DD_INSTRUMENTATION_TELEMETRY_ENABLED=true.'
|
|
574
|
+
end
|
|
575
|
+
false
|
|
576
|
+
else
|
|
577
|
+
true
|
|
578
|
+
end
|
|
579
|
+
end
|
|
580
|
+
o.type :bool
|
|
581
|
+
end
|
|
582
|
+
|
|
583
|
+
# The interval in seconds when telemetry must be sent.
|
|
584
|
+
#
|
|
585
|
+
# This method is used internally, for testing purposes only.
|
|
586
|
+
#
|
|
587
|
+
# @default `DD_TELEMETRY_HEARTBEAT_INTERVAL` environment variable, otherwise `60`.
|
|
588
|
+
# @return [Float]
|
|
589
|
+
# @!visibility private
|
|
590
|
+
option :heartbeat_interval_seconds do |o|
|
|
591
|
+
o.type :float
|
|
592
|
+
o.env Core::Telemetry::Ext::ENV_HEARTBEAT_INTERVAL
|
|
593
|
+
o.default 60.0
|
|
529
594
|
end
|
|
530
595
|
end
|
|
531
596
|
|
|
@@ -535,19 +600,34 @@ module Datadog
|
|
|
535
600
|
# Enable remote configuration. This allows fetching of remote configuration for live updates.
|
|
536
601
|
#
|
|
537
602
|
# @default `DD_REMOTE_CONFIGURATION_ENABLED` environment variable, otherwise `true`.
|
|
603
|
+
# By default, remote configuration is disabled in development environments.
|
|
538
604
|
# @return [Boolean]
|
|
539
605
|
option :enabled do |o|
|
|
540
|
-
o.
|
|
541
|
-
o.
|
|
606
|
+
o.env Core::Remote::Ext::ENV_ENABLED
|
|
607
|
+
o.default do
|
|
608
|
+
if Datadog::Core::Environment::Execution.development?
|
|
609
|
+
Datadog.logger.debug do
|
|
610
|
+
'Development environment detected, disabling Remote Configuration. ' \
|
|
611
|
+
'You can enable it with DD_REMOTE_CONFIGURATION_ENABLED=true.'
|
|
612
|
+
end
|
|
613
|
+
false
|
|
614
|
+
else
|
|
615
|
+
true
|
|
616
|
+
end
|
|
617
|
+
end
|
|
618
|
+
o.type :bool
|
|
542
619
|
end
|
|
543
620
|
|
|
544
621
|
# Tune remote configuration polling interval.
|
|
622
|
+
# This is a private setting. Do not use outside of Datadog. It might change at any point in time.
|
|
545
623
|
#
|
|
546
|
-
# @default `
|
|
624
|
+
# @default `DD_REMOTE_CONFIG_POLL_INTERVAL_SECONDS` environment variable, otherwise `5.0` seconds.
|
|
547
625
|
# @return [Float]
|
|
626
|
+
# @!visibility private
|
|
548
627
|
option :poll_interval_seconds do |o|
|
|
549
|
-
o.
|
|
550
|
-
o.
|
|
628
|
+
o.env Core::Remote::Ext::ENV_POLL_INTERVAL_SECONDS
|
|
629
|
+
o.type :float
|
|
630
|
+
o.default 5.0
|
|
551
631
|
end
|
|
552
632
|
|
|
553
633
|
# Declare service name to bind to remote configuration. Use when
|
|
@@ -273,6 +273,10 @@ module Datadog
|
|
|
273
273
|
def handle_interrupt_shutdown!
|
|
274
274
|
logger = Datadog.logger
|
|
275
275
|
shutdown_thread = Thread.new { shutdown! }
|
|
276
|
+
unless Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.3')
|
|
277
|
+
shutdown_thread.name = Datadog::Core::Configuration.name
|
|
278
|
+
end
|
|
279
|
+
|
|
276
280
|
print_message_treshold_seconds = 0.2
|
|
277
281
|
|
|
278
282
|
slow_shutdown = shutdown_thread.join(print_message_treshold_seconds).nil?
|