ddtrace 1.9.0 → 1.10.1
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 +77 -1
- data/LICENSE-3rdparty.csv +1 -0
- data/ext/ddtrace_profiling_loader/extconf.rb +0 -2
- data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time_worker.c +81 -36
- data/ext/ddtrace_profiling_native_extension/collectors_idle_sampling_helper.c +3 -3
- data/ext/ddtrace_profiling_native_extension/collectors_stack.c +37 -48
- data/ext/ddtrace_profiling_native_extension/collectors_stack.h +3 -1
- data/ext/ddtrace_profiling_native_extension/{collectors_cpu_and_wall_time.c → collectors_thread_context.c} +222 -143
- data/ext/ddtrace_profiling_native_extension/collectors_thread_context.h +14 -0
- data/ext/ddtrace_profiling_native_extension/extconf.rb +7 -18
- data/ext/ddtrace_profiling_native_extension/http_transport.c +25 -32
- data/ext/ddtrace_profiling_native_extension/libdatadog_helpers.h +9 -2
- data/ext/ddtrace_profiling_native_extension/native_extension_helpers.rb +9 -9
- data/ext/ddtrace_profiling_native_extension/private_vm_api_access.c +7 -121
- data/ext/ddtrace_profiling_native_extension/private_vm_api_access.h +1 -1
- data/ext/ddtrace_profiling_native_extension/profiling.c +2 -2
- data/ext/ddtrace_profiling_native_extension/ruby_helpers.c +2 -2
- data/ext/ddtrace_profiling_native_extension/ruby_helpers.h +1 -1
- data/ext/ddtrace_profiling_native_extension/stack_recorder.c +125 -21
- data/ext/ddtrace_profiling_native_extension/stack_recorder.h +9 -34
- data/lib/datadog/appsec/assets/waf_rules/recommended.json +321 -185
- data/lib/datadog/appsec/assets/waf_rules/strict.json +59 -2
- data/lib/datadog/appsec/assets.rb +0 -2
- data/lib/datadog/appsec/autoload.rb +4 -11
- data/lib/datadog/appsec/component.rb +41 -0
- data/lib/datadog/appsec/configuration/settings.rb +8 -3
- data/lib/datadog/appsec/configuration.rb +4 -2
- data/lib/datadog/appsec/contrib/auto_instrument.rb +0 -2
- data/lib/datadog/appsec/contrib/configuration/settings.rb +0 -2
- data/lib/datadog/appsec/contrib/integration.rb +0 -2
- data/lib/datadog/appsec/contrib/patcher.rb +0 -2
- data/lib/datadog/appsec/contrib/rack/configuration/settings.rb +0 -2
- data/lib/datadog/appsec/contrib/rack/ext.rb +0 -2
- data/lib/datadog/appsec/contrib/rack/gateway/request.rb +97 -0
- data/lib/datadog/appsec/contrib/rack/gateway/response.rb +30 -0
- data/lib/datadog/appsec/contrib/rack/gateway/watcher.rb +111 -109
- data/lib/datadog/appsec/contrib/rack/integration.rb +0 -2
- data/lib/datadog/appsec/contrib/rack/patcher.rb +2 -2
- data/lib/datadog/appsec/contrib/rack/reactive/request.rb +18 -21
- data/lib/datadog/appsec/contrib/rack/reactive/request_body.rb +10 -11
- data/lib/datadog/appsec/contrib/rack/reactive/response.rb +10 -11
- data/lib/datadog/appsec/contrib/rack/request_body_middleware.rb +6 -4
- data/lib/datadog/appsec/contrib/rack/request_middleware.rb +40 -26
- data/lib/datadog/appsec/contrib/rails/configuration/settings.rb +0 -2
- data/lib/datadog/appsec/contrib/rails/ext.rb +0 -2
- data/lib/datadog/appsec/contrib/rails/framework.rb +0 -2
- data/lib/datadog/appsec/contrib/rails/gateway/request.rb +67 -0
- data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +41 -37
- data/lib/datadog/appsec/contrib/rails/integration.rb +0 -2
- data/lib/datadog/appsec/contrib/rails/patcher.rb +3 -3
- data/lib/datadog/appsec/contrib/rails/reactive/action.rb +12 -11
- data/lib/datadog/appsec/contrib/rails/request.rb +0 -2
- data/lib/datadog/appsec/contrib/rails/request_middleware.rb +0 -2
- data/lib/datadog/appsec/contrib/sinatra/configuration/settings.rb +0 -2
- data/lib/datadog/appsec/contrib/sinatra/ext.rb +0 -2
- data/lib/datadog/appsec/contrib/sinatra/framework.rb +0 -2
- data/lib/datadog/appsec/contrib/sinatra/gateway/request.rb +17 -0
- data/lib/datadog/appsec/contrib/sinatra/gateway/route_params.rb +23 -0
- data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +76 -71
- data/lib/datadog/appsec/contrib/sinatra/integration.rb +0 -2
- data/lib/datadog/appsec/contrib/sinatra/patcher.rb +12 -4
- data/lib/datadog/appsec/contrib/sinatra/reactive/routed.rb +10 -9
- data/lib/datadog/appsec/contrib/sinatra/request_middleware.rb +0 -2
- data/lib/datadog/appsec/event.rb +4 -8
- data/lib/datadog/appsec/ext.rb +9 -0
- data/lib/datadog/appsec/extensions.rb +10 -2
- data/lib/datadog/appsec/instrumentation/gateway/argument.rb +24 -0
- data/lib/datadog/appsec/instrumentation/gateway.rb +11 -5
- data/lib/datadog/appsec/instrumentation.rb +9 -0
- data/lib/datadog/appsec/monitor/gateway/watcher.rb +86 -0
- data/lib/datadog/appsec/monitor/reactive/set_user.rb +61 -0
- data/lib/datadog/appsec/monitor.rb +11 -0
- data/lib/datadog/appsec/processor.rb +74 -25
- data/lib/datadog/appsec/rate_limiter.rb +0 -2
- data/lib/datadog/appsec/reactive/address_hash.rb +6 -2
- data/lib/datadog/appsec/reactive/engine.rb +10 -7
- data/lib/datadog/appsec/reactive/operation.rb +19 -2
- data/lib/datadog/appsec/reactive/subscriber.rb +2 -1
- data/lib/datadog/appsec/response.rb +0 -2
- data/lib/datadog/appsec/utils/http/media_range.rb +0 -2
- data/lib/datadog/appsec/utils/http/media_type.rb +0 -2
- data/lib/datadog/appsec.rb +20 -2
- data/lib/datadog/ci/configuration/components.rb +0 -2
- data/lib/datadog/ci/configuration/settings.rb +0 -2
- data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +0 -2
- data/lib/datadog/ci/contrib/cucumber/ext.rb +0 -2
- data/lib/datadog/ci/contrib/cucumber/formatter.rb +0 -2
- data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +0 -2
- data/lib/datadog/ci/contrib/cucumber/integration.rb +0 -2
- data/lib/datadog/ci/contrib/cucumber/patcher.rb +0 -2
- data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +0 -2
- data/lib/datadog/ci/contrib/rspec/example.rb +0 -2
- data/lib/datadog/ci/contrib/rspec/ext.rb +0 -2
- data/lib/datadog/ci/contrib/rspec/integration.rb +0 -2
- data/lib/datadog/ci/contrib/rspec/patcher.rb +0 -2
- data/lib/datadog/ci/ext/app_types.rb +0 -2
- data/lib/datadog/ci/ext/environment.rb +2 -24
- data/lib/datadog/ci/ext/settings.rb +0 -2
- data/lib/datadog/ci/ext/test.rb +0 -2
- data/lib/datadog/ci/extensions.rb +0 -2
- data/lib/datadog/ci/flush.rb +0 -2
- data/lib/datadog/ci/test.rb +0 -2
- data/lib/datadog/ci.rb +0 -2
- data/lib/datadog/core/buffer/cruby.rb +0 -2
- data/lib/datadog/core/buffer/random.rb +0 -2
- data/lib/datadog/core/buffer/thread_safe.rb +0 -2
- data/lib/datadog/core/chunker.rb +0 -2
- data/lib/datadog/core/configuration/agent_settings_resolver.rb +0 -17
- data/lib/datadog/core/configuration/base.rb +0 -2
- data/lib/datadog/core/configuration/components.rb +14 -318
- data/lib/datadog/core/configuration/dependency_resolver.rb +0 -2
- data/lib/datadog/core/configuration/ext.rb +0 -2
- data/lib/datadog/core/configuration/option.rb +0 -2
- data/lib/datadog/core/configuration/option_definition.rb +0 -2
- data/lib/datadog/core/configuration/option_definition_set.rb +0 -2
- data/lib/datadog/core/configuration/option_set.rb +0 -2
- data/lib/datadog/core/configuration/options.rb +0 -2
- data/lib/datadog/core/configuration/settings.rb +14 -5
- data/lib/datadog/core/configuration.rb +0 -4
- data/lib/datadog/core/diagnostics/environment_logger.rb +0 -2
- data/lib/datadog/core/diagnostics/health.rb +0 -2
- data/lib/datadog/core/encoding.rb +0 -4
- data/lib/datadog/core/environment/cgroup.rb +0 -4
- data/lib/datadog/core/environment/class_count.rb +0 -2
- data/lib/datadog/core/environment/container.rb +0 -4
- data/lib/datadog/core/environment/ext.rb +0 -2
- data/lib/datadog/core/environment/gc.rb +0 -2
- data/lib/datadog/core/environment/identity.rb +0 -2
- data/lib/datadog/core/environment/platform.rb +0 -2
- data/lib/datadog/core/environment/socket.rb +0 -2
- data/lib/datadog/core/environment/thread_count.rb +0 -2
- data/lib/datadog/core/environment/variable_helpers.rb +0 -2
- data/lib/datadog/core/environment/vm_cache.rb +17 -2
- data/lib/datadog/core/error.rb +0 -2
- data/lib/datadog/core/extensions.rb +0 -2
- data/lib/datadog/core/git/ext.rb +0 -2
- data/lib/datadog/core/logger.rb +0 -2
- data/lib/datadog/core/metrics/client.rb +0 -2
- data/lib/datadog/core/metrics/ext.rb +0 -2
- data/lib/datadog/core/metrics/helpers.rb +0 -2
- data/lib/datadog/core/metrics/logging.rb +0 -2
- data/lib/datadog/core/metrics/metric.rb +0 -2
- data/lib/datadog/core/metrics/options.rb +0 -2
- data/lib/datadog/core/pin.rb +0 -2
- data/lib/datadog/core/runtime/ext.rb +2 -2
- data/lib/datadog/core/runtime/metrics.rb +21 -7
- data/lib/datadog/core/telemetry/client.rb +0 -2
- data/lib/datadog/core/telemetry/collector.rb +0 -2
- data/lib/datadog/core/telemetry/emitter.rb +0 -2
- data/lib/datadog/core/telemetry/event.rb +0 -4
- data/lib/datadog/core/telemetry/ext.rb +0 -2
- data/lib/datadog/core/telemetry/heartbeat.rb +0 -2
- data/lib/datadog/core/telemetry/http/adapters/net.rb +0 -2
- data/lib/datadog/core/telemetry/http/env.rb +0 -2
- data/lib/datadog/core/telemetry/http/response.rb +0 -4
- data/lib/datadog/core/telemetry/http/transport.rb +0 -2
- data/lib/datadog/core/telemetry/v1/app_event.rb +0 -2
- data/lib/datadog/core/utils/compression.rb +0 -2
- data/lib/datadog/core/utils/forking.rb +0 -2
- data/lib/datadog/core/utils/network.rb +140 -0
- data/lib/datadog/core/utils/object_set.rb +0 -2
- data/lib/datadog/core/utils/only_once.rb +0 -2
- data/lib/datadog/core/utils/safe_dup.rb +0 -2
- data/lib/datadog/core/utils/sequence.rb +0 -2
- data/lib/datadog/core/utils/string_table.rb +0 -2
- data/lib/datadog/core/utils/time.rb +0 -4
- data/lib/datadog/core/utils.rb +0 -2
- data/lib/datadog/core/vendor/ipaddr.rb +78 -0
- data/lib/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rb +0 -2
- data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +0 -2
- data/lib/datadog/core/vendor/multipart-post/multipart/post/parts.rb +0 -2
- data/lib/datadog/core/vendor/multipart-post/multipart/post/version.rb +0 -2
- data/lib/datadog/core/vendor/multipart-post/multipart/post.rb +0 -2
- data/lib/datadog/core/vendor/multipart-post/multipart.rb +0 -2
- data/lib/datadog/core/vendor/multipart-post/net/http/post/multipart.rb +0 -2
- data/lib/datadog/core/worker.rb +0 -2
- data/lib/datadog/core/workers/async.rb +0 -2
- data/lib/datadog/core/workers/interval_loop.rb +0 -2
- data/lib/datadog/core/workers/polling.rb +0 -2
- data/lib/datadog/core/workers/queue.rb +0 -2
- data/lib/datadog/core/workers/runtime_metrics.rb +0 -2
- data/lib/datadog/core.rb +0 -1
- data/lib/datadog/kit/appsec/events.rb +1 -2
- data/lib/datadog/kit/enable_core_dumps.rb +5 -6
- data/lib/datadog/kit/identity.rb +7 -1
- data/lib/datadog/kit.rb +0 -2
- data/lib/datadog/opentelemetry/api/context.rb +0 -1
- data/lib/datadog/opentelemetry/api/trace/span.rb +0 -1
- data/lib/datadog/opentelemetry/sdk/configurator.rb +0 -1
- data/lib/datadog/opentelemetry/sdk/id_generator.rb +0 -1
- data/lib/datadog/opentelemetry/sdk/propagator.rb +0 -1
- data/lib/datadog/opentelemetry/sdk/span_processor.rb +0 -1
- data/lib/datadog/opentelemetry.rb +0 -1
- data/lib/datadog/opentracer/binary_propagator.rb +0 -2
- data/lib/datadog/opentracer/carrier.rb +0 -2
- data/lib/datadog/opentracer/distributed_headers.rb +0 -2
- data/lib/datadog/opentracer/global_tracer.rb +0 -2
- data/lib/datadog/opentracer/propagator.rb +0 -2
- data/lib/datadog/opentracer/rack_propagator.rb +0 -2
- data/lib/datadog/opentracer/scope.rb +0 -2
- data/lib/datadog/opentracer/scope_manager.rb +0 -2
- data/lib/datadog/opentracer/span.rb +0 -2
- data/lib/datadog/opentracer/span_context.rb +0 -2
- data/lib/datadog/opentracer/span_context_factory.rb +0 -2
- data/lib/datadog/opentracer/text_map_propagator.rb +0 -2
- data/lib/datadog/opentracer/thread_local_scope.rb +0 -2
- data/lib/datadog/opentracer/thread_local_scope_manager.rb +0 -2
- data/lib/datadog/opentracer/tracer.rb +0 -2
- data/lib/datadog/opentracer.rb +0 -2
- data/lib/datadog/profiling/backtrace_location.rb +0 -2
- data/lib/datadog/profiling/buffer.rb +0 -2
- data/lib/datadog/profiling/collectors/code_provenance.rb +0 -2
- data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +12 -7
- data/lib/datadog/profiling/collectors/dynamic_sampling_rate.rb +0 -2
- data/lib/datadog/profiling/collectors/idle_sampling_helper.rb +1 -3
- data/lib/datadog/profiling/collectors/old_stack.rb +1 -5
- data/lib/datadog/profiling/collectors/stack.rb +0 -2
- data/lib/datadog/profiling/collectors/{cpu_and_wall_time.rb → thread_context.rb} +8 -5
- data/lib/datadog/profiling/component.rb +161 -0
- data/lib/datadog/profiling/encoding/profile.rb +0 -2
- data/lib/datadog/profiling/event.rb +0 -2
- data/lib/datadog/profiling/events/stack.rb +0 -2
- data/lib/datadog/profiling/exporter.rb +0 -2
- data/lib/datadog/profiling/ext/forking.rb +0 -2
- data/lib/datadog/profiling/ext.rb +0 -2
- data/lib/datadog/profiling/flush.rb +0 -2
- data/lib/datadog/profiling/http_transport.rb +0 -2
- data/lib/datadog/profiling/load_native_extension.rb +0 -2
- data/lib/datadog/profiling/native_extension.rb +0 -2
- data/lib/datadog/profiling/old_recorder.rb +0 -2
- data/lib/datadog/profiling/pprof/builder.rb +0 -2
- data/lib/datadog/profiling/pprof/converter.rb +0 -2
- data/lib/datadog/profiling/pprof/message_set.rb +0 -2
- data/lib/datadog/profiling/pprof/payload.rb +0 -2
- data/lib/datadog/profiling/pprof/pprof_pb.rb +0 -2
- data/lib/datadog/profiling/pprof/stack_sample.rb +0 -2
- data/lib/datadog/profiling/pprof/string_table.rb +0 -2
- data/lib/datadog/profiling/pprof/template.rb +0 -2
- data/lib/datadog/profiling/preload.rb +0 -2
- data/lib/datadog/profiling/profiler.rb +0 -2
- data/lib/datadog/profiling/scheduler.rb +0 -2
- data/lib/datadog/profiling/stack_recorder.rb +3 -8
- data/lib/datadog/profiling/tag_builder.rb +0 -2
- data/lib/datadog/profiling/tasks/exec.rb +0 -2
- data/lib/datadog/profiling/tasks/help.rb +0 -2
- data/lib/datadog/profiling/tasks/setup.rb +0 -2
- data/lib/datadog/profiling/trace_identifiers/ddtrace.rb +0 -2
- data/lib/datadog/profiling/trace_identifiers/helper.rb +0 -2
- data/lib/datadog/profiling.rb +44 -7
- data/lib/datadog/tracing/analytics.rb +0 -2
- data/lib/datadog/tracing/buffer.rb +0 -4
- data/lib/datadog/tracing/client_ip.rb +38 -141
- data/lib/datadog/tracing/component.rb +176 -0
- data/lib/datadog/tracing/configuration/ext.rb +2 -2
- data/lib/datadog/tracing/configuration/settings.rb +20 -2
- data/lib/datadog/tracing/context.rb +0 -2
- data/lib/datadog/tracing/context_provider.rb +0 -2
- data/lib/datadog/tracing/contrib/action_cable/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/action_cable/event.rb +0 -2
- data/lib/datadog/tracing/contrib/action_cable/events/broadcast.rb +0 -2
- data/lib/datadog/tracing/contrib/action_cable/events/perform_action.rb +0 -2
- data/lib/datadog/tracing/contrib/action_cable/events/transmit.rb +0 -2
- data/lib/datadog/tracing/contrib/action_cable/events.rb +0 -2
- data/lib/datadog/tracing/contrib/action_cable/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/action_cable/instrumentation.rb +0 -2
- data/lib/datadog/tracing/contrib/action_cable/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/action_cable/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/action_mailer/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/action_mailer/event.rb +0 -2
- data/lib/datadog/tracing/contrib/action_mailer/events/deliver.rb +0 -2
- data/lib/datadog/tracing/contrib/action_mailer/events/process.rb +0 -2
- data/lib/datadog/tracing/contrib/action_mailer/events.rb +0 -2
- data/lib/datadog/tracing/contrib/action_mailer/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/action_mailer/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/action_mailer/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +0 -2
- data/lib/datadog/tracing/contrib/action_pack/action_controller/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/action_pack/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/action_pack/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/action_pack/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/action_pack/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/action_pack/utils.rb +0 -2
- data/lib/datadog/tracing/contrib/action_view/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/action_view/event.rb +0 -2
- data/lib/datadog/tracing/contrib/action_view/events/render_partial.rb +0 -2
- data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +0 -2
- data/lib/datadog/tracing/contrib/action_view/events.rb +0 -2
- data/lib/datadog/tracing/contrib/action_view/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/action_view/instrumentation/partial_renderer.rb +0 -2
- data/lib/datadog/tracing/contrib/action_view/instrumentation/template_renderer.rb +0 -2
- data/lib/datadog/tracing/contrib/action_view/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/action_view/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/action_view/utils.rb +0 -2
- data/lib/datadog/tracing/contrib/active_job/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/active_job/event.rb +0 -2
- data/lib/datadog/tracing/contrib/active_job/events/discard.rb +0 -2
- data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +0 -2
- data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +0 -2
- data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +0 -2
- data/lib/datadog/tracing/contrib/active_job/events/perform.rb +0 -2
- data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +0 -2
- data/lib/datadog/tracing/contrib/active_job/events.rb +0 -2
- data/lib/datadog/tracing/contrib/active_job/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/active_job/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/active_job/log_injection.rb +0 -2
- data/lib/datadog/tracing/contrib/active_job/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/active_model_serializers/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/active_model_serializers/event.rb +0 -2
- data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +0 -2
- data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +0 -2
- data/lib/datadog/tracing/contrib/active_model_serializers/events.rb +0 -2
- data/lib/datadog/tracing/contrib/active_model_serializers/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/active_model_serializers/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/active_record/configuration/makara_resolver.rb +0 -2
- data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +0 -2
- data/lib/datadog/tracing/contrib/active_record/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/active_record/event.rb +0 -2
- data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +0 -2
- data/lib/datadog/tracing/contrib/active_record/events/sql.rb +0 -2
- data/lib/datadog/tracing/contrib/active_record/events.rb +0 -2
- data/lib/datadog/tracing/contrib/active_record/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/active_record/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/active_record/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/active_record/utils.rb +0 -2
- data/lib/datadog/tracing/contrib/active_record/vendor/connection_specification.rb +0 -2
- data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +0 -2
- data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +0 -2
- data/lib/datadog/tracing/contrib/active_support/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/active_support/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/active_support/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +0 -2
- data/lib/datadog/tracing/contrib/active_support/notifications/subscriber.rb +0 -2
- data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +0 -2
- data/lib/datadog/tracing/contrib/active_support/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/analytics.rb +0 -2
- data/lib/datadog/tracing/contrib/auto_instrument.rb +0 -2
- data/lib/datadog/tracing/contrib/aws/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/aws/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/aws/instrumentation.rb +0 -2
- data/lib/datadog/tracing/contrib/aws/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/aws/parsed_context.rb +0 -2
- data/lib/datadog/tracing/contrib/aws/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/aws/services.rb +0 -2
- data/lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +0 -2
- data/lib/datadog/tracing/contrib/concurrent_ruby/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +0 -2
- data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +0 -3
- data/lib/datadog/tracing/contrib/configurable.rb +0 -2
- data/lib/datadog/tracing/contrib/configuration/resolver.rb +0 -2
- data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +0 -2
- data/lib/datadog/tracing/contrib/configuration/settings.rb +0 -4
- data/lib/datadog/tracing/contrib/dalli/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/dalli/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/dalli/instrumentation.rb +2 -2
- data/lib/datadog/tracing/contrib/dalli/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/dalli/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/dalli/quantize.rb +0 -2
- data/lib/datadog/tracing/contrib/delayed_job/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/delayed_job/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/delayed_job/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/delayed_job/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/delayed_job/plugin.rb +4 -2
- data/lib/datadog/tracing/contrib/delayed_job/server_internal_tracer/worker.rb +2 -2
- data/lib/datadog/tracing/contrib/elasticsearch/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +3 -4
- data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +0 -4
- data/lib/datadog/tracing/contrib/ethon/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +0 -2
- data/lib/datadog/tracing/contrib/ethon/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/ethon/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/ethon/multi_patch.rb +0 -2
- data/lib/datadog/tracing/contrib/ethon/patcher.rb +0 -3
- data/lib/datadog/tracing/contrib/excon/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/excon/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/excon/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/excon/middleware.rb +0 -2
- data/lib/datadog/tracing/contrib/excon/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/ext.rb +5 -0
- data/lib/datadog/tracing/contrib/extensions.rb +0 -2
- data/lib/datadog/tracing/contrib/faraday/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/faraday/connection.rb +0 -2
- data/lib/datadog/tracing/contrib/faraday/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/faraday/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/faraday/middleware.rb +0 -2
- data/lib/datadog/tracing/contrib/faraday/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/faraday/rack_builder.rb +0 -2
- data/lib/datadog/tracing/contrib/grape/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/grape/endpoint.rb +0 -2
- data/lib/datadog/tracing/contrib/grape/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/grape/instrumentation.rb +0 -2
- data/lib/datadog/tracing/contrib/grape/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/grape/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/graphql/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/graphql/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/graphql/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/graphql/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/grpc/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +0 -2
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +0 -2
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor.rb +0 -2
- data/lib/datadog/tracing/contrib/grpc/distributed/fetcher.rb +0 -1
- data/lib/datadog/tracing/contrib/grpc/distributed/propagation.rb +0 -1
- data/lib/datadog/tracing/contrib/grpc/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/grpc/integration.rb +8 -3
- data/lib/datadog/tracing/contrib/grpc/intercept_with_datadog.rb +0 -2
- data/lib/datadog/tracing/contrib/grpc/patcher.rb +0 -3
- data/lib/datadog/tracing/contrib/hanami/action_tracer.rb +0 -2
- data/lib/datadog/tracing/contrib/hanami/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/hanami/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/hanami/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/hanami/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/hanami/plugin.rb +0 -2
- data/lib/datadog/tracing/contrib/hanami/renderer_policy_tracing.rb +0 -2
- data/lib/datadog/tracing/contrib/hanami/router_tracing.rb +0 -2
- data/lib/datadog/tracing/contrib/http/circuit_breaker.rb +0 -2
- data/lib/datadog/tracing/contrib/http/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/http/distributed/fetcher.rb +0 -1
- data/lib/datadog/tracing/contrib/http/distributed/propagation.rb +0 -1
- data/lib/datadog/tracing/contrib/http/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/http/instrumentation.rb +0 -2
- data/lib/datadog/tracing/contrib/http/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/http/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/http_annotation_helper.rb +0 -2
- data/lib/datadog/tracing/contrib/httpclient/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/httpclient/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +0 -2
- data/lib/datadog/tracing/contrib/httpclient/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/httpclient/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/httprb/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/httprb/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +0 -2
- data/lib/datadog/tracing/contrib/httprb/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/httprb/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/kafka/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/kafka/consumer_event.rb +0 -2
- data/lib/datadog/tracing/contrib/kafka/consumer_group_event.rb +0 -2
- data/lib/datadog/tracing/contrib/kafka/event.rb +1 -2
- data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +0 -2
- data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +0 -2
- data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +0 -2
- data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +0 -2
- data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +0 -2
- data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +0 -2
- data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +0 -2
- data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +0 -2
- data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +0 -2
- data/lib/datadog/tracing/contrib/kafka/events.rb +0 -2
- data/lib/datadog/tracing/contrib/kafka/ext.rb +1 -2
- data/lib/datadog/tracing/contrib/kafka/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/kafka/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/lograge/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/lograge/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +0 -2
- data/lib/datadog/tracing/contrib/lograge/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/lograge/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/mongodb/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/mongodb/instrumentation.rb +0 -2
- data/lib/datadog/tracing/contrib/mongodb/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/mongodb/parsers.rb +0 -2
- data/lib/datadog/tracing/contrib/mongodb/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +0 -2
- data/lib/datadog/tracing/contrib/mysql2/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/mysql2/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/mysql2/instrumentation.rb +0 -2
- data/lib/datadog/tracing/contrib/mysql2/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/mysql2/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/patchable.rb +0 -2
- data/lib/datadog/tracing/contrib/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/pg/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/pg/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/pg/instrumentation.rb +0 -2
- data/lib/datadog/tracing/contrib/pg/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/pg/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/presto/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/presto/ext.rb +1 -2
- data/lib/datadog/tracing/contrib/presto/instrumentation.rb +3 -2
- data/lib/datadog/tracing/contrib/presto/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/presto/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/propagation/sql_comment/comment.rb +0 -2
- data/lib/datadog/tracing/contrib/propagation/sql_comment/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/propagation/sql_comment/mode.rb +0 -2
- data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +0 -2
- data/lib/datadog/tracing/contrib/qless/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/qless/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/qless/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/qless/patcher.rb +0 -3
- data/lib/datadog/tracing/contrib/qless/qless_job.rb +3 -2
- data/lib/datadog/tracing/contrib/qless/tracer_cleaner.rb +0 -2
- data/lib/datadog/tracing/contrib/que/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/que/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/que/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/que/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/que/tracer.rb +2 -2
- data/lib/datadog/tracing/contrib/racecar/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/racecar/event.rb +1 -2
- data/lib/datadog/tracing/contrib/racecar/events/batch.rb +0 -2
- data/lib/datadog/tracing/contrib/racecar/events/consume.rb +0 -2
- data/lib/datadog/tracing/contrib/racecar/events/message.rb +0 -2
- data/lib/datadog/tracing/contrib/racecar/events.rb +0 -2
- data/lib/datadog/tracing/contrib/racecar/ext.rb +1 -2
- data/lib/datadog/tracing/contrib/racecar/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/racecar/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/rack/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/rack/ext.rb +5 -2
- data/lib/datadog/tracing/contrib/rack/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/rack/middlewares.rb +42 -18
- data/lib/datadog/tracing/contrib/rack/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/rack/request_queue.rb +0 -2
- data/lib/datadog/tracing/contrib/rails/auto_instrument_railtie.rb +0 -2
- data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/rails/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/rails/framework.rb +0 -2
- data/lib/datadog/tracing/contrib/rails/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/rails/log_injection.rb +0 -2
- data/lib/datadog/tracing/contrib/rails/middlewares.rb +0 -2
- data/lib/datadog/tracing/contrib/rails/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/rails/railtie.rb +0 -2
- data/lib/datadog/tracing/contrib/rails/utils.rb +0 -2
- data/lib/datadog/tracing/contrib/rake/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/rake/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/rake/instrumentation.rb +0 -2
- data/lib/datadog/tracing/contrib/rake/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/rake/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +0 -2
- data/lib/datadog/tracing/contrib/redis/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/redis/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/redis/instrumentation.rb +0 -2
- data/lib/datadog/tracing/contrib/redis/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/redis/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/redis/quantize.rb +0 -2
- data/lib/datadog/tracing/contrib/redis/tags.rb +0 -2
- data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +0 -2
- data/lib/datadog/tracing/contrib/redis/vendor/resolver.rb +0 -2
- data/lib/datadog/tracing/contrib/registerable.rb +0 -2
- data/lib/datadog/tracing/contrib/registry.rb +0 -2
- data/lib/datadog/tracing/contrib/resque/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/resque/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/resque/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/resque/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/resque/resque_job.rb +2 -2
- data/lib/datadog/tracing/contrib/rest_client/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/rest_client/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/rest_client/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/rest_client/patcher.rb +0 -3
- data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +0 -2
- data/lib/datadog/tracing/contrib/semantic_logger/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/semantic_logger/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +0 -2
- data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/semantic_logger/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/sequel/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/sequel/database.rb +0 -2
- data/lib/datadog/tracing/contrib/sequel/dataset.rb +0 -2
- data/lib/datadog/tracing/contrib/sequel/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/sequel/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/sequel/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/sequel/utils.rb +0 -2
- data/lib/datadog/tracing/contrib/shoryuken/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/shoryuken/ext.rb +1 -2
- data/lib/datadog/tracing/contrib/shoryuken/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/shoryuken/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/shoryuken/tracer.rb +2 -2
- data/lib/datadog/tracing/contrib/sidekiq/client_tracer.rb +2 -2
- data/lib/datadog/tracing/contrib/sidekiq/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/sidekiq/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/sidekiq/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/sidekiq/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/heartbeat.rb +4 -2
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/job_fetch.rb +2 -2
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/redis_info.rb +2 -2
- data/lib/datadog/tracing/contrib/sidekiq/server_internal_tracer/scheduled_poller.rb +4 -2
- data/lib/datadog/tracing/contrib/sidekiq/server_tracer.rb +2 -2
- data/lib/datadog/tracing/contrib/sidekiq/tracing.rb +0 -2
- data/lib/datadog/tracing/contrib/sinatra/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/sinatra/env.rb +0 -2
- data/lib/datadog/tracing/contrib/sinatra/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/sinatra/framework.rb +0 -2
- data/lib/datadog/tracing/contrib/sinatra/headers.rb +0 -2
- data/lib/datadog/tracing/contrib/sinatra/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/sinatra/patcher.rb +0 -3
- data/lib/datadog/tracing/contrib/sinatra/tracer.rb +0 -2
- data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +0 -2
- data/lib/datadog/tracing/contrib/sneakers/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/sneakers/ext.rb +1 -2
- data/lib/datadog/tracing/contrib/sneakers/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/sneakers/patcher.rb +0 -2
- data/lib/datadog/tracing/contrib/sneakers/tracer.rb +3 -2
- data/lib/datadog/tracing/contrib/status_code_matcher.rb +0 -2
- data/lib/datadog/tracing/contrib/stripe/patcher.rb +0 -1
- data/lib/datadog/tracing/contrib/sucker_punch/configuration/settings.rb +0 -2
- data/lib/datadog/tracing/contrib/sucker_punch/exception_handler.rb +0 -2
- data/lib/datadog/tracing/contrib/sucker_punch/ext.rb +0 -2
- data/lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb +0 -2
- data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +0 -2
- data/lib/datadog/tracing/contrib/sucker_punch/patcher.rb +0 -3
- data/lib/datadog/tracing/contrib/utils/database.rb +0 -2
- data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +0 -2
- data/lib/datadog/tracing/contrib/utils/quantization/http.rb +0 -4
- data/lib/datadog/tracing/contrib.rb +0 -2
- data/lib/datadog/tracing/correlation.rb +15 -3
- data/lib/datadog/tracing/diagnostics/ext.rb +0 -2
- data/lib/datadog/tracing/diagnostics/health.rb +0 -2
- data/lib/datadog/tracing/distributed/b3_multi.rb +12 -6
- data/lib/datadog/tracing/distributed/b3_single.rb +8 -6
- data/lib/datadog/tracing/distributed/datadog.rb +58 -11
- data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +0 -1
- data/lib/datadog/tracing/distributed/fetcher.rb +0 -9
- data/lib/datadog/tracing/distributed/headers/ext.rb +0 -1
- data/lib/datadog/tracing/distributed/helpers.rb +21 -36
- data/lib/datadog/tracing/distributed/none.rb +0 -1
- data/lib/datadog/tracing/distributed/propagation.rb +0 -1
- data/lib/datadog/tracing/distributed/trace_context.rb +8 -13
- data/lib/datadog/tracing/event.rb +0 -2
- data/lib/datadog/tracing/flush.rb +0 -2
- data/lib/datadog/tracing/metadata/analytics.rb +0 -2
- data/lib/datadog/tracing/metadata/errors.rb +0 -2
- data/lib/datadog/tracing/metadata/ext.rb +6 -2
- data/lib/datadog/tracing/metadata/tagging.rb +0 -2
- data/lib/datadog/tracing/metadata.rb +0 -2
- data/lib/datadog/tracing/pipeline/span_filter.rb +0 -2
- data/lib/datadog/tracing/pipeline/span_processor.rb +0 -2
- data/lib/datadog/tracing/pipeline.rb +0 -2
- data/lib/datadog/tracing/propagation/http.rb +0 -2
- data/lib/datadog/tracing/runtime/metrics.rb +0 -2
- data/lib/datadog/tracing/sampling/all_sampler.rb +0 -2
- data/lib/datadog/tracing/sampling/ext.rb +0 -2
- data/lib/datadog/tracing/sampling/matcher.rb +0 -2
- data/lib/datadog/tracing/sampling/priority_sampler.rb +0 -2
- data/lib/datadog/tracing/sampling/rate_by_key_sampler.rb +0 -2
- data/lib/datadog/tracing/sampling/rate_by_service_sampler.rb +0 -2
- data/lib/datadog/tracing/sampling/rate_limiter.rb +0 -2
- data/lib/datadog/tracing/sampling/rate_sampler.rb +0 -2
- data/lib/datadog/tracing/sampling/rule.rb +0 -2
- data/lib/datadog/tracing/sampling/rule_sampler.rb +0 -2
- data/lib/datadog/tracing/sampling/sampler.rb +0 -2
- data/lib/datadog/tracing/span.rb +0 -2
- data/lib/datadog/tracing/span_operation.rb +1 -3
- data/lib/datadog/tracing/sync_writer.rb +0 -2
- data/lib/datadog/tracing/trace_digest.rb +0 -2
- data/lib/datadog/tracing/trace_operation.rb +1 -3
- data/lib/datadog/tracing/trace_segment.rb +7 -2
- data/lib/datadog/tracing/tracer.rb +0 -2
- data/lib/datadog/tracing/utils.rb +33 -2
- data/lib/datadog/tracing/workers/trace_writer.rb +0 -2
- data/lib/datadog/tracing/workers.rb +0 -2
- data/lib/datadog/tracing/writer.rb +0 -2
- data/lib/datadog/tracing.rb +0 -2
- data/lib/ddtrace/auto_instrument.rb +0 -2
- data/lib/ddtrace/auto_instrument_base.rb +0 -2
- data/lib/ddtrace/profiling/preload.rb +0 -2
- data/lib/ddtrace/transport/ext.rb +0 -2
- data/lib/ddtrace/transport/http/adapters/net.rb +0 -2
- data/lib/ddtrace/transport/http/adapters/registry.rb +0 -2
- data/lib/ddtrace/transport/http/adapters/test.rb +0 -2
- data/lib/ddtrace/transport/http/adapters/unix_socket.rb +0 -2
- data/lib/ddtrace/transport/http/api/endpoint.rb +0 -2
- data/lib/ddtrace/transport/http/api/fallbacks.rb +0 -2
- data/lib/ddtrace/transport/http/api/instance.rb +0 -2
- data/lib/ddtrace/transport/http/api/map.rb +0 -2
- data/lib/ddtrace/transport/http/api/spec.rb +0 -2
- data/lib/ddtrace/transport/http/api.rb +0 -2
- data/lib/ddtrace/transport/http/builder.rb +0 -2
- data/lib/ddtrace/transport/http/client.rb +0 -2
- data/lib/ddtrace/transport/http/env.rb +0 -2
- data/lib/ddtrace/transport/http/response.rb +0 -2
- data/lib/ddtrace/transport/http/statistics.rb +0 -2
- data/lib/ddtrace/transport/http/traces.rb +1 -3
- data/lib/ddtrace/transport/http.rb +0 -4
- data/lib/ddtrace/transport/io/client.rb +0 -2
- data/lib/ddtrace/transport/io/response.rb +0 -2
- data/lib/ddtrace/transport/io/traces.rb +0 -4
- data/lib/ddtrace/transport/io.rb +0 -2
- data/lib/ddtrace/transport/parcel.rb +0 -4
- data/lib/ddtrace/transport/request.rb +0 -2
- data/lib/ddtrace/transport/response.rb +0 -2
- data/lib/ddtrace/transport/serializable_trace.rb +9 -5
- data/lib/ddtrace/transport/statistics.rb +0 -2
- data/lib/ddtrace/transport/trace_formatter.rb +7 -2
- data/lib/ddtrace/transport/traces.rb +1 -3
- data/lib/ddtrace/version.rb +2 -4
- data/lib/ddtrace.rb +1 -5
- metadata +26 -13
- data/ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time.h +0 -9
- data/lib/datadog/appsec/assets/waf_rules/risky.json +0 -1499
- data/lib/datadog/appsec/contrib/rack/request.rb +0 -78
- data/lib/datadog/appsec/contrib/rack/response.rb +0 -24
|
@@ -1,12 +1,10 @@
|
|
|
1
|
-
# typed: false
|
|
2
|
-
|
|
3
1
|
module Datadog
|
|
4
2
|
module Profiling
|
|
5
3
|
# Stores stack samples in a native libdatadog data structure and expose Ruby-level serialization APIs
|
|
6
4
|
# Note that `record_sample` is only accessible from native code.
|
|
7
5
|
# Methods prefixed with _native_ are implemented in `stack_recorder.c`
|
|
8
6
|
class StackRecorder
|
|
9
|
-
def initialize
|
|
7
|
+
def initialize(cpu_time_enabled:, alloc_samples_enabled:)
|
|
10
8
|
# This mutex works in addition to the fancy C-level mutexes we have in the native side (see the docs there).
|
|
11
9
|
# It prevents multiple Ruby threads calling serialize at the same time -- something like
|
|
12
10
|
# `10.times { Thread.new { stack_recorder.serialize } }`.
|
|
@@ -14,6 +12,8 @@ module Datadog
|
|
|
14
12
|
# C-level mutexes (that there is a single serializer thread), we add it here as an extra safeguard against it
|
|
15
13
|
# accidentally happening.
|
|
16
14
|
@no_concurrent_synchronize_mutex = Mutex.new
|
|
15
|
+
|
|
16
|
+
self.class._native_initialize(self, cpu_time_enabled, alloc_samples_enabled)
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
def serialize
|
|
@@ -66,11 +66,6 @@ module Datadog
|
|
|
66
66
|
end
|
|
67
67
|
end
|
|
68
68
|
|
|
69
|
-
# Used only for Ruby 2.2 which doesn't have the native `rb_time_timespec_new` API; called from native code
|
|
70
|
-
def self.ruby_time_from(timespec_seconds, timespec_nanoseconds)
|
|
71
|
-
Time.at(0).utc + timespec_seconds + (timespec_nanoseconds.to_r / 1_000_000_000)
|
|
72
|
-
end
|
|
73
|
-
|
|
74
69
|
def reset_after_fork
|
|
75
70
|
self.class._native_reset_after_fork(self)
|
|
76
71
|
end
|
data/lib/datadog/profiling.rb
CHANGED
|
@@ -1,11 +1,9 @@
|
|
|
1
|
-
# typed: true
|
|
2
|
-
|
|
3
1
|
require_relative 'core'
|
|
4
2
|
require_relative 'core/environment/variable_helpers'
|
|
5
3
|
require_relative 'core/utils/only_once'
|
|
6
4
|
|
|
7
5
|
module Datadog
|
|
8
|
-
#
|
|
6
|
+
# Datadog Continuous Profiler implementation: https://docs.datadoghq.com/profiler/
|
|
9
7
|
module Profiling
|
|
10
8
|
GOOGLE_PROTOBUF_MINIMUM_VERSION = Gem::Version.new('3.0')
|
|
11
9
|
private_constant :GOOGLE_PROTOBUF_MINIMUM_VERSION
|
|
@@ -41,6 +39,39 @@ module Datadog
|
|
|
41
39
|
!!profiler
|
|
42
40
|
end
|
|
43
41
|
|
|
42
|
+
# Returns an ever-increasing counter of the number of allocations observed by the profiler in this thread.
|
|
43
|
+
#
|
|
44
|
+
# Note 1: This counter may not start from zero on new threads. It should only be used to measure how many
|
|
45
|
+
# allocations have happened between two calls to this API:
|
|
46
|
+
# ```
|
|
47
|
+
# allocations_before = Datadog::Profiling.allocation_count
|
|
48
|
+
# do_some_work()
|
|
49
|
+
# allocations_after = Datadog::Profiling.allocation_count
|
|
50
|
+
# puts "Allocations during do_some_work: #{allocations_after - allocations_before}"
|
|
51
|
+
# ```
|
|
52
|
+
# (This is similar to some OS-based time representations.)
|
|
53
|
+
#
|
|
54
|
+
# Note 2: All fibers in the same thread will share the same counter values.
|
|
55
|
+
#
|
|
56
|
+
# Only available when the profiler is running, the new CPU Profiling 2.0 profiler is in use, and allocation-related
|
|
57
|
+
# features are not disabled via configuration.
|
|
58
|
+
# For instructions on enabling CPU Profiling 2.0 see the ddtrace release notes.
|
|
59
|
+
#
|
|
60
|
+
# @return [Integer] number of allocations observed in the current thread.
|
|
61
|
+
# @return [nil] when not available.
|
|
62
|
+
# @public_api
|
|
63
|
+
def self.allocation_count
|
|
64
|
+
# This no-op implementation is used when profiling failed to load.
|
|
65
|
+
# It gets replaced inside #replace_noop_allocation_count.
|
|
66
|
+
nil
|
|
67
|
+
end
|
|
68
|
+
|
|
69
|
+
private_class_method def self.replace_noop_allocation_count
|
|
70
|
+
def self.allocation_count # rubocop:disable Lint/DuplicateMethods, Lint/NestedMethodDefinition (On purpose!)
|
|
71
|
+
Datadog::Profiling::Collectors::CpuAndWallTimeWorker._native_allocation_count
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
44
75
|
private_class_method def self.native_library_compilation_skipped?
|
|
45
76
|
skipped_reason = try_reading_skipped_reason_file
|
|
46
77
|
|
|
@@ -65,7 +96,7 @@ module Datadog
|
|
|
65
96
|
# NOTE: On environments where protobuf is already loaded, we skip the check. This allows us to support environments
|
|
66
97
|
# where no Gem.loaded_version is NOT available but customers are able to load protobuf; see for instance
|
|
67
98
|
# https://github.com/teamcapybara/capybara/commit/caf3bcd7664f4f2691d0ca9ef3be9a2a954fecfb
|
|
68
|
-
if !
|
|
99
|
+
if !protobuf_already_loaded? && Gem.loaded_specs['google-protobuf'].nil?
|
|
69
100
|
"Missing google-protobuf dependency; please add `gem 'google-protobuf', '~> 3.0'` to your Gemfile or gems.rb file"
|
|
70
101
|
end
|
|
71
102
|
end
|
|
@@ -74,12 +105,16 @@ module Datadog
|
|
|
74
105
|
# See above for why we skip the check when protobuf is already loaded; note that when protobuf was already loaded
|
|
75
106
|
# we skip the version check to avoid the call to Gem.loaded_specs. Unfortunately, protobuf does not seem to
|
|
76
107
|
# expose the gem version constant elsewhere, so in that setup we are not able to check the version.
|
|
77
|
-
if !
|
|
108
|
+
if !protobuf_already_loaded? && Gem.loaded_specs['google-protobuf'].version < GOOGLE_PROTOBUF_MINIMUM_VERSION
|
|
78
109
|
'Your google-protobuf is too old; ensure that you have google-protobuf >= 3.0 by ' \
|
|
79
110
|
"adding `gem 'google-protobuf', '~> 3.0'` to your Gemfile or gems.rb file"
|
|
80
111
|
end
|
|
81
112
|
end
|
|
82
113
|
|
|
114
|
+
private_class_method def self.protobuf_already_loaded?
|
|
115
|
+
defined?(::Google::Protobuf) && !defined?(::Protobuf)
|
|
116
|
+
end
|
|
117
|
+
|
|
83
118
|
private_class_method def self.protobuf_failed_to_load?
|
|
84
119
|
unless protobuf_loaded_successfully?
|
|
85
120
|
'There was an error loading the google-protobuf library; see previous warning message for details'
|
|
@@ -105,7 +140,7 @@ module Datadog
|
|
|
105
140
|
# NOTE: We use Kernel#warn here because this code gets run BEFORE Datadog.logger is actually set up.
|
|
106
141
|
# In the future it'd be nice to shuffle the logger startup to happen first to avoid this special case.
|
|
107
142
|
Kernel.warn(
|
|
108
|
-
'[
|
|
143
|
+
'[ddtrace] Error while loading google-protobuf gem. ' \
|
|
109
144
|
"Cause: '#{e.class.name} #{e.message}' Location: '#{Array(e.backtrace).first}'. " \
|
|
110
145
|
'This can happen when google-protobuf is missing its native components. ' \
|
|
111
146
|
'To fix this, try removing and reinstalling the gem, forcing it to recompile the components: ' \
|
|
@@ -147,12 +182,12 @@ module Datadog
|
|
|
147
182
|
|
|
148
183
|
require_relative 'profiling/ext/forking'
|
|
149
184
|
require_relative 'profiling/collectors/code_provenance'
|
|
150
|
-
require_relative 'profiling/collectors/cpu_and_wall_time'
|
|
151
185
|
require_relative 'profiling/collectors/cpu_and_wall_time_worker'
|
|
152
186
|
require_relative 'profiling/collectors/dynamic_sampling_rate'
|
|
153
187
|
require_relative 'profiling/collectors/idle_sampling_helper'
|
|
154
188
|
require_relative 'profiling/collectors/old_stack'
|
|
155
189
|
require_relative 'profiling/collectors/stack'
|
|
190
|
+
require_relative 'profiling/collectors/thread_context'
|
|
156
191
|
require_relative 'profiling/stack_recorder'
|
|
157
192
|
require_relative 'profiling/old_recorder'
|
|
158
193
|
require_relative 'profiling/exporter'
|
|
@@ -165,6 +200,8 @@ module Datadog
|
|
|
165
200
|
require_relative 'profiling/tag_builder'
|
|
166
201
|
require_relative 'profiling/http_transport'
|
|
167
202
|
|
|
203
|
+
replace_noop_allocation_count
|
|
204
|
+
|
|
168
205
|
true
|
|
169
206
|
end
|
|
170
207
|
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# typed: true
|
|
2
|
-
|
|
3
1
|
require_relative '../core'
|
|
4
2
|
require_relative '../core/environment/ext'
|
|
5
3
|
require_relative '../core/buffer/thread_safe'
|
|
@@ -10,8 +8,6 @@ module Datadog
|
|
|
10
8
|
module Tracing
|
|
11
9
|
# Health metrics for trace buffers.
|
|
12
10
|
module MeasuredBuffer
|
|
13
|
-
include Kernel # Ensure that kernel methods are always available (https://sorbet.org/docs/error-reference#7003)
|
|
14
|
-
|
|
15
11
|
def initialize(*_)
|
|
16
12
|
super
|
|
17
13
|
|
|
@@ -1,164 +1,61 @@
|
|
|
1
|
-
#
|
|
1
|
+
# frozen_string_literal: true
|
|
2
2
|
|
|
3
3
|
require_relative '../core/configuration'
|
|
4
|
+
require_relative '../core/utils/network'
|
|
4
5
|
require_relative 'metadata/ext'
|
|
5
6
|
require_relative 'span'
|
|
6
7
|
|
|
7
|
-
require 'ipaddr'
|
|
8
|
-
|
|
9
8
|
module Datadog
|
|
10
9
|
module Tracing
|
|
11
10
|
# Common functions for supporting the `http.client_ip` span attribute.
|
|
12
11
|
module ClientIp
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
21
|
-
|
|
22
|
-
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
# Sets the `http.client_ip` tag on the given span.
|
|
28
|
-
#
|
|
29
|
-
# This function respects the user's settings: if they disable the client IP tagging,
|
|
30
|
-
# or provide a different IP header name.
|
|
31
|
-
#
|
|
32
|
-
# If multiple IP headers are present in the request, this function will instead set
|
|
33
|
-
# the `_dd.multiple-ip-headers` tag with the names of the present headers,
|
|
34
|
-
# and **NOT** set the `http.client_ip` tag.
|
|
35
|
-
#
|
|
36
|
-
# @param [Span] span The span that's associated with the request.
|
|
37
|
-
# @param [HeaderCollection, #get, nil] headers A collection with the request headers.
|
|
38
|
-
# @param [String, nil] remote_ip The remote IP the request associated with the span is sent to.
|
|
39
|
-
def self.set_client_ip_tag(span, headers: nil, remote_ip: nil)
|
|
40
|
-
return unless configuration.enabled
|
|
41
|
-
|
|
42
|
-
set_client_ip_tag!(span, headers: headers, remote_ip: remote_ip)
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
# Forcefully sets the `http.client_ip` tag on the given span.
|
|
46
|
-
#
|
|
47
|
-
# This function ignores the user's `enabled` setting.
|
|
48
|
-
#
|
|
49
|
-
# @param [Span] span The span that's associated with the request.
|
|
50
|
-
# @param [HeaderCollection, #get, nil] headers A collection with the request headers.
|
|
51
|
-
# @param [String, nil] remote_ip The remote IP the request associated with the span is sent to.
|
|
52
|
-
def self.set_client_ip_tag!(span, headers: nil, remote_ip: nil)
|
|
53
|
-
result = raw_ip_from_request(headers, remote_ip)
|
|
54
|
-
|
|
55
|
-
if result.raw_ip
|
|
56
|
-
ip = strip_decorations(result.raw_ip)
|
|
57
|
-
return unless valid_ip?(ip)
|
|
58
|
-
|
|
59
|
-
span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_CLIENT_IP, ip)
|
|
60
|
-
elsif result.multiple_ip_headers
|
|
61
|
-
span.set_tag(TAG_MULTIPLE_IP_HEADERS, result.multiple_ip_headers.keys.join(','))
|
|
12
|
+
class << self
|
|
13
|
+
# Sets the `http.client_ip` tag on the given span.
|
|
14
|
+
#
|
|
15
|
+
# This function respects the user's settings: if they disable the client IP tagging,
|
|
16
|
+
# or provide a different IP header name.
|
|
17
|
+
#
|
|
18
|
+
# @param [Span] span The span that's associated with the request.
|
|
19
|
+
# @param [HeaderCollection, #get, nil] headers A collection with the request headers.
|
|
20
|
+
# @param [String, nil] remote_ip The remote IP the request associated with the span is sent to.
|
|
21
|
+
def set_client_ip_tag(span, headers: nil, remote_ip: nil)
|
|
22
|
+
return unless configuration.enabled
|
|
23
|
+
|
|
24
|
+
set_client_ip_tag!(span, headers: headers, remote_ip: remote_ip)
|
|
62
25
|
end
|
|
63
|
-
end
|
|
64
|
-
|
|
65
|
-
IpExtractionResult = Struct.new(:raw_ip, :multiple_ip_headers)
|
|
66
|
-
|
|
67
|
-
# Returns a result struct that holds the raw client IP associated with the request if it was
|
|
68
|
-
# retrieved successfully.
|
|
69
|
-
#
|
|
70
|
-
# The client IP is looked up by the following logic:
|
|
71
|
-
# * If the user has configured a header name, return that header's value.
|
|
72
|
-
# * If exactly one of the known IP headers is present, return that header's value.
|
|
73
|
-
# * If none of the known IP headers are present, return the remote IP from the request.
|
|
74
|
-
#
|
|
75
|
-
# If more than one of the known IP headers is present, the result will have a `multiple_ip_headers`
|
|
76
|
-
# field with the name of the present IP headers.
|
|
77
|
-
#
|
|
78
|
-
# @param [Datadog::Core::HeaderCollection, #get, nil] headers The request headers
|
|
79
|
-
# @param [String] remote_ip The remote IP of the request.
|
|
80
|
-
# @return [IpExtractionResult] A struct that holds the unprocessed IP value,
|
|
81
|
-
# or `nil` if it wasn't found. Additionally, the `multiple_ip_headers` fields will hold the
|
|
82
|
-
# name of known IP headers present in the request if more than one of these were found.
|
|
83
|
-
def self.raw_ip_from_request(headers, remote_ip)
|
|
84
|
-
return IpExtractionResult.new(headers && headers.get(configuration.header_name), nil) if configuration.header_name
|
|
85
|
-
|
|
86
|
-
headers_present = ip_headers(headers)
|
|
87
|
-
|
|
88
|
-
case headers_present.size
|
|
89
|
-
when 0
|
|
90
|
-
IpExtractionResult.new(remote_ip, nil)
|
|
91
|
-
when 1
|
|
92
|
-
IpExtractionResult.new(headers_present.values.first, nil)
|
|
93
|
-
else
|
|
94
|
-
IpExtractionResult.new(nil, headers_present)
|
|
95
|
-
end
|
|
96
|
-
end
|
|
97
26
|
|
|
98
|
-
|
|
99
|
-
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
107
|
-
|
|
108
|
-
|
|
109
|
-
ipv6.gsub(/%.*/, '')
|
|
110
|
-
end
|
|
111
|
-
|
|
112
|
-
def self.strip_ipv4_port(ip)
|
|
113
|
-
ip.gsub(/:\d+\z/, '')
|
|
114
|
-
end
|
|
115
|
-
|
|
116
|
-
def self.strip_ipv6_port(ip)
|
|
117
|
-
if /\[(.*)\](?::\d+)?/ =~ ip
|
|
118
|
-
Regexp.last_match(1)
|
|
119
|
-
else
|
|
120
|
-
ip
|
|
27
|
+
# Forcefully sets the `http.client_ip` tag on the given span.
|
|
28
|
+
#
|
|
29
|
+
# This function ignores the user's `enabled` setting.
|
|
30
|
+
#
|
|
31
|
+
# @param [Span] span The span that's associated with the request.
|
|
32
|
+
# @param [HeaderCollection, #get, nil] headers A collection with the request headers.
|
|
33
|
+
# @param [String, nil] remote_ip The remote IP the request associated with the span is sent to.
|
|
34
|
+
def set_client_ip_tag!(span, headers: nil, remote_ip: nil)
|
|
35
|
+
ip = extract_client_ip(headers, remote_ip)
|
|
36
|
+
|
|
37
|
+
span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_CLIENT_IP, ip) if ip
|
|
121
38
|
end
|
|
122
|
-
end
|
|
123
|
-
|
|
124
|
-
# Returns whether the given value is more likely to be an IPv4 than an IPv6 address.
|
|
125
|
-
#
|
|
126
|
-
# This is done by checking if a dot (`'.'`) character appears before a colon (`':'`) in the value.
|
|
127
|
-
# The rationale is that in valid IPv6 addresses, colons will always preced dots,
|
|
128
|
-
# and in valid IPv4 addresses dots will always preced colons.
|
|
129
|
-
def self.likely_ipv4?(value)
|
|
130
|
-
dot_index = value.index('.') || value.size
|
|
131
|
-
colon_index = value.index(':') || value.size
|
|
132
|
-
|
|
133
|
-
dot_index < colon_index
|
|
134
|
-
end
|
|
135
39
|
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
40
|
+
def extract_client_ip(headers, remote_ip)
|
|
41
|
+
if headers && configuration.header_name
|
|
42
|
+
return Datadog::Core::Utils::Network.stripped_ip_from_request_headers(
|
|
43
|
+
headers,
|
|
44
|
+
ip_headers_to_check: Array(configuration.header_name)
|
|
45
|
+
)
|
|
46
|
+
end
|
|
140
47
|
|
|
141
|
-
|
|
142
|
-
IPAddr.new(ip)
|
|
48
|
+
ip_from_headers = Datadog::Core::Utils::Network.stripped_ip_from_request_headers(headers) if headers
|
|
143
49
|
|
|
144
|
-
|
|
145
|
-
rescue IPAddr::Error
|
|
146
|
-
false
|
|
50
|
+
ip_from_headers || Datadog::Core::Utils::Network.stripped_ip(remote_ip)
|
|
147
51
|
end
|
|
148
|
-
end
|
|
149
52
|
|
|
150
|
-
|
|
151
|
-
return {} unless headers
|
|
53
|
+
private
|
|
152
54
|
|
|
153
|
-
|
|
154
|
-
|
|
155
|
-
result[name] = value unless value.nil?
|
|
55
|
+
def configuration
|
|
56
|
+
Datadog.configuration.tracing.client_ip
|
|
156
57
|
end
|
|
157
58
|
end
|
|
158
|
-
|
|
159
|
-
def self.configuration
|
|
160
|
-
Datadog.configuration.tracing.client_ip
|
|
161
|
-
end
|
|
162
59
|
end
|
|
163
60
|
end
|
|
164
61
|
end
|
|
@@ -0,0 +1,176 @@
|
|
|
1
|
+
# frozen_string_literal: true
|
|
2
|
+
|
|
3
|
+
require_relative 'tracer'
|
|
4
|
+
require_relative 'flush'
|
|
5
|
+
require_relative 'sync_writer'
|
|
6
|
+
require_relative 'sampling/span/rule_parser'
|
|
7
|
+
require_relative 'sampling/span/sampler'
|
|
8
|
+
|
|
9
|
+
module Datadog
|
|
10
|
+
module Tracing
|
|
11
|
+
# Tracing component
|
|
12
|
+
module Component
|
|
13
|
+
def build_tracer(settings, agent_settings)
|
|
14
|
+
# If a custom tracer has been provided, use it instead.
|
|
15
|
+
# Ignore all other options (they should already be configured.)
|
|
16
|
+
tracer = settings.tracing.instance
|
|
17
|
+
return tracer unless tracer.nil?
|
|
18
|
+
|
|
19
|
+
# Apply test mode settings if test mode is activated
|
|
20
|
+
if settings.tracing.test_mode.enabled
|
|
21
|
+
trace_flush = build_test_mode_trace_flush(settings)
|
|
22
|
+
sampler = build_test_mode_sampler
|
|
23
|
+
writer = build_test_mode_writer(settings, agent_settings)
|
|
24
|
+
else
|
|
25
|
+
trace_flush = build_trace_flush(settings)
|
|
26
|
+
sampler = build_sampler(settings)
|
|
27
|
+
writer = build_writer(settings, agent_settings)
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
subscribe_to_writer_events!(writer, sampler, settings.tracing.test_mode.enabled)
|
|
31
|
+
|
|
32
|
+
Tracing::Tracer.new(
|
|
33
|
+
default_service: settings.service,
|
|
34
|
+
enabled: settings.tracing.enabled,
|
|
35
|
+
trace_flush: trace_flush,
|
|
36
|
+
sampler: sampler,
|
|
37
|
+
span_sampler: build_span_sampler(settings),
|
|
38
|
+
writer: writer,
|
|
39
|
+
tags: build_tracer_tags(settings),
|
|
40
|
+
)
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
def build_trace_flush(settings)
|
|
44
|
+
if settings.tracing.partial_flush.enabled
|
|
45
|
+
Tracing::Flush::Partial.new(
|
|
46
|
+
min_spans_before_partial_flush: settings.tracing.partial_flush.min_spans_threshold
|
|
47
|
+
)
|
|
48
|
+
else
|
|
49
|
+
Tracing::Flush::Finished.new
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
# TODO: Sampler should be a top-level component.
|
|
54
|
+
# It is currently part of the Tracer initialization
|
|
55
|
+
# process, but can take a variety of options (including
|
|
56
|
+
# a fully custom instance) that makes the Tracer
|
|
57
|
+
# initialization process complex.
|
|
58
|
+
def build_sampler(settings)
|
|
59
|
+
if (sampler = settings.tracing.sampler)
|
|
60
|
+
if settings.tracing.priority_sampling == false
|
|
61
|
+
sampler
|
|
62
|
+
else
|
|
63
|
+
ensure_priority_sampling(sampler, settings)
|
|
64
|
+
end
|
|
65
|
+
elsif settings.tracing.priority_sampling == false
|
|
66
|
+
Tracing::Sampling::RuleSampler.new(
|
|
67
|
+
rate_limit: settings.tracing.sampling.rate_limit,
|
|
68
|
+
default_sample_rate: settings.tracing.sampling.default_rate
|
|
69
|
+
)
|
|
70
|
+
else
|
|
71
|
+
Tracing::Sampling::PrioritySampler.new(
|
|
72
|
+
base_sampler: Tracing::Sampling::AllSampler.new,
|
|
73
|
+
post_sampler: Tracing::Sampling::RuleSampler.new(
|
|
74
|
+
rate_limit: settings.tracing.sampling.rate_limit,
|
|
75
|
+
default_sample_rate: settings.tracing.sampling.default_rate
|
|
76
|
+
)
|
|
77
|
+
)
|
|
78
|
+
end
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
def ensure_priority_sampling(sampler, settings)
|
|
82
|
+
if sampler.is_a?(Tracing::Sampling::PrioritySampler)
|
|
83
|
+
sampler
|
|
84
|
+
else
|
|
85
|
+
Tracing::Sampling::PrioritySampler.new(
|
|
86
|
+
base_sampler: sampler,
|
|
87
|
+
post_sampler: Tracing::Sampling::RuleSampler.new(
|
|
88
|
+
rate_limit: settings.tracing.sampling.rate_limit,
|
|
89
|
+
default_sample_rate: settings.tracing.sampling.default_rate
|
|
90
|
+
)
|
|
91
|
+
)
|
|
92
|
+
end
|
|
93
|
+
end
|
|
94
|
+
|
|
95
|
+
# TODO: Writer should be a top-level component.
|
|
96
|
+
# It is currently part of the Tracer initialization
|
|
97
|
+
# process, but can take a variety of options (including
|
|
98
|
+
# a fully custom instance) that makes the Tracer
|
|
99
|
+
# initialization process complex.
|
|
100
|
+
def build_writer(settings, agent_settings)
|
|
101
|
+
if (writer = settings.tracing.writer)
|
|
102
|
+
return writer
|
|
103
|
+
end
|
|
104
|
+
|
|
105
|
+
Tracing::Writer.new(agent_settings: agent_settings, **settings.tracing.writer_options)
|
|
106
|
+
end
|
|
107
|
+
|
|
108
|
+
def subscribe_to_writer_events!(writer, sampler, test_mode)
|
|
109
|
+
return unless writer.respond_to?(:events) # Check if it's a custom, external writer
|
|
110
|
+
|
|
111
|
+
writer.events.after_send.subscribe(&WRITER_RECORD_ENVIRONMENT_INFORMATION_CALLBACK)
|
|
112
|
+
|
|
113
|
+
return unless sampler.is_a?(Tracing::Sampling::PrioritySampler)
|
|
114
|
+
|
|
115
|
+
# DEV: We need to ignore priority sampling updates coming from the agent in test mode
|
|
116
|
+
# because test mode wants to *unconditionally* sample all traces.
|
|
117
|
+
#
|
|
118
|
+
# This can cause trace metrics to be overestimated, but that's a trade-off we take
|
|
119
|
+
# here to achieve 100% sampling rate.
|
|
120
|
+
return if test_mode
|
|
121
|
+
|
|
122
|
+
writer.events.after_send.subscribe(&writer_update_priority_sampler_rates_callback(sampler))
|
|
123
|
+
end
|
|
124
|
+
|
|
125
|
+
WRITER_RECORD_ENVIRONMENT_INFORMATION_CALLBACK = lambda do |_, responses|
|
|
126
|
+
Core::Diagnostics::EnvironmentLogger.log!(responses)
|
|
127
|
+
end
|
|
128
|
+
|
|
129
|
+
# Create new lambda for writer callback,
|
|
130
|
+
# capture the current sampler in the callback closure.
|
|
131
|
+
def writer_update_priority_sampler_rates_callback(sampler)
|
|
132
|
+
lambda do |_, responses|
|
|
133
|
+
response = responses.last
|
|
134
|
+
|
|
135
|
+
next unless response && !response.internal_error? && response.service_rates
|
|
136
|
+
|
|
137
|
+
sampler.update(response.service_rates, decision: Tracing::Sampling::Ext::Decision::AGENT_RATE)
|
|
138
|
+
end
|
|
139
|
+
end
|
|
140
|
+
|
|
141
|
+
def build_span_sampler(settings)
|
|
142
|
+
rules = Tracing::Sampling::Span::RuleParser.parse_json(settings.tracing.sampling.span_rules)
|
|
143
|
+
Tracing::Sampling::Span::Sampler.new(rules || [])
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
private
|
|
147
|
+
|
|
148
|
+
def build_tracer_tags(settings)
|
|
149
|
+
settings.tags.dup.tap do |tags|
|
|
150
|
+
tags[Core::Environment::Ext::TAG_ENV] = settings.env unless settings.env.nil?
|
|
151
|
+
tags[Core::Environment::Ext::TAG_VERSION] = settings.version unless settings.version.nil?
|
|
152
|
+
end
|
|
153
|
+
end
|
|
154
|
+
|
|
155
|
+
def build_test_mode_trace_flush(settings)
|
|
156
|
+
# If context flush behavior is provided, use it instead.
|
|
157
|
+
settings.tracing.test_mode.trace_flush || build_trace_flush(settings)
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def build_test_mode_sampler
|
|
161
|
+
# Do not sample any spans for tests; all must be preserved.
|
|
162
|
+
# Set priority sampler to ensure the agent doesn't drop any traces.
|
|
163
|
+
Tracing::Sampling::PrioritySampler.new(
|
|
164
|
+
base_sampler: Tracing::Sampling::AllSampler.new,
|
|
165
|
+
post_sampler: Tracing::Sampling::AllSampler.new
|
|
166
|
+
)
|
|
167
|
+
end
|
|
168
|
+
|
|
169
|
+
def build_test_mode_writer(settings, agent_settings)
|
|
170
|
+
# Flush traces synchronously, to guarantee they are written.
|
|
171
|
+
writer_options = settings.tracing.test_mode.writer_options || {}
|
|
172
|
+
Tracing::SyncWriter.new(agent_settings: agent_settings, **writer_options)
|
|
173
|
+
end
|
|
174
|
+
end
|
|
175
|
+
end
|
|
176
|
+
end
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# typed: true
|
|
2
|
-
|
|
3
1
|
module Datadog
|
|
4
2
|
module Tracing
|
|
5
3
|
module Configuration
|
|
@@ -7,6 +5,7 @@ module Datadog
|
|
|
7
5
|
# e.g. Env vars, default values, enums, etc...
|
|
8
6
|
module Ext
|
|
9
7
|
ENV_ENABLED = 'DD_TRACE_ENABLED'.freeze
|
|
8
|
+
ENV_TRACE_ID_128_BIT_GENERATION_ENABLED = 'DD_TRACE_128_BIT_TRACEID_GENERATION_ENABLED'.freeze
|
|
10
9
|
|
|
11
10
|
# @public_api
|
|
12
11
|
module Analytics
|
|
@@ -16,6 +15,7 @@ module Datadog
|
|
|
16
15
|
# @public_api
|
|
17
16
|
module Correlation
|
|
18
17
|
ENV_LOGS_INJECTION_ENABLED = 'DD_LOGS_INJECTION'.freeze
|
|
18
|
+
ENV_TRACE_ID_128_BIT_LOGGING_ENABLED = 'DD_TRACE_128_BIT_TRACEID_LOGGING_ENABLED'.freeze
|
|
19
19
|
end
|
|
20
20
|
|
|
21
21
|
# @public_api
|
|
@@ -1,5 +1,3 @@
|
|
|
1
|
-
# typed: false
|
|
2
|
-
|
|
3
1
|
require_relative '../../tracing/configuration/ext'
|
|
4
2
|
|
|
5
3
|
module Datadog
|
|
@@ -175,6 +173,26 @@ module Datadog
|
|
|
175
173
|
o.lazy
|
|
176
174
|
end
|
|
177
175
|
|
|
176
|
+
# Enable 128 bit trace id generation.
|
|
177
|
+
#
|
|
178
|
+
# @default `DD_TRACE_128_BIT_TRACEID_GENERATION_ENABLED` environment variable, otherwise `false`
|
|
179
|
+
# @return [Boolean]
|
|
180
|
+
option :trace_id_128_bit_generation_enabled do |o|
|
|
181
|
+
o.default { env_to_bool(Tracing::Configuration::Ext::ENV_TRACE_ID_128_BIT_GENERATION_ENABLED, false) }
|
|
182
|
+
o.lazy
|
|
183
|
+
end
|
|
184
|
+
|
|
185
|
+
# Enable 128 bit trace id injected for logging.
|
|
186
|
+
#
|
|
187
|
+
# @default `DD_TRACE_128_BIT_TRACEID_LOGGING_ENABLED` environment variable, otherwise `false`
|
|
188
|
+
# @return [Boolean]
|
|
189
|
+
#
|
|
190
|
+
# It is not supported by our backend yet. Do not enable it.
|
|
191
|
+
option :trace_id_128_bit_logging_enabled do |o|
|
|
192
|
+
o.default { env_to_bool(Tracing::Configuration::Ext::Correlation::ENV_TRACE_ID_128_BIT_LOGGING_ENABLED, false) }
|
|
193
|
+
o.lazy
|
|
194
|
+
end
|
|
195
|
+
|
|
178
196
|
# A custom tracer instance.
|
|
179
197
|
#
|
|
180
198
|
# It must respect the contract of {Datadog::Tracing::Tracer}.
|