datadog 2.19.0 → 2.21.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 +52 -1
- data/README.md +0 -1
- data/ext/libdatadog_api/extconf.rb +3 -1
- data/ext/libdatadog_api/process_discovery.c +5 -5
- data/ext/libdatadog_extconf_helpers.rb +13 -3
- data/lib/datadog/appsec/api_security/route_extractor.rb +6 -2
- data/lib/datadog/appsec/autoload.rb +1 -1
- data/lib/datadog/appsec/component.rb +3 -13
- data/lib/datadog/appsec/context.rb +23 -0
- data/lib/datadog/appsec/contrib/devise/patches/signin_tracking_patch.rb +2 -1
- data/lib/datadog/appsec/contrib/devise/patches/signup_tracking_patch.rb +2 -1
- data/lib/datadog/appsec/contrib/excon/ssrf_detection_middleware.rb +0 -1
- data/lib/datadog/appsec/contrib/faraday/ssrf_detection_middleware.rb +0 -1
- data/lib/datadog/appsec/contrib/rack/request_middleware.rb +14 -22
- data/lib/datadog/appsec/contrib/rails/gateway/watcher.rb +23 -2
- data/lib/datadog/appsec/contrib/rails/patcher.rb +14 -26
- data/lib/datadog/appsec/contrib/rails/patches/process_action_patch.rb +27 -0
- data/lib/datadog/appsec/contrib/rails/patches/render_to_body_patch.rb +33 -0
- data/lib/datadog/appsec/contrib/rest_client/request_ssrf_detection_patch.rb +0 -1
- data/lib/datadog/appsec/contrib/sinatra/gateway/watcher.rb +23 -0
- data/lib/datadog/appsec/contrib/sinatra/patcher.rb +8 -18
- data/lib/datadog/appsec/contrib/sinatra/patches/json_patch.rb +31 -0
- data/lib/datadog/appsec/event.rb +3 -18
- data/lib/datadog/appsec/instrumentation/gateway/argument.rb +16 -0
- data/lib/datadog/appsec/metrics/collector.rb +7 -3
- data/lib/datadog/appsec/metrics/telemetry.rb +1 -1
- data/lib/datadog/appsec/metrics/telemetry_exporter.rb +28 -0
- data/lib/datadog/appsec/metrics.rb +1 -0
- data/lib/datadog/appsec/security_engine/engine.rb +14 -32
- data/lib/datadog/appsec/security_engine/result.rb +16 -0
- data/lib/datadog/appsec/security_engine/runner.rb +18 -4
- data/lib/datadog/appsec/thread_safe_ref.rb +61 -0
- data/lib/datadog/appsec/trace_keeper.rb +24 -0
- data/lib/datadog/appsec/utils/hash_coercion.rb +23 -0
- data/lib/datadog/appsec.rb +0 -7
- data/lib/datadog/auto_instrument_base.rb +2 -1
- data/lib/datadog/core/configuration/agent_settings_resolver.rb +4 -4
- data/lib/datadog/core/configuration/components.rb +8 -2
- data/lib/datadog/core/configuration/config_helper.rb +100 -0
- data/lib/datadog/core/configuration/deprecations.rb +36 -0
- data/lib/datadog/core/configuration/ext.rb +0 -1
- data/lib/datadog/core/configuration/option.rb +55 -51
- data/lib/datadog/core/configuration/option_definition.rb +2 -11
- data/lib/datadog/core/configuration/options.rb +14 -12
- data/lib/datadog/core/configuration/settings.rb +10 -6
- data/lib/datadog/core/configuration/supported_configurations.rb +335 -0
- data/lib/datadog/core/configuration.rb +1 -1
- data/lib/datadog/core/deprecations.rb +2 -2
- data/lib/datadog/core/environment/ext.rb +0 -2
- data/lib/datadog/core/environment/git.rb +2 -2
- data/lib/datadog/core/environment/variable_helpers.rb +3 -3
- data/lib/datadog/core/metrics/client.rb +2 -2
- data/lib/datadog/core/process_discovery/tracer_memfd.rb +2 -4
- data/lib/datadog/core/process_discovery.rb +46 -23
- data/lib/datadog/core/runtime/ext.rb +0 -1
- data/lib/datadog/core/telemetry/event/app_started.rb +2 -2
- data/lib/datadog/core.rb +2 -0
- data/lib/datadog/di/boot.rb +9 -1
- data/lib/datadog/di/component.rb +7 -0
- data/lib/datadog/di/probe_file_loader/railtie.rb +15 -0
- data/lib/datadog/di/probe_file_loader.rb +82 -0
- data/lib/datadog/di/probe_notification_builder.rb +1 -1
- data/lib/datadog/di/remote.rb +3 -5
- data/lib/datadog/di.rb +0 -1
- data/lib/datadog/kit/appsec/events/v2.rb +5 -4
- data/lib/datadog/kit/appsec/events.rb +11 -10
- data/lib/datadog/kit/identity.rb +17 -11
- data/lib/datadog/opentelemetry/api/baggage.rb +2 -2
- data/lib/datadog/opentelemetry/api/context.rb +10 -9
- data/lib/datadog/opentelemetry/sdk/configurator.rb +1 -1
- data/lib/datadog/opentelemetry/sdk/propagator.rb +4 -4
- data/lib/datadog/opentelemetry/sdk/span_processor.rb +8 -8
- data/lib/datadog/opentelemetry/sdk/trace/span.rb +14 -10
- data/lib/datadog/opentelemetry/trace.rb +4 -4
- data/lib/datadog/profiling/collectors/info.rb +1 -1
- data/lib/datadog/profiling/ext.rb +2 -1
- data/lib/datadog/profiling/http_transport.rb +1 -1
- data/lib/datadog/profiling/tasks/exec.rb +2 -2
- data/lib/datadog/profiling.rb +6 -8
- data/lib/datadog/tracing/analytics.rb +1 -1
- data/lib/datadog/tracing/buffer.rb +7 -7
- data/lib/datadog/tracing/configuration/dynamic.rb +4 -6
- data/lib/datadog/tracing/configuration/ext.rb +3 -5
- data/lib/datadog/tracing/configuration/settings.rb +29 -7
- data/lib/datadog/tracing/context.rb +2 -2
- data/lib/datadog/tracing/contrib/action_cable/event.rb +1 -1
- data/lib/datadog/tracing/contrib/action_cable/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/action_mailer/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/action_pack/action_controller/instrumentation.rb +4 -4
- data/lib/datadog/tracing/contrib/action_pack/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/action_view/events/render_template.rb +1 -1
- data/lib/datadog/tracing/contrib/active_job/event.rb +8 -8
- data/lib/datadog/tracing/contrib/active_job/events/discard.rb +1 -1
- data/lib/datadog/tracing/contrib/active_job/events/enqueue.rb +1 -1
- data/lib/datadog/tracing/contrib/active_job/events/enqueue_at.rb +1 -1
- data/lib/datadog/tracing/contrib/active_job/events/enqueue_retry.rb +1 -1
- data/lib/datadog/tracing/contrib/active_job/events/perform.rb +1 -1
- data/lib/datadog/tracing/contrib/active_job/events/retry_stopped.rb +1 -1
- data/lib/datadog/tracing/contrib/active_job/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/active_model_serializers/events/render.rb +1 -1
- data/lib/datadog/tracing/contrib/active_model_serializers/events/serialize.rb +3 -3
- data/lib/datadog/tracing/contrib/active_model_serializers/integration.rb +1 -2
- data/lib/datadog/tracing/contrib/active_record/configuration/resolver.rb +1 -1
- data/lib/datadog/tracing/contrib/active_record/events/instantiation.rb +1 -1
- data/lib/datadog/tracing/contrib/active_record/events/sql.rb +5 -5
- data/lib/datadog/tracing/contrib/active_record/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/active_record/utils.rb +15 -15
- data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +6 -6
- data/lib/datadog/tracing/contrib/active_support/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/active_support/notifications/event.rb +2 -1
- data/lib/datadog/tracing/contrib/active_support/notifications/subscription.rb +7 -9
- data/lib/datadog/tracing/contrib/aws/ext.rb +1 -1
- data/lib/datadog/tracing/contrib/aws/instrumentation.rb +2 -2
- data/lib/datadog/tracing/contrib/aws/parsed_context.rb +3 -1
- data/lib/datadog/tracing/contrib/aws/patcher.rb +5 -1
- data/lib/datadog/tracing/contrib/aws/service/base.rb +2 -1
- data/lib/datadog/tracing/contrib/aws/service/dynamodb.rb +1 -1
- data/lib/datadog/tracing/contrib/aws/service/eventbridge.rb +1 -1
- data/lib/datadog/tracing/contrib/aws/service/kinesis.rb +1 -1
- data/lib/datadog/tracing/contrib/aws/service/s3.rb +1 -1
- data/lib/datadog/tracing/contrib/aws/service/sns.rb +1 -1
- data/lib/datadog/tracing/contrib/aws/service/sqs.rb +1 -1
- data/lib/datadog/tracing/contrib/aws/service/states.rb +1 -1
- data/lib/datadog/tracing/contrib/aws/services.rb +7 -7
- data/lib/datadog/tracing/contrib/concurrent_ruby/async_patch.rb +1 -1
- data/lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb +1 -1
- data/lib/datadog/tracing/contrib/concurrent_ruby/future_patch.rb +1 -1
- data/lib/datadog/tracing/contrib/concurrent_ruby/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/concurrent_ruby/promises_future_patch.rb +1 -1
- data/lib/datadog/tracing/contrib/configurable.rb +6 -6
- data/lib/datadog/tracing/contrib/configuration/resolvers/pattern_resolver.rb +4 -4
- data/lib/datadog/tracing/contrib/dalli/ext.rb +3 -2
- data/lib/datadog/tracing/contrib/dalli/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/delayed_job/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/elasticsearch/ext.rb +3 -2
- data/lib/datadog/tracing/contrib/elasticsearch/integration.rb +4 -4
- data/lib/datadog/tracing/contrib/elasticsearch/patcher.rb +51 -53
- data/lib/datadog/tracing/contrib/elasticsearch/quantize.rb +5 -5
- data/lib/datadog/tracing/contrib/ethon/easy_patch.rb +2 -2
- data/lib/datadog/tracing/contrib/ethon/ext.rb +3 -2
- data/lib/datadog/tracing/contrib/ethon/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/excon/ext.rb +3 -2
- data/lib/datadog/tracing/contrib/excon/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/excon/middleware.rb +2 -2
- data/lib/datadog/tracing/contrib/ext.rb +3 -3
- data/lib/datadog/tracing/contrib/extensions.rb +9 -9
- data/lib/datadog/tracing/contrib/faraday/ext.rb +3 -2
- data/lib/datadog/tracing/contrib/faraday/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/faraday/middleware.rb +4 -2
- data/lib/datadog/tracing/contrib/grape/endpoint.rb +8 -8
- data/lib/datadog/tracing/contrib/grape/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/graphql/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/graphql/patcher.rb +2 -2
- data/lib/datadog/tracing/contrib/graphql/unified_trace.rb +36 -25
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/client.rb +8 -8
- data/lib/datadog/tracing/contrib/grpc/datadog_interceptor/server.rb +3 -3
- data/lib/datadog/tracing/contrib/grpc/distributed/fetcher.rb +1 -1
- data/lib/datadog/tracing/contrib/grpc/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/hanami/ext.rb +2 -2
- data/lib/datadog/tracing/contrib/hanami/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/hanami/renderer_policy_tracing.rb +1 -1
- data/lib/datadog/tracing/contrib/hanami/router_tracing.rb +9 -11
- data/lib/datadog/tracing/contrib/http/distributed/fetcher.rb +4 -4
- data/lib/datadog/tracing/contrib/http/ext.rb +3 -2
- data/lib/datadog/tracing/contrib/http/instrumentation.rb +5 -5
- data/lib/datadog/tracing/contrib/httpclient/ext.rb +3 -2
- data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +3 -3
- data/lib/datadog/tracing/contrib/httpclient/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/httprb/ext.rb +3 -2
- data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +4 -4
- data/lib/datadog/tracing/contrib/httprb/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/kafka/event.rb +1 -1
- data/lib/datadog/tracing/contrib/kafka/events/connection/request.rb +1 -1
- data/lib/datadog/tracing/contrib/kafka/events/consumer/process_batch.rb +1 -1
- data/lib/datadog/tracing/contrib/kafka/events/consumer/process_message.rb +1 -1
- data/lib/datadog/tracing/contrib/kafka/events/consumer_group/heartbeat.rb +1 -1
- data/lib/datadog/tracing/contrib/kafka/events/consumer_group/join_group.rb +1 -1
- data/lib/datadog/tracing/contrib/kafka/events/consumer_group/leave_group.rb +1 -1
- data/lib/datadog/tracing/contrib/kafka/events/consumer_group/sync_group.rb +1 -1
- data/lib/datadog/tracing/contrib/kafka/events/produce_operation/send_messages.rb +1 -1
- data/lib/datadog/tracing/contrib/kafka/events/producer/deliver_messages.rb +1 -1
- data/lib/datadog/tracing/contrib/kafka/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/karafka/monitor.rb +13 -13
- data/lib/datadog/tracing/contrib/karafka/patcher.rb +4 -4
- data/lib/datadog/tracing/contrib/lograge/instrumentation.rb +1 -1
- data/lib/datadog/tracing/contrib/lograge/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/mongodb/configuration/settings.rb +1 -1
- data/lib/datadog/tracing/contrib/mongodb/ext.rb +1 -1
- data/lib/datadog/tracing/contrib/mongodb/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/mongodb/parsers.rb +1 -1
- data/lib/datadog/tracing/contrib/mongodb/subscribers.rb +6 -6
- data/lib/datadog/tracing/contrib/mysql2/ext.rb +1 -1
- data/lib/datadog/tracing/contrib/mysql2/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/opensearch/configuration/settings.rb +1 -1
- data/lib/datadog/tracing/contrib/opensearch/ext.rb +3 -2
- data/lib/datadog/tracing/contrib/opensearch/integration.rb +1 -2
- data/lib/datadog/tracing/contrib/opensearch/patcher.rb +68 -70
- data/lib/datadog/tracing/contrib/opensearch/quantize.rb +5 -5
- data/lib/datadog/tracing/contrib/patcher.rb +7 -9
- data/lib/datadog/tracing/contrib/pg/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/presto/ext.rb +1 -1
- data/lib/datadog/tracing/contrib/presto/instrumentation.rb +3 -3
- data/lib/datadog/tracing/contrib/presto/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/propagation/sql_comment/comment.rb +1 -1
- data/lib/datadog/tracing/contrib/propagation/sql_comment.rb +1 -1
- data/lib/datadog/tracing/contrib/que/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/racecar/event.rb +1 -1
- data/lib/datadog/tracing/contrib/racecar/events/batch.rb +2 -2
- data/lib/datadog/tracing/contrib/racecar/events/consume.rb +1 -1
- data/lib/datadog/tracing/contrib/racecar/events/message.rb +2 -2
- data/lib/datadog/tracing/contrib/racecar/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/rack/header_collection.rb +1 -1
- data/lib/datadog/tracing/contrib/rack/header_tagging.rb +32 -32
- data/lib/datadog/tracing/contrib/rack/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/rack/middlewares.rb +21 -17
- data/lib/datadog/tracing/contrib/rack/patcher.rb +1 -1
- data/lib/datadog/tracing/contrib/rack/request_queue.rb +3 -2
- data/lib/datadog/tracing/contrib/rack/trace_proxy_middleware.rb +7 -1
- data/lib/datadog/tracing/contrib/rails/configuration/settings.rb +1 -1
- data/lib/datadog/tracing/contrib/rails/ext.rb +2 -1
- data/lib/datadog/tracing/contrib/rails/integration.rb +2 -2
- data/lib/datadog/tracing/contrib/rails/log_injection.rb +1 -1
- data/lib/datadog/tracing/contrib/rails/middlewares.rb +1 -1
- data/lib/datadog/tracing/contrib/rails/runner.rb +5 -4
- data/lib/datadog/tracing/contrib/rake/instrumentation.rb +4 -4
- data/lib/datadog/tracing/contrib/rake/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/redis/configuration/resolver.rb +2 -2
- data/lib/datadog/tracing/contrib/redis/ext.rb +3 -2
- data/lib/datadog/tracing/contrib/redis/integration.rb +2 -2
- data/lib/datadog/tracing/contrib/redis/patcher.rb +4 -4
- data/lib/datadog/tracing/contrib/redis/quantize.rb +1 -1
- data/lib/datadog/tracing/contrib/redis/tags.rb +1 -1
- data/lib/datadog/tracing/contrib/redis/trace_middleware.rb +4 -4
- data/lib/datadog/tracing/contrib/registry.rb +1 -1
- data/lib/datadog/tracing/contrib/resque/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/resque/resque_job.rb +1 -1
- data/lib/datadog/tracing/contrib/rest_client/ext.rb +3 -2
- data/lib/datadog/tracing/contrib/rest_client/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/rest_client/request_patch.rb +3 -3
- data/lib/datadog/tracing/contrib/roda/instrumentation.rb +1 -1
- data/lib/datadog/tracing/contrib/roda/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/semantic_logger/instrumentation.rb +1 -1
- data/lib/datadog/tracing/contrib/semantic_logger/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/sequel/database.rb +5 -5
- data/lib/datadog/tracing/contrib/sequel/dataset.rb +1 -1
- data/lib/datadog/tracing/contrib/sequel/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/sequel/utils.rb +1 -1
- data/lib/datadog/tracing/contrib/shoryuken/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/sidekiq/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/sidekiq/utils.rb +1 -1
- data/lib/datadog/tracing/contrib/sinatra/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/sinatra/tracer_middleware.rb +38 -40
- data/lib/datadog/tracing/contrib/sneakers/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/span_attribute_schema.rb +1 -1
- data/lib/datadog/tracing/contrib/stripe/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/stripe/request.rb +1 -1
- data/lib/datadog/tracing/contrib/sucker_punch/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/trilogy/ext.rb +1 -1
- data/lib/datadog/tracing/contrib/trilogy/integration.rb +1 -1
- data/lib/datadog/tracing/contrib/utils/quantization/hash.rb +11 -11
- data/lib/datadog/tracing/contrib/utils/quantization/http.rb +6 -6
- data/lib/datadog/tracing/diagnostics/environment_logger.rb +5 -1
- data/lib/datadog/tracing/distributed/b3_single.rb +1 -1
- data/lib/datadog/tracing/distributed/baggage.rb +73 -8
- data/lib/datadog/tracing/distributed/datadog.rb +4 -5
- data/lib/datadog/tracing/distributed/datadog_tags_codec.rb +11 -13
- data/lib/datadog/tracing/distributed/helpers.rb +1 -1
- data/lib/datadog/tracing/distributed/none.rb +4 -2
- data/lib/datadog/tracing/distributed/propagation.rb +4 -1
- data/lib/datadog/tracing/distributed/propagation_policy.rb +1 -1
- data/lib/datadog/tracing/distributed/trace_context.rb +22 -16
- data/lib/datadog/tracing/event.rb +5 -7
- data/lib/datadog/tracing/flush.rb +1 -1
- data/lib/datadog/tracing/metadata/analytics.rb +1 -1
- data/lib/datadog/tracing/metadata/tagging.rb +4 -4
- data/lib/datadog/tracing/pipeline/span_filter.rb +3 -1
- data/lib/datadog/tracing/pipeline/span_processor.rb +3 -1
- data/lib/datadog/tracing/pipeline.rb +1 -1
- data/lib/datadog/tracing/sampling/ext.rb +0 -2
- data/lib/datadog/tracing/sampling/rule_sampler.rb +30 -30
- data/lib/datadog/tracing/sampling/span/rule_parser.rb +1 -1
- data/lib/datadog/tracing/sampling/span/sampler.rb +0 -7
- data/lib/datadog/tracing/span.rb +1 -1
- data/lib/datadog/tracing/span_event.rb +10 -10
- data/lib/datadog/tracing/span_link.rb +12 -12
- data/lib/datadog/tracing/span_operation.rb +9 -11
- data/lib/datadog/tracing/trace_digest.rb +21 -23
- data/lib/datadog/tracing/trace_operation.rb +84 -88
- data/lib/datadog/tracing/trace_segment.rb +2 -2
- data/lib/datadog/tracing/tracer.rb +36 -38
- data/lib/datadog/tracing/transport/http/client.rb +1 -1
- data/lib/datadog/tracing/transport/http/traces.rb +2 -2
- data/lib/datadog/tracing/transport/io/client.rb +5 -5
- data/lib/datadog/tracing/transport/io/traces.rb +4 -4
- data/lib/datadog/tracing/transport/statistics.rb +1 -1
- data/lib/datadog/tracing/transport/traces.rb +5 -5
- data/lib/datadog/tracing/workers/trace_writer.rb +12 -12
- data/lib/datadog/tracing/workers.rb +2 -2
- data/lib/datadog/tracing.rb +2 -2
- data/lib/datadog/version.rb +1 -1
- metadata +18 -6
@@ -54,7 +54,7 @@ module Datadog
|
|
54
54
|
@buffer_accepted_lengths += trace.length
|
55
55
|
|
56
56
|
@buffer_spans += trace.length
|
57
|
-
rescue
|
57
|
+
rescue => e
|
58
58
|
Datadog.logger.debug(
|
59
59
|
"Failed to measure queue accept. Cause: #{e.class.name} #{e.message} Source: #{Array(e.backtrace).first}"
|
60
60
|
)
|
@@ -64,7 +64,7 @@ module Datadog
|
|
64
64
|
@buffer_dropped += 1
|
65
65
|
|
66
66
|
@buffer_spans -= trace.length
|
67
|
-
rescue
|
67
|
+
rescue => e
|
68
68
|
Datadog.logger.debug(
|
69
69
|
"Failed to measure queue drop. Cause: #{e.class.name} #{e.message} Source: #{Array(e.backtrace).first}"
|
70
70
|
)
|
@@ -89,7 +89,7 @@ module Datadog
|
|
89
89
|
@buffer_accepted_lengths = 0
|
90
90
|
@buffer_dropped = 0
|
91
91
|
@buffer_spans = 0
|
92
|
-
rescue
|
92
|
+
rescue => e
|
93
93
|
Datadog.logger.debug(
|
94
94
|
"Failed to measure queue. Cause: #{e.class.name} #{e.message} Source: #{Array(e.backtrace).first}"
|
95
95
|
)
|
@@ -121,9 +121,9 @@ module Datadog
|
|
121
121
|
# TODO We should restructure this module, so that classes are not declared at top-level ::Datadog.
|
122
122
|
# TODO Making such a change is potentially breaking for users manually configuring the tracer.
|
123
123
|
TraceBuffer = if Core::Environment::Ext::RUBY_ENGINE == 'ruby'
|
124
|
-
|
125
|
-
|
126
|
-
|
127
|
-
|
124
|
+
CRubyTraceBuffer
|
125
|
+
else
|
126
|
+
ThreadSafeTraceBuffer
|
127
|
+
end
|
128
128
|
end
|
129
129
|
end
|
@@ -24,13 +24,11 @@ module Datadog
|
|
24
24
|
def call(tracing_header_tags)
|
25
25
|
# Modify the remote configuration value that it matches the
|
26
26
|
# environment variable it configures.
|
27
|
-
|
28
|
-
|
29
|
-
"#{hash['header']}:#{hash['tag_name']}"
|
30
|
-
end
|
27
|
+
tracing_header_tags&.map! do |hash|
|
28
|
+
"#{hash["header"]}:#{hash["tag_name"]}"
|
31
29
|
end
|
32
30
|
|
33
|
-
super
|
31
|
+
super
|
34
32
|
end
|
35
33
|
end
|
36
34
|
|
@@ -80,7 +78,7 @@ module Datadog
|
|
80
78
|
tracing_sampling_rules = tracing_sampling_rules.to_json
|
81
79
|
end
|
82
80
|
|
83
|
-
super
|
81
|
+
super
|
84
82
|
Datadog.send(:components).reconfigure_live_sampler
|
85
83
|
end
|
86
84
|
|
@@ -9,8 +9,8 @@ module Datadog
|
|
9
9
|
# e.g. Env vars, default values, enums, etc...
|
10
10
|
module Ext
|
11
11
|
ENV_ENABLED = 'DD_TRACE_ENABLED'
|
12
|
-
ENV_OTEL_TRACES_EXPORTER = 'OTEL_TRACES_EXPORTER'
|
13
12
|
ENV_HEADER_TAGS = 'DD_TRACE_HEADER_TAGS'
|
13
|
+
ENV_BAGGAGE_TAG_KEYS = 'DD_TRACE_BAGGAGE_TAG_KEYS'
|
14
14
|
ENV_TRACE_ID_128_BIT_GENERATION_ENABLED = 'DD_TRACE_128_BIT_TRACEID_GENERATION_ENABLED'
|
15
15
|
ENV_NATIVE_SPAN_EVENTS = 'DD_TRACE_NATIVE_SPAN_EVENTS'
|
16
16
|
|
@@ -47,14 +47,13 @@ module Datadog
|
|
47
47
|
PROPAGATION_STYLE_BAGGAGE = 'baggage'
|
48
48
|
|
49
49
|
PROPAGATION_STYLE_SUPPORTED = [PROPAGATION_STYLE_DATADOG, PROPAGATION_STYLE_B3_MULTI_HEADER,
|
50
|
-
|
51
|
-
|
50
|
+
PROPAGATION_STYLE_B3_SINGLE_HEADER, PROPAGATION_STYLE_TRACE_CONTEXT,
|
51
|
+
PROPAGATION_STYLE_BAGGAGE].freeze
|
52
52
|
|
53
53
|
# Sets both extract and inject propagation style tho the provided value.
|
54
54
|
# Has lower precedence than `DD_TRACE_PROPAGATION_STYLE_INJECT` or
|
55
55
|
# `DD_TRACE_PROPAGATION_STYLE_EXTRACT`.
|
56
56
|
ENV_PROPAGATION_STYLE = 'DD_TRACE_PROPAGATION_STYLE'
|
57
|
-
ENV_OTEL_PROPAGATION_STYLE = 'OTEL_PROPAGATORS'
|
58
57
|
|
59
58
|
ENV_PROPAGATION_STYLE_INJECT = 'DD_TRACE_PROPAGATION_STYLE_INJECT'
|
60
59
|
|
@@ -80,7 +79,6 @@ module Datadog
|
|
80
79
|
ENV_SAMPLE_RATE = 'DD_TRACE_SAMPLE_RATE'
|
81
80
|
ENV_RATE_LIMIT = 'DD_TRACE_RATE_LIMIT'
|
82
81
|
ENV_RULES = 'DD_TRACE_SAMPLING_RULES'
|
83
|
-
ENV_OTEL_TRACES_SAMPLER = 'OTEL_TRACES_SAMPLER'
|
84
82
|
OTEL_TRACES_SAMPLER_ARG = 'OTEL_TRACES_SAMPLER_ARG'
|
85
83
|
|
86
84
|
# @public_api
|
@@ -93,7 +93,8 @@ module Datadog
|
|
93
93
|
# @return [Array<String>]
|
94
94
|
option :propagation_style do |o|
|
95
95
|
o.type :array
|
96
|
-
|
96
|
+
# Note: Alias (DD_TRACE_PROPAGATION_STYLE) defined in supported-configurations.json
|
97
|
+
o.env Configuration::Ext::Distributed::ENV_PROPAGATION_STYLE
|
97
98
|
o.default []
|
98
99
|
o.after_set do |styles|
|
99
100
|
next if styles.empty?
|
@@ -133,13 +134,16 @@ module Datadog
|
|
133
134
|
# @default `DD_TRACE_ENABLED` environment variable, otherwise `true`
|
134
135
|
# @return [Boolean]
|
135
136
|
option :enabled do |o|
|
136
|
-
|
137
|
+
# Note: Alias (OTEL_TRACES_EXPORTER) defined in supported-configurations.json
|
138
|
+
o.env Tracing::Configuration::Ext::ENV_ENABLED
|
137
139
|
o.default true
|
138
140
|
o.type :bool
|
139
141
|
o.env_parser do |value|
|
140
142
|
value = value&.downcase
|
141
143
|
# Tracing is disabled when OTEL_TRACES_EXPORTER is none or
|
142
144
|
# DD_TRACE_ENABLED is 0 or false.
|
145
|
+
# DEV: The current implementation accepts all of the mentioned values
|
146
|
+
# for both environment variables, which is incorrect.
|
143
147
|
if ['none', 'false', '0'].include?(value)
|
144
148
|
false
|
145
149
|
# Tracing is enabled when DD_TRACE_ENABLED is true or 1
|
@@ -170,6 +174,23 @@ module Datadog
|
|
170
174
|
o.setter { |header_tags, _| Configuration::HTTP::HeaderTags.new(header_tags) }
|
171
175
|
end
|
172
176
|
|
177
|
+
# Comma-separated list of baggage keys that should be converted to span tags.
|
178
|
+
#
|
179
|
+
# Baggage keys matching the exact, case-sensitive names in this list will be converted
|
180
|
+
# to span tags with the prefix "baggage.".
|
181
|
+
#
|
182
|
+
# Special values:
|
183
|
+
# * Empty string ("") disables baggage tag conversion
|
184
|
+
# * Wildcard ("*") converts all baggage keys to span tags
|
185
|
+
#
|
186
|
+
# @default `DD_TRACE_BAGGAGE_TAG_KEYS` environment variable, otherwise `"user.id,session.id,account.id"`
|
187
|
+
# @return [Array<String>, Symbol, nil] processed baggage tag keys configuration
|
188
|
+
option :baggage_tag_keys do |o|
|
189
|
+
o.env Configuration::Ext::ENV_BAGGAGE_TAG_KEYS
|
190
|
+
o.type :array
|
191
|
+
o.default ['user.id', 'session.id', 'account.id']
|
192
|
+
end
|
193
|
+
|
173
194
|
# Enable 128 bit trace id generation.
|
174
195
|
#
|
175
196
|
# @default `DD_TRACE_128_BIT_TRACEID_GENERATION_ENABLED` environment variable, otherwise `true`
|
@@ -285,7 +306,8 @@ module Datadog
|
|
285
306
|
# @return [Float, nil]
|
286
307
|
option :default_rate do |o|
|
287
308
|
o.type :float, nilable: true
|
288
|
-
|
309
|
+
# Note: Alias (OTEL_TRACES_SAMPLER) defined in supported-configurations.json
|
310
|
+
o.env Tracing::Configuration::Ext::Sampling::ENV_SAMPLE_RATE
|
289
311
|
o.env_parser do |value|
|
290
312
|
# Parse the value as a float
|
291
313
|
next if value.nil?
|
@@ -304,7 +326,7 @@ module Datadog
|
|
304
326
|
when 'parentbased_always_off'
|
305
327
|
0.0
|
306
328
|
when 'parentbased_traceidratio'
|
307
|
-
|
329
|
+
DATADOG_ENV.fetch(Configuration::Ext::Sampling::OTEL_TRACES_SAMPLER_ARG, 1.0).to_f
|
308
330
|
else
|
309
331
|
value.to_f
|
310
332
|
end
|
@@ -338,7 +360,7 @@ module Datadog
|
|
338
360
|
# @public_api
|
339
361
|
option :rules do |o|
|
340
362
|
o.type :string, nilable: true
|
341
|
-
o.default {
|
363
|
+
o.default { DATADOG_ENV.fetch(Configuration::Ext::Sampling::ENV_RULES, nil) }
|
342
364
|
end
|
343
365
|
|
344
366
|
# Single span sampling rules.
|
@@ -355,8 +377,8 @@ module Datadog
|
|
355
377
|
option :span_rules do |o|
|
356
378
|
o.type :string, nilable: true
|
357
379
|
o.default do
|
358
|
-
rules =
|
359
|
-
rules_file =
|
380
|
+
rules = DATADOG_ENV[Tracing::Configuration::Ext::Sampling::Span::ENV_SPAN_SAMPLING_RULES]
|
381
|
+
rules_file = DATADOG_ENV[Tracing::Configuration::Ext::Sampling::Span::ENV_SPAN_SAMPLING_RULES_FILE]
|
360
382
|
|
361
383
|
if rules
|
362
384
|
if rules_file
|
@@ -53,7 +53,7 @@ module Datadog
|
|
53
53
|
|
54
54
|
# Creates a copy of the context, when forked.
|
55
55
|
def fork_clone
|
56
|
-
forked_trace = @active_trace
|
56
|
+
forked_trace = @active_trace&.fork_clone
|
57
57
|
self.class.new(trace: forked_trace)
|
58
58
|
end
|
59
59
|
|
@@ -61,7 +61,7 @@ module Datadog
|
|
61
61
|
|
62
62
|
def set_active_trace!(trace)
|
63
63
|
# Don't retain finished traces
|
64
|
-
@active_trace = trace && !trace.finished? ? trace : nil
|
64
|
+
@active_trace = (trace && !trace.finished?) ? trace : nil
|
65
65
|
end
|
66
66
|
end
|
67
67
|
end
|
@@ -42,7 +42,7 @@ module Datadog
|
|
42
42
|
|
43
43
|
span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
|
44
44
|
span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_CONTROLLER)
|
45
|
-
rescue
|
45
|
+
rescue => e
|
46
46
|
Datadog.logger.error(e.message)
|
47
47
|
Datadog::Core::Telemetry::Logger.report(e)
|
48
48
|
end
|
@@ -87,7 +87,7 @@ module Datadog
|
|
87
87
|
ensure
|
88
88
|
span.finish
|
89
89
|
end
|
90
|
-
rescue
|
90
|
+
rescue => e
|
91
91
|
Datadog.logger.error(e.message)
|
92
92
|
Datadog::Core::Telemetry::Logger.report(e)
|
93
93
|
end
|
@@ -115,7 +115,7 @@ module Datadog
|
|
115
115
|
begin
|
116
116
|
# process and catch request exceptions
|
117
117
|
Instrumentation.start_processing(payload)
|
118
|
-
result = super
|
118
|
+
result = super
|
119
119
|
status = datadog_response_status
|
120
120
|
payload[:status] = status unless status.nil?
|
121
121
|
result
|
@@ -146,7 +146,7 @@ module Datadog
|
|
146
146
|
when Array
|
147
147
|
# Likely a Rack response array: first element is the status.
|
148
148
|
status = response.first
|
149
|
-
status.class <= Integer ? status : nil
|
149
|
+
(status.class <= Integer) ? status : nil
|
150
150
|
end
|
151
151
|
end
|
152
152
|
end
|
@@ -29,10 +29,10 @@ module Datadog
|
|
29
29
|
|
30
30
|
def set_common_tags(span, payload)
|
31
31
|
adapter_name = if payload[:adapter].is_a?(Class)
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
32
|
+
payload[:adapter].name
|
33
|
+
else
|
34
|
+
payload[:adapter].class.name
|
35
|
+
end
|
36
36
|
span.set_tag(Ext::TAG_ADAPTER, adapter_name)
|
37
37
|
|
38
38
|
span.set_tag(Tracing::Metadata::Ext::TAG_COMPONENT, Ext::TAG_COMPONENT)
|
@@ -44,10 +44,10 @@ module Datadog
|
|
44
44
|
span.set_tag(Ext::TAG_JOB_EXECUTIONS, job.executions) if job.respond_to?(:executions)
|
45
45
|
|
46
46
|
job_scheduled_at = if job.respond_to?(:scheduled_at)
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
47
|
+
job.scheduled_at
|
48
|
+
elsif job.respond_to?(:enqueued_at)
|
49
|
+
job.enqueued_at
|
50
|
+
end
|
51
51
|
span.set_tag(Ext::TAG_JOB_SCHEDULED_AT, Time.at(job_scheduled_at)) if job_scheduled_at
|
52
52
|
end
|
53
53
|
end
|
@@ -18,9 +18,9 @@ module Datadog
|
|
18
18
|
|
19
19
|
def supported?
|
20
20
|
Gem.loaded_specs['active_model_serializers'] \
|
21
|
-
&& (
|
21
|
+
&& (
|
22
22
|
Gem.loaded_specs['active_model_serializers'].version >= Gem::Version.new('0.9') \
|
23
|
-
&& Gem.loaded_specs['active_model_serializers'].version < Gem::Version.new('0.10')
|
23
|
+
&& Gem.loaded_specs['active_model_serializers'].version < Gem::Version.new('0.10')
|
24
24
|
)
|
25
25
|
end
|
26
26
|
|
@@ -36,7 +36,7 @@ module Datadog
|
|
36
36
|
span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_SERIALIZE)
|
37
37
|
|
38
38
|
set_common_tags(span, payload)
|
39
|
-
rescue
|
39
|
+
rescue => e
|
40
40
|
Datadog.logger.debug(e.message)
|
41
41
|
end
|
42
42
|
end
|
@@ -18,8 +18,7 @@ module Datadog
|
|
18
18
|
register_as :active_model_serializers
|
19
19
|
|
20
20
|
def self.version
|
21
|
-
Gem.loaded_specs['active_model_serializers']
|
22
|
-
&& Gem.loaded_specs['active_model_serializers'].version
|
21
|
+
Gem.loaded_specs['active_model_serializers']&.version
|
23
22
|
end
|
24
23
|
|
25
24
|
def self.loaded?
|
@@ -75,7 +75,7 @@ module Datadog
|
|
75
75
|
# hence provide a succinct summary for the error logging.
|
76
76
|
#
|
77
77
|
Datadog.logger.error(
|
78
|
-
'Failed to resolve ActiveRecord database configuration. '\
|
78
|
+
'Failed to resolve ActiveRecord database configuration. ' \
|
79
79
|
"Cause: #{e.class.name} Source: #{Array(e.backtrace).first}"
|
80
80
|
)
|
81
81
|
Core::Telemetry::Logger.report(e, description: 'Failed to resolve ActiveRecord database configuration')
|
@@ -48,7 +48,7 @@ module Datadog
|
|
48
48
|
|
49
49
|
span.set_tag(Ext::TAG_INSTANTIATION_CLASS_NAME, payload.fetch(:class_name))
|
50
50
|
span.set_tag(Ext::TAG_INSTANTIATION_RECORD_COUNT, payload.fetch(:record_count))
|
51
|
-
rescue
|
51
|
+
rescue => e
|
52
52
|
Datadog.logger.error(e.message)
|
53
53
|
Datadog::Core::Telemetry::Logger.report(e)
|
54
54
|
end
|
@@ -35,10 +35,10 @@ module Datadog
|
|
35
35
|
settings = Datadog.configuration.tracing[:active_record, config]
|
36
36
|
adapter_name = Contrib::Utils::Database.normalize_vendor(config[:adapter])
|
37
37
|
service_name = if settings.service_name != Contrib::Utils::Database::VENDOR_DEFAULT
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
38
|
+
settings.service_name
|
39
|
+
else
|
40
|
+
adapter_name
|
41
|
+
end
|
42
42
|
|
43
43
|
span.name = "#{adapter_name}.query"
|
44
44
|
span.service = service_name
|
@@ -68,7 +68,7 @@ module Datadog
|
|
68
68
|
span.set_tag(Ext::TAG_DB_CACHED, cached) if cached
|
69
69
|
span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_HOST, config[:host]) if config[:host]
|
70
70
|
span.set_tag(Tracing::Metadata::Ext::NET::TAG_TARGET_PORT, config[:port]) if config[:port]
|
71
|
-
rescue
|
71
|
+
rescue => e
|
72
72
|
Datadog.logger.error(e.message)
|
73
73
|
Datadog::Core::Telemetry::Logger.report(e)
|
74
74
|
end
|
@@ -39,17 +39,17 @@ module Datadog
|
|
39
39
|
return default_connection_config if connection.nil? && connection_id.nil?
|
40
40
|
|
41
41
|
conn = if !connection.nil?
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
42
|
+
# Since Rails 6.0, the connection object
|
43
|
+
# is directly available.
|
44
|
+
connection
|
45
|
+
else
|
46
|
+
# For Rails < 6.0, only the `connection_id`
|
47
|
+
# is available. We have to find the connection
|
48
|
+
# object from it.
|
49
|
+
connection_from_id(connection_id)
|
50
|
+
end
|
51
51
|
|
52
|
-
if conn
|
52
|
+
if conn&.instance_variable_defined?(:@config)
|
53
53
|
conn.instance_variable_get(:@config)
|
54
54
|
else
|
55
55
|
EMPTY_CONFIG
|
@@ -102,14 +102,14 @@ module Datadog
|
|
102
102
|
return @default_connection_config if instance_variable_defined?(:@default_connection_config)
|
103
103
|
|
104
104
|
current_connection_name = if ::ActiveRecord::Base.respond_to?(:connection_specification_name)
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
105
|
+
::ActiveRecord::Base.connection_specification_name
|
106
|
+
else
|
107
|
+
::ActiveRecord::Base
|
108
|
+
end
|
109
109
|
|
110
110
|
connection_pool = ::ActiveRecord::Base.connection_handler.retrieve_connection_pool(current_connection_name)
|
111
111
|
connection_pool.nil? ? EMPTY_CONFIG : (@default_connection_config = db_config(connection_pool))
|
112
|
-
rescue
|
112
|
+
rescue
|
113
113
|
EMPTY_CONFIG
|
114
114
|
end
|
115
115
|
|
@@ -38,11 +38,11 @@ module Datadog
|
|
38
38
|
|
39
39
|
# DEV: Look for other uses of `ActiveSupport::Cache::Store#instrument`, to find other useful event keys.
|
40
40
|
MAPPING = {
|
41
|
-
'cache_delete.active_support' => {
|
42
|
-
'cache_read.active_support' => {
|
43
|
-
'cache_read_multi.active_support' => {
|
44
|
-
'cache_write.active_support' => {
|
45
|
-
'cache_write_multi.active_support' => {
|
41
|
+
'cache_delete.active_support' => {resource: Ext::RESOURCE_CACHE_DELETE},
|
42
|
+
'cache_read.active_support' => {resource: Ext::RESOURCE_CACHE_GET},
|
43
|
+
'cache_read_multi.active_support' => {resource: Ext::RESOURCE_CACHE_MGET, multi_key: true},
|
44
|
+
'cache_write.active_support' => {resource: Ext::RESOURCE_CACHE_SET},
|
45
|
+
'cache_write_multi.active_support' => {resource: Ext::RESOURCE_CACHE_MSET, multi_key: true}
|
46
46
|
}.freeze
|
47
47
|
|
48
48
|
def trace?(event, payload)
|
@@ -93,7 +93,7 @@ module Datadog
|
|
93
93
|
if Datadog.configuration.tracing[:active_support][:cache_key].enabled
|
94
94
|
set_cache_key(span, key, mapping[:multi_key])
|
95
95
|
end
|
96
|
-
rescue
|
96
|
+
rescue => e
|
97
97
|
Datadog.logger.error(e.message)
|
98
98
|
Datadog::Core::Telemetry::Logger.report(e)
|
99
99
|
end
|
@@ -67,7 +67,8 @@ module Datadog
|
|
67
67
|
payload[:exception] # Fallback for ActiveSupport < 5.0
|
68
68
|
end
|
69
69
|
|
70
|
-
def on_start(_span, _event, _id, _payload)
|
70
|
+
def on_start(_span, _event, _id, _payload)
|
71
|
+
end
|
71
72
|
|
72
73
|
def on_finish(span, _event, _id, payload)
|
73
74
|
record_exception(span, payload)
|
@@ -122,8 +122,8 @@ module Datadog
|
|
122
122
|
end
|
123
123
|
|
124
124
|
def run(span, name, id, payload)
|
125
|
-
@block
|
126
|
-
rescue
|
125
|
+
@block&.call(span, name, id, payload)
|
126
|
+
rescue => e
|
127
127
|
Datadog.logger.debug(
|
128
128
|
"ActiveSupport::Notifications handler for '#{name}' failed: #{e.class.name} #{e.message}"
|
129
129
|
)
|
@@ -144,13 +144,11 @@ module Datadog
|
|
144
144
|
|
145
145
|
def run(event, key, *args)
|
146
146
|
blocks_for(key).each do |callback|
|
147
|
-
|
148
|
-
|
149
|
-
|
150
|
-
|
151
|
-
|
152
|
-
)
|
153
|
-
end
|
147
|
+
callback.call(event, key, *args)
|
148
|
+
rescue => e
|
149
|
+
Datadog.logger.debug(
|
150
|
+
"ActiveSupport::Notifications '#{key}' callback for '#{event}' failed: #{e.class.name} #{e.message}"
|
151
|
+
)
|
154
152
|
end
|
155
153
|
end
|
156
154
|
|
@@ -33,7 +33,7 @@ module Datadog
|
|
33
33
|
TAG_RULE_NAME = 'rulename'
|
34
34
|
TAG_STATE_MACHINE_NAME = 'statemachinename'
|
35
35
|
TAG_BUCKET_NAME = 'bucketname'
|
36
|
-
PEER_SERVICE_SOURCES =
|
36
|
+
PEER_SERVICE_SOURCES = [TAG_QUEUE_NAME,
|
37
37
|
TAG_TOPIC_NAME,
|
38
38
|
TAG_STREAM_NAME,
|
39
39
|
TAG_TABLE_NAME,
|