ls-trace 0.1.2 → 0.2.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/.circleci/config.yml +419 -544
- data/.circleci/images/primary/Dockerfile-2.7.0 +73 -0
- data/.circleci/images/primary/Dockerfile-jruby-9.2 +77 -0
- data/.env +2 -0
- data/.gitignore +2 -0
- data/.gitlab-ci.yml +27 -0
- data/.rubocop.yml +8 -0
- data/.simplecov +38 -0
- data/Appraisals +299 -48
- data/CHANGELOG.md +3 -4
- data/LICENSE +4 -22
- data/LICENSE.Apache +200 -0
- data/LICENSE.BSD3 +24 -0
- data/NOTICE +4 -0
- data/README.md +4 -3
- data/Rakefile +561 -405
- data/ddtrace.gemspec +13 -4
- data/docker-compose.yml +96 -2
- data/docs/DevelopmentGuide.md +17 -1
- data/docs/GettingStarted.md +433 -138
- data/lib/ddtrace.rb +15 -0
- data/lib/ddtrace/analytics.rb +7 -0
- data/lib/ddtrace/buffer.rb +9 -9
- data/lib/ddtrace/chunker.rb +34 -0
- data/lib/ddtrace/configuration.rb +59 -5
- data/lib/ddtrace/configuration/base.rb +4 -2
- data/lib/ddtrace/configuration/components.rb +151 -0
- data/lib/ddtrace/configuration/option.rb +12 -3
- data/lib/ddtrace/configuration/option_definition.rb +1 -5
- data/lib/ddtrace/configuration/options.rb +6 -1
- data/lib/ddtrace/configuration/pin_setup.rb +3 -2
- data/lib/ddtrace/configuration/settings.rb +214 -40
- data/lib/ddtrace/context.rb +84 -63
- data/lib/ddtrace/context_flush.rb +51 -114
- data/lib/ddtrace/context_provider.rb +50 -0
- data/lib/ddtrace/contrib/action_cable/configuration/settings.rb +30 -0
- data/lib/ddtrace/contrib/action_cable/event.rb +65 -0
- data/lib/ddtrace/contrib/action_cable/events.rb +33 -0
- data/lib/ddtrace/contrib/action_cable/events/broadcast.rb +49 -0
- data/lib/ddtrace/contrib/action_cable/events/perform_action.rb +55 -0
- data/lib/ddtrace/contrib/action_cable/events/transmit.rb +50 -0
- data/lib/ddtrace/contrib/action_cable/ext.rb +26 -0
- data/lib/ddtrace/contrib/action_cable/instrumentation.rb +31 -0
- data/lib/ddtrace/contrib/action_cable/integration.rb +38 -0
- data/lib/ddtrace/contrib/action_cable/patcher.rb +27 -0
- data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +6 -2
- data/lib/ddtrace/contrib/action_pack/action_controller/patcher.rb +3 -15
- data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/action_pack/ext.rb +5 -2
- data/lib/ddtrace/contrib/action_pack/integration.rb +5 -3
- data/lib/ddtrace/contrib/action_pack/patcher.rb +3 -9
- data/lib/ddtrace/contrib/action_view/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/action_view/event.rb +39 -0
- data/lib/ddtrace/contrib/action_view/events.rb +30 -0
- data/lib/ddtrace/contrib/action_view/events/render_partial.rb +45 -0
- data/lib/ddtrace/contrib/action_view/events/render_template.rb +48 -0
- data/lib/ddtrace/contrib/action_view/ext.rb +5 -2
- data/lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb +9 -13
- data/lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb +16 -16
- data/lib/ddtrace/contrib/action_view/integration.rb +5 -3
- data/lib/ddtrace/contrib/action_view/patcher.rb +19 -25
- data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/active_model_serializers/event.rb +3 -0
- data/lib/ddtrace/contrib/active_model_serializers/ext.rb +5 -2
- data/lib/ddtrace/contrib/active_model_serializers/integration.rb +6 -5
- data/lib/ddtrace/contrib/active_model_serializers/patcher.rb +3 -10
- data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +4 -5
- data/lib/ddtrace/contrib/active_record/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/active_record/events/instantiation.rb +4 -1
- data/lib/ddtrace/contrib/active_record/events/sql.rb +1 -1
- data/lib/ddtrace/contrib/active_record/ext.rb +5 -2
- data/lib/ddtrace/contrib/active_record/integration.rb +5 -3
- data/lib/ddtrace/contrib/active_record/patcher.rb +3 -9
- data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +2 -2
- data/lib/ddtrace/contrib/active_support/cache/patcher.rb +10 -24
- data/lib/ddtrace/contrib/active_support/cache/redis.rb +1 -1
- data/lib/ddtrace/contrib/active_support/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/active_support/ext.rb +5 -2
- data/lib/ddtrace/contrib/active_support/integration.rb +5 -3
- data/lib/ddtrace/contrib/active_support/notifications/event.rb +3 -1
- data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +3 -3
- data/lib/ddtrace/contrib/active_support/patcher.rb +3 -9
- data/lib/ddtrace/contrib/analytics.rb +5 -1
- data/lib/ddtrace/contrib/aws/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/aws/ext.rb +5 -2
- data/lib/ddtrace/contrib/aws/integration.rb +8 -2
- data/lib/ddtrace/contrib/aws/patcher.rb +15 -15
- data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +5 -0
- data/lib/ddtrace/contrib/concurrent_ruby/context_composite_executor_service.rb +9 -3
- data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +1 -0
- data/lib/ddtrace/contrib/concurrent_ruby/integration.rb +8 -2
- data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +4 -11
- data/lib/ddtrace/contrib/configurable.rb +30 -13
- data/lib/ddtrace/contrib/configuration/resolver.rb +7 -3
- data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +39 -0
- data/lib/ddtrace/contrib/configuration/settings.rb +20 -1
- data/lib/ddtrace/contrib/dalli/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/dalli/ext.rb +5 -2
- data/lib/ddtrace/contrib/dalli/integration.rb +5 -3
- data/lib/ddtrace/contrib/dalli/patcher.rb +6 -16
- data/lib/ddtrace/contrib/dalli/quantize.rb +1 -1
- data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/delayed_job/ext.rb +5 -2
- data/lib/ddtrace/contrib/delayed_job/integration.rb +8 -2
- data/lib/ddtrace/contrib/delayed_job/patcher.rb +4 -10
- data/lib/ddtrace/contrib/delayed_job/plugin.rb +4 -0
- data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/elasticsearch/ext.rb +5 -2
- data/lib/ddtrace/contrib/elasticsearch/integration.rb +5 -3
- data/lib/ddtrace/contrib/elasticsearch/patcher.rb +10 -17
- data/lib/ddtrace/contrib/ethon/configuration/settings.rb +8 -2
- data/lib/ddtrace/contrib/ethon/easy_patch.rb +22 -13
- data/lib/ddtrace/contrib/ethon/ext.rb +5 -2
- data/lib/ddtrace/contrib/ethon/integration.rb +14 -2
- data/lib/ddtrace/contrib/ethon/patcher.rb +7 -9
- data/lib/ddtrace/contrib/excon/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/excon/ext.rb +5 -2
- data/lib/ddtrace/contrib/excon/integration.rb +13 -2
- data/lib/ddtrace/contrib/excon/middleware.rb +15 -12
- data/lib/ddtrace/contrib/excon/patcher.rb +4 -11
- data/lib/ddtrace/contrib/extensions.rb +39 -5
- data/lib/ddtrace/contrib/faraday/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/faraday/connection.rb +18 -0
- data/lib/ddtrace/contrib/faraday/ext.rb +5 -2
- data/lib/ddtrace/contrib/faraday/integration.rb +10 -3
- data/lib/ddtrace/contrib/faraday/middleware.rb +24 -34
- data/lib/ddtrace/contrib/faraday/patcher.rb +26 -19
- data/lib/ddtrace/contrib/grape/configuration/settings.rb +7 -3
- data/lib/ddtrace/contrib/grape/endpoint.rb +14 -5
- data/lib/ddtrace/contrib/grape/ext.rb +5 -2
- data/lib/ddtrace/contrib/grape/integration.rb +6 -3
- data/lib/ddtrace/contrib/grape/patcher.rb +9 -15
- data/lib/ddtrace/contrib/graphql/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/graphql/ext.rb +5 -2
- data/lib/ddtrace/contrib/graphql/integration.rb +6 -5
- data/lib/ddtrace/contrib/graphql/patcher.rb +11 -14
- data/lib/ddtrace/contrib/grpc/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +1 -1
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +2 -4
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +5 -2
- data/lib/ddtrace/contrib/grpc/ext.rb +5 -2
- data/lib/ddtrace/contrib/grpc/integration.rb +5 -3
- data/lib/ddtrace/contrib/grpc/patcher.rb +9 -19
- data/lib/ddtrace/contrib/http/circuit_breaker.rb +8 -32
- data/lib/ddtrace/contrib/http/configuration/settings.rb +8 -2
- data/lib/ddtrace/contrib/http/ext.rb +5 -2
- data/lib/ddtrace/contrib/http/instrumentation.rb +89 -28
- data/lib/ddtrace/contrib/http/integration.rb +13 -0
- data/lib/ddtrace/contrib/http/patcher.rb +3 -9
- data/lib/ddtrace/contrib/http_annotation_helper.rb +10 -0
- data/lib/ddtrace/contrib/httprb/configuration/settings.rb +32 -0
- data/lib/ddtrace/contrib/httprb/ext.rb +17 -0
- data/lib/ddtrace/contrib/httprb/instrumentation.rb +160 -0
- data/lib/ddtrace/contrib/httprb/integration.rb +43 -0
- data/lib/ddtrace/contrib/httprb/patcher.rb +35 -0
- data/lib/ddtrace/contrib/kafka/configuration/settings.rb +30 -0
- data/lib/ddtrace/contrib/kafka/consumer_event.rb +14 -0
- data/lib/ddtrace/contrib/kafka/consumer_group_event.rb +14 -0
- data/lib/ddtrace/contrib/kafka/event.rb +51 -0
- data/lib/ddtrace/contrib/kafka/events.rb +44 -0
- data/lib/ddtrace/contrib/kafka/events/connection/request.rb +34 -0
- data/lib/ddtrace/contrib/kafka/events/consumer/process_batch.rb +41 -0
- data/lib/ddtrace/contrib/kafka/events/consumer/process_message.rb +39 -0
- data/lib/ddtrace/contrib/kafka/events/consumer_group/heartbeat.rb +39 -0
- data/lib/ddtrace/contrib/kafka/events/consumer_group/join_group.rb +29 -0
- data/lib/ddtrace/contrib/kafka/events/consumer_group/leave_group.rb +29 -0
- data/lib/ddtrace/contrib/kafka/events/consumer_group/sync_group.rb +29 -0
- data/lib/ddtrace/contrib/kafka/events/produce_operation/send_messages.rb +32 -0
- data/lib/ddtrace/contrib/kafka/events/producer/deliver_messages.rb +35 -0
- data/lib/ddtrace/contrib/kafka/ext.rb +41 -0
- data/lib/ddtrace/contrib/kafka/integration.rb +39 -0
- data/lib/ddtrace/contrib/kafka/patcher.rb +26 -0
- data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/mongodb/ext.rb +5 -2
- data/lib/ddtrace/contrib/mongodb/instrumentation.rb +1 -2
- data/lib/ddtrace/contrib/mongodb/integration.rb +5 -3
- data/lib/ddtrace/contrib/mongodb/patcher.rb +5 -11
- data/lib/ddtrace/contrib/mongodb/subscribers.rb +2 -2
- data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/mysql2/ext.rb +5 -2
- data/lib/ddtrace/contrib/mysql2/instrumentation.rb +1 -1
- data/lib/ddtrace/contrib/mysql2/integration.rb +8 -2
- data/lib/ddtrace/contrib/mysql2/patcher.rb +3 -9
- data/lib/ddtrace/contrib/patchable.rb +21 -4
- data/lib/ddtrace/contrib/patcher.rb +44 -10
- data/lib/ddtrace/contrib/presto/configuration/settings.rb +30 -0
- data/lib/ddtrace/contrib/presto/ext.rb +28 -0
- data/lib/ddtrace/contrib/presto/instrumentation.rb +107 -0
- data/lib/ddtrace/contrib/presto/integration.rb +38 -0
- data/lib/ddtrace/contrib/presto/patcher.rb +30 -0
- data/lib/ddtrace/contrib/que/configuration/settings.rb +42 -0
- data/lib/ddtrace/contrib/que/ext.rb +30 -0
- data/lib/ddtrace/contrib/que/integration.rb +42 -0
- data/lib/ddtrace/contrib/que/patcher.rb +24 -0
- data/lib/ddtrace/contrib/que/tracer.rb +56 -0
- data/lib/ddtrace/contrib/racecar/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/racecar/event.rb +4 -0
- data/lib/ddtrace/contrib/racecar/events.rb +2 -0
- data/lib/ddtrace/contrib/racecar/events/consume.rb +27 -0
- data/lib/ddtrace/contrib/racecar/ext.rb +6 -2
- data/lib/ddtrace/contrib/racecar/integration.rb +6 -3
- data/lib/ddtrace/contrib/racecar/patcher.rb +4 -10
- data/lib/ddtrace/contrib/rack/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/rack/ext.rb +5 -2
- data/lib/ddtrace/contrib/rack/integration.rb +8 -2
- data/lib/ddtrace/contrib/rack/middlewares.rb +23 -14
- data/lib/ddtrace/contrib/rack/patcher.rb +57 -22
- data/lib/ddtrace/contrib/rack/request_queue.rb +1 -1
- data/lib/ddtrace/contrib/rails/configuration/settings.rb +23 -10
- data/lib/ddtrace/contrib/rails/ext.rb +7 -2
- data/lib/ddtrace/contrib/rails/framework.rb +59 -35
- data/lib/ddtrace/contrib/rails/integration.rb +12 -5
- data/lib/ddtrace/contrib/rails/log_injection.rb +81 -0
- data/lib/ddtrace/contrib/rails/middlewares.rb +7 -2
- data/lib/ddtrace/contrib/rails/patcher.rb +19 -8
- data/lib/ddtrace/contrib/rake/configuration/settings.rb +7 -3
- data/lib/ddtrace/contrib/rake/ext.rb +5 -2
- data/lib/ddtrace/contrib/rake/instrumentation.rb +6 -2
- data/lib/ddtrace/contrib/rake/integration.rb +8 -2
- data/lib/ddtrace/contrib/rake/patcher.rb +4 -10
- data/lib/ddtrace/contrib/redis/configuration/resolver.rb +36 -0
- data/lib/ddtrace/contrib/redis/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/redis/ext.rb +5 -2
- data/lib/ddtrace/contrib/redis/integration.rb +9 -3
- data/lib/ddtrace/contrib/redis/patcher.rb +20 -17
- data/lib/ddtrace/contrib/redis/quantize.rb +1 -1
- data/lib/ddtrace/contrib/redis/vendor/resolver.rb +159 -0
- data/lib/ddtrace/contrib/resque/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/resque/ext.rb +5 -2
- data/lib/ddtrace/contrib/resque/integration.rb +12 -2
- data/lib/ddtrace/contrib/resque/patcher.rb +4 -10
- data/lib/ddtrace/contrib/resque/resque_job.rb +6 -2
- data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/rest_client/ext.rb +5 -2
- data/lib/ddtrace/contrib/rest_client/integration.rb +9 -2
- data/lib/ddtrace/contrib/rest_client/patcher.rb +5 -7
- data/lib/ddtrace/contrib/rest_client/request_patch.rb +2 -2
- data/lib/ddtrace/contrib/sequel/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/sequel/database.rb +1 -1
- data/lib/ddtrace/contrib/sequel/ext.rb +5 -2
- data/lib/ddtrace/contrib/sequel/integration.rb +8 -2
- data/lib/ddtrace/contrib/sequel/patcher.rb +4 -10
- data/lib/ddtrace/contrib/sequel/utils.rb +19 -1
- data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/shoryuken/ext.rb +5 -2
- data/lib/ddtrace/contrib/shoryuken/integration.rb +11 -7
- data/lib/ddtrace/contrib/shoryuken/patcher.rb +4 -10
- data/lib/ddtrace/contrib/shoryuken/tracer.rb +4 -0
- data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +12 -2
- data/lib/ddtrace/contrib/sidekiq/ext.rb +8 -2
- data/lib/ddtrace/contrib/sidekiq/integration.rb +5 -3
- data/lib/ddtrace/contrib/sidekiq/patcher.rb +19 -18
- data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +12 -3
- data/lib/ddtrace/contrib/sidekiq/tracing.rb +19 -2
- data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/sinatra/env.rb +25 -4
- data/lib/ddtrace/contrib/sinatra/ext.rb +11 -2
- data/lib/ddtrace/contrib/sinatra/integration.rb +5 -3
- data/lib/ddtrace/contrib/sinatra/patcher.rb +5 -10
- data/lib/ddtrace/contrib/sinatra/tracer.rb +79 -34
- data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +48 -15
- data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +32 -0
- data/lib/ddtrace/contrib/sneakers/ext.rb +22 -0
- data/lib/ddtrace/contrib/sneakers/integration.rb +41 -0
- data/lib/ddtrace/contrib/sneakers/patcher.rb +24 -0
- data/lib/ddtrace/contrib/sneakers/tracer.rb +58 -0
- data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +7 -2
- data/lib/ddtrace/contrib/sucker_punch/ext.rb +5 -2
- data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +14 -0
- data/lib/ddtrace/contrib/sucker_punch/integration.rb +5 -3
- data/lib/ddtrace/contrib/sucker_punch/patcher.rb +8 -14
- data/lib/ddtrace/correlation.rb +15 -5
- data/lib/ddtrace/diagnostics/environment_logger.rb +278 -0
- data/lib/ddtrace/diagnostics/health.rb +11 -8
- data/lib/ddtrace/encoding.rb +15 -11
- data/lib/ddtrace/environment.rb +21 -3
- data/lib/ddtrace/event.rb +52 -0
- data/lib/ddtrace/ext/analytics.rb +1 -0
- data/lib/ddtrace/ext/correlation.rb +11 -0
- data/lib/ddtrace/ext/diagnostics.rb +11 -0
- data/lib/ddtrace/ext/environment.rb +16 -0
- data/lib/ddtrace/ext/forced_tracing.rb +1 -1
- data/lib/ddtrace/ext/sampling.rb +16 -0
- data/lib/ddtrace/ext/transport.rb +1 -0
- data/lib/ddtrace/logger.rb +4 -3
- data/lib/ddtrace/metrics.rb +12 -5
- data/lib/ddtrace/monkey.rb +1 -1
- data/lib/ddtrace/opentelemetry/extensions.rb +13 -0
- data/lib/ddtrace/opentelemetry/span.rb +33 -0
- data/lib/ddtrace/opentracer/global_tracer.rb +1 -1
- data/lib/ddtrace/pin.rb +40 -16
- data/lib/ddtrace/pipeline.rb +1 -1
- data/lib/ddtrace/pipeline/span_filter.rb +15 -15
- data/lib/ddtrace/propagation/http_propagator.rb +2 -2
- data/lib/ddtrace/runtime/cgroup.rb +1 -1
- data/lib/ddtrace/runtime/container.rb +1 -1
- data/lib/ddtrace/runtime/metrics.rb +23 -6
- data/lib/ddtrace/sampler.rb +126 -29
- data/lib/ddtrace/sampling.rb +2 -0
- data/lib/ddtrace/sampling/matcher.rb +57 -0
- data/lib/ddtrace/sampling/rate_limiter.rb +127 -0
- data/lib/ddtrace/sampling/rule.rb +61 -0
- data/lib/ddtrace/sampling/rule_sampler.rb +125 -0
- data/lib/ddtrace/span.rb +54 -7
- data/lib/ddtrace/sync_writer.rb +13 -8
- data/lib/ddtrace/tracer.rb +72 -92
- data/lib/ddtrace/transport/http.rb +16 -1
- data/lib/ddtrace/transport/http/adapters/net.rb +8 -0
- data/lib/ddtrace/transport/http/adapters/test.rb +6 -0
- data/lib/ddtrace/transport/http/adapters/unix_socket.rb +4 -0
- data/lib/ddtrace/transport/http/api/instance.rb +4 -0
- data/lib/ddtrace/transport/http/builder.rb +3 -5
- data/lib/ddtrace/transport/http/client.rb +7 -64
- data/lib/ddtrace/transport/http/response.rb +1 -1
- data/lib/ddtrace/transport/http/statistics.rb +1 -1
- data/lib/ddtrace/transport/http/traces.rb +10 -7
- data/lib/ddtrace/transport/io.rb +26 -0
- data/lib/ddtrace/transport/io/client.rb +76 -0
- data/lib/ddtrace/transport/io/response.rb +25 -0
- data/lib/ddtrace/transport/io/traces.rb +91 -0
- data/lib/ddtrace/transport/response.rb +11 -0
- data/lib/ddtrace/transport/statistics.rb +2 -2
- data/lib/ddtrace/transport/traces.rb +160 -10
- data/lib/ddtrace/utils.rb +1 -1
- data/lib/ddtrace/version.rb +2 -2
- data/lib/ddtrace/worker.rb +20 -0
- data/lib/ddtrace/workers.rb +5 -13
- data/lib/ddtrace/workers/async.rb +165 -0
- data/lib/ddtrace/workers/loop.rb +105 -0
- data/lib/ddtrace/workers/polling.rb +48 -0
- data/lib/ddtrace/workers/queue.rb +39 -0
- data/lib/ddtrace/workers/runtime_metrics.rb +47 -0
- data/lib/ddtrace/workers/trace_writer.rb +202 -0
- data/lib/ddtrace/writer.rb +56 -38
- metadata +185 -25
- data/lib/ddtrace/provider.rb +0 -21
|
@@ -0,0 +1,48 @@
|
|
|
1
|
+
require 'ddtrace/ext/net'
|
|
2
|
+
require 'ddtrace/contrib/analytics'
|
|
3
|
+
require 'ddtrace/contrib/action_view/ext'
|
|
4
|
+
require 'ddtrace/contrib/action_view/event'
|
|
5
|
+
|
|
6
|
+
module Datadog
|
|
7
|
+
module Contrib
|
|
8
|
+
module ActionView
|
|
9
|
+
module Events
|
|
10
|
+
# Defines instrumentation for render_template.action_view event
|
|
11
|
+
module RenderTemplate
|
|
12
|
+
include ActionView::Event
|
|
13
|
+
|
|
14
|
+
EVENT_NAME = 'render_template.action_view'.freeze
|
|
15
|
+
|
|
16
|
+
module_function
|
|
17
|
+
|
|
18
|
+
def event_name
|
|
19
|
+
self::EVENT_NAME
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
def span_name
|
|
23
|
+
Ext::SPAN_RENDER_TEMPLATE
|
|
24
|
+
end
|
|
25
|
+
|
|
26
|
+
def process(span, _event, _id, payload)
|
|
27
|
+
span.span_type = Datadog::Ext::HTTP::TEMPLATE
|
|
28
|
+
|
|
29
|
+
if (template_name = Utils.normalize_template_name(payload[:identifier]))
|
|
30
|
+
span.resource = template_name
|
|
31
|
+
span.set_tag(Ext::TAG_TEMPLATE_NAME, template_name)
|
|
32
|
+
end
|
|
33
|
+
|
|
34
|
+
layout = payload[:layout]
|
|
35
|
+
span.set_tag(Ext::TAG_LAYOUT, layout) if layout
|
|
36
|
+
|
|
37
|
+
# Measure service stats
|
|
38
|
+
Contrib::Analytics.set_measured(span)
|
|
39
|
+
|
|
40
|
+
record_exception(span, payload)
|
|
41
|
+
rescue StandardError => e
|
|
42
|
+
Datadog.logger.debug(e.message)
|
|
43
|
+
end
|
|
44
|
+
end
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
end
|
|
48
|
+
end
|
|
@@ -4,8 +4,11 @@ module Datadog
|
|
|
4
4
|
# ActionView integration constants
|
|
5
5
|
module Ext
|
|
6
6
|
APP = 'action_view'.freeze
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
ENV_ENABLED = 'DD_TRACE_ACTION_VIEW_ENABLED'.freeze
|
|
8
|
+
ENV_ANALYTICS_ENABLED = 'DD_TRACE_ACTION_VIEW_ANALYTICS_ENABLED'.freeze
|
|
9
|
+
ENV_ANALYTICS_ENABLED_OLD = 'DD_ACTION_VIEW_ANALYTICS_ENABLED'.freeze
|
|
10
|
+
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_ACTION_VIEW_ANALYTICS_SAMPLE_RATE'.freeze
|
|
11
|
+
ENV_ANALYTICS_SAMPLE_RATE_OLD = 'DD_ACTION_VIEW_ANALYTICS_SAMPLE_RATE'.freeze
|
|
9
12
|
SERVICE_NAME = 'action_view'.freeze
|
|
10
13
|
SPAN_RENDER_PARTIAL = 'rails.render_partial'.freeze
|
|
11
14
|
SPAN_RENDER_TEMPLATE = 'rails.render_template'.freeze
|
|
@@ -4,7 +4,7 @@ module Datadog
|
|
|
4
4
|
module Contrib
|
|
5
5
|
module ActionView
|
|
6
6
|
module Instrumentation
|
|
7
|
-
#
|
|
7
|
+
# Legacy instrumentation for partial rendering for Rails < 4
|
|
8
8
|
module PartialRenderer
|
|
9
9
|
def render(*args, &block)
|
|
10
10
|
datadog_tracer.trace(
|
|
@@ -21,7 +21,7 @@ module Datadog
|
|
|
21
21
|
|
|
22
22
|
datadog_render_partial(template)
|
|
23
23
|
rescue StandardError => e
|
|
24
|
-
Datadog
|
|
24
|
+
Datadog.logger.debug(e.message)
|
|
25
25
|
end
|
|
26
26
|
|
|
27
27
|
# execute the original function anyway
|
|
@@ -32,10 +32,14 @@ module Datadog
|
|
|
32
32
|
template_name = Utils.normalize_template_name(template.try('identifier'))
|
|
33
33
|
|
|
34
34
|
if template_name
|
|
35
|
+
active_datadog_span.resource = template_name
|
|
35
36
|
active_datadog_span.set_tag(
|
|
36
37
|
Ext::TAG_TEMPLATE_NAME,
|
|
37
38
|
template_name
|
|
38
39
|
)
|
|
40
|
+
|
|
41
|
+
# Measure service stats
|
|
42
|
+
Contrib::Analytics.set_measured(active_datadog_span)
|
|
39
43
|
end
|
|
40
44
|
end
|
|
41
45
|
|
|
@@ -54,23 +58,15 @@ module Datadog
|
|
|
54
58
|
self.active_datadog_span = nil
|
|
55
59
|
end
|
|
56
60
|
|
|
57
|
-
# Rails <
|
|
58
|
-
|
|
61
|
+
# Rails < 4 partial rendering
|
|
62
|
+
# ActiveSupport events are used instead for Rails >= 4
|
|
63
|
+
module RailsLessThan4
|
|
59
64
|
include PartialRenderer
|
|
60
65
|
|
|
61
66
|
def datadog_template(*args)
|
|
62
67
|
@template
|
|
63
68
|
end
|
|
64
69
|
end
|
|
65
|
-
|
|
66
|
-
# Rails >= 6 partial rendering
|
|
67
|
-
module Rails6Plus
|
|
68
|
-
include PartialRenderer
|
|
69
|
-
|
|
70
|
-
def datadog_template(*args)
|
|
71
|
-
args[1]
|
|
72
|
-
end
|
|
73
|
-
end
|
|
74
70
|
end
|
|
75
71
|
end
|
|
76
72
|
end
|
|
@@ -4,9 +4,9 @@ module Datadog
|
|
|
4
4
|
module Contrib
|
|
5
5
|
module ActionView
|
|
6
6
|
module Instrumentation
|
|
7
|
-
#
|
|
7
|
+
# Legacy instrumentation for template rendering for Rails < 4
|
|
8
8
|
module TemplateRenderer
|
|
9
|
-
# Rails < 3.1 template rendering
|
|
9
|
+
# Legacy Rails < 3.1 template rendering
|
|
10
10
|
module Rails30
|
|
11
11
|
# rubocop:disable Metrics/MethodLength
|
|
12
12
|
def self.prepended(base)
|
|
@@ -37,6 +37,7 @@ module Datadog
|
|
|
37
37
|
template_name = Utils.normalize_template_name(template_name)
|
|
38
38
|
|
|
39
39
|
if template_name
|
|
40
|
+
active_datadog_span.resource = template_name
|
|
40
41
|
active_datadog_span.set_tag(
|
|
41
42
|
Ext::TAG_TEMPLATE_NAME,
|
|
42
43
|
template_name
|
|
@@ -49,8 +50,11 @@ module Datadog
|
|
|
49
50
|
layout_name
|
|
50
51
|
)
|
|
51
52
|
end
|
|
53
|
+
|
|
54
|
+
# Measure service stats
|
|
55
|
+
Contrib::Analytics.set_measured(active_datadog_span)
|
|
52
56
|
rescue StandardError => e
|
|
53
|
-
Datadog
|
|
57
|
+
Datadog.logger.debug(e.message)
|
|
54
58
|
end
|
|
55
59
|
|
|
56
60
|
# execute the original function anyway
|
|
@@ -82,7 +86,7 @@ module Datadog
|
|
|
82
86
|
end
|
|
83
87
|
end
|
|
84
88
|
|
|
85
|
-
#
|
|
89
|
+
# Legacy shared code for Rails >= 3.1 template rendering
|
|
86
90
|
module Rails31Plus
|
|
87
91
|
def render(*args, &block)
|
|
88
92
|
datadog_tracer.trace(
|
|
@@ -99,7 +103,7 @@ module Datadog
|
|
|
99
103
|
|
|
100
104
|
datadog_render_template(template, layout_name)
|
|
101
105
|
rescue StandardError => e
|
|
102
|
-
Datadog
|
|
106
|
+
Datadog.logger.debug(e.message)
|
|
103
107
|
end
|
|
104
108
|
|
|
105
109
|
# execute the original function anyway
|
|
@@ -113,6 +117,7 @@ module Datadog
|
|
|
113
117
|
layout = layout_name.try(:[], 'virtual_path') # Proc can be called without parameters since Rails 6
|
|
114
118
|
|
|
115
119
|
if template_name
|
|
120
|
+
active_datadog_span.resource = template_name
|
|
116
121
|
active_datadog_span.set_tag(
|
|
117
122
|
Ext::TAG_TEMPLATE_NAME,
|
|
118
123
|
template_name
|
|
@@ -125,6 +130,9 @@ module Datadog
|
|
|
125
130
|
layout
|
|
126
131
|
)
|
|
127
132
|
end
|
|
133
|
+
|
|
134
|
+
# Measure service stats
|
|
135
|
+
Contrib::Analytics.set_measured(active_datadog_span)
|
|
128
136
|
end
|
|
129
137
|
|
|
130
138
|
private
|
|
@@ -143,23 +151,15 @@ module Datadog
|
|
|
143
151
|
end
|
|
144
152
|
end
|
|
145
153
|
|
|
146
|
-
# Rails >= 3.1
|
|
147
|
-
|
|
154
|
+
# Rails >= 3.1, < 4 template rendering
|
|
155
|
+
# ActiveSupport events are used instead for Rails >= 4
|
|
156
|
+
module RailsLessThan4
|
|
148
157
|
include Rails31Plus
|
|
149
158
|
|
|
150
159
|
def datadog_parse_args(template, layout_name, *args)
|
|
151
160
|
[template, layout_name]
|
|
152
161
|
end
|
|
153
162
|
end
|
|
154
|
-
|
|
155
|
-
# Rails >= 6 template rendering
|
|
156
|
-
module Rails6Plus
|
|
157
|
-
include Rails31Plus
|
|
158
|
-
|
|
159
|
-
def datadog_parse_args(view, template, layout_name, *args)
|
|
160
|
-
[template, layout_name]
|
|
161
|
-
end
|
|
162
|
-
end
|
|
163
163
|
end
|
|
164
164
|
end
|
|
165
165
|
end
|
|
@@ -9,6 +9,8 @@ module Datadog
|
|
|
9
9
|
class Integration
|
|
10
10
|
include Contrib::Integration
|
|
11
11
|
|
|
12
|
+
MINIMUM_VERSION = Gem::Version.new('3.0')
|
|
13
|
+
|
|
12
14
|
register_as :action_view, auto_patch: false
|
|
13
15
|
|
|
14
16
|
def self.version
|
|
@@ -22,12 +24,12 @@ module Datadog
|
|
|
22
24
|
end
|
|
23
25
|
end
|
|
24
26
|
|
|
25
|
-
def self.
|
|
26
|
-
|
|
27
|
+
def self.loaded?
|
|
28
|
+
!defined?(::ActionView).nil?
|
|
27
29
|
end
|
|
28
30
|
|
|
29
31
|
def self.compatible?
|
|
30
|
-
super && version >=
|
|
32
|
+
super && version >= MINIMUM_VERSION
|
|
31
33
|
end
|
|
32
34
|
|
|
33
35
|
def default_configuration
|
|
@@ -1,5 +1,6 @@
|
|
|
1
1
|
require 'ddtrace/ext/http'
|
|
2
2
|
require 'ddtrace/contrib/patcher'
|
|
3
|
+
require 'ddtrace/contrib/action_view/events'
|
|
3
4
|
require 'ddtrace/contrib/action_view/ext'
|
|
4
5
|
require 'ddtrace/contrib/action_view/instrumentation/partial_renderer'
|
|
5
6
|
require 'ddtrace/contrib/action_view/instrumentation/template_renderer'
|
|
@@ -14,37 +15,30 @@ module Datadog
|
|
|
14
15
|
|
|
15
16
|
module_function
|
|
16
17
|
|
|
17
|
-
def
|
|
18
|
-
|
|
18
|
+
def target_version
|
|
19
|
+
Integration.version
|
|
19
20
|
end
|
|
20
21
|
|
|
21
22
|
def patch
|
|
22
|
-
|
|
23
|
-
begin
|
|
24
|
-
patch_renderer
|
|
25
|
-
rescue StandardError => e
|
|
26
|
-
Datadog::Tracer.log.error("Unable to apply Action View integration: #{e} Location: #{e.backtrace.first}")
|
|
27
|
-
end
|
|
28
|
-
end
|
|
23
|
+
patch_renderer
|
|
29
24
|
end
|
|
30
25
|
|
|
31
26
|
def patch_renderer
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
|
|
40
|
-
|
|
41
|
-
|
|
42
|
-
|
|
43
|
-
|
|
44
|
-
|
|
45
|
-
|
|
46
|
-
|
|
47
|
-
end
|
|
27
|
+
if target_version >= Gem::Version.new('4.0.0')
|
|
28
|
+
Events.subscribe!
|
|
29
|
+
elsif defined?(::ActionView::TemplateRenderer) && defined?(::ActionView::PartialRenderer)
|
|
30
|
+
# Rails < 4 compatibility:
|
|
31
|
+
# Rendering events are not nested in this version, creating
|
|
32
|
+
# render_partial spans outside of the parent render_template span.
|
|
33
|
+
# We fall back to manual patching instead.
|
|
34
|
+
::ActionView::TemplateRenderer.send(:prepend, Instrumentation::TemplateRenderer::RailsLessThan4)
|
|
35
|
+
::ActionView::PartialRenderer.send(:prepend, Instrumentation::PartialRenderer::RailsLessThan4)
|
|
36
|
+
elsif defined?(::ActionView::Rendering) && defined?(::ActionView::Partials::PartialRenderer)
|
|
37
|
+
# NOTE: Rails < 3.1 compatibility: different classes are used
|
|
38
|
+
::ActionView::Rendering.send(:prepend, Instrumentation::TemplateRenderer::Rails30)
|
|
39
|
+
::ActionView::Partials::PartialRenderer.send(:prepend, Instrumentation::PartialRenderer::RailsLessThan4)
|
|
40
|
+
else
|
|
41
|
+
Datadog.logger.debug('Expected Template/Partial classes not found; template rendering disabled')
|
|
48
42
|
end
|
|
49
43
|
end
|
|
50
44
|
end
|
|
@@ -7,13 +7,18 @@ module Datadog
|
|
|
7
7
|
module Configuration
|
|
8
8
|
# Custom settings for the ActiveModelSerializers integration
|
|
9
9
|
class Settings < Contrib::Configuration::Settings
|
|
10
|
+
option :enabled do |o|
|
|
11
|
+
o.default { env_to_bool(Ext::ENV_ENABLED, true) }
|
|
12
|
+
o.lazy
|
|
13
|
+
end
|
|
14
|
+
|
|
10
15
|
option :analytics_enabled do |o|
|
|
11
|
-
o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
|
|
16
|
+
o.default { env_to_bool([Ext::ENV_ANALYTICS_ENABLED, Ext::ENV_ANALYTICS_ENABLED_OLD], false) }
|
|
12
17
|
o.lazy
|
|
13
18
|
end
|
|
14
19
|
|
|
15
20
|
option :analytics_sample_rate do |o|
|
|
16
|
-
o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
|
|
21
|
+
o.default { env_to_float([Ext::ENV_ANALYTICS_SAMPLE_RATE, Ext::ENV_ANALYTICS_SAMPLE_RATE_OLD], 1.0) }
|
|
17
22
|
o.lazy
|
|
18
23
|
end
|
|
19
24
|
|
|
@@ -36,6 +36,9 @@ module Datadog
|
|
|
36
36
|
Contrib::Analytics.set_sample_rate(span, configuration[:analytics_sample_rate])
|
|
37
37
|
end
|
|
38
38
|
|
|
39
|
+
# Measure service stats
|
|
40
|
+
Contrib::Analytics.set_measured(span)
|
|
41
|
+
|
|
39
42
|
# Set the resource name and serializer name
|
|
40
43
|
res = resource(payload[:serializer])
|
|
41
44
|
span.resource = res
|
|
@@ -4,8 +4,11 @@ module Datadog
|
|
|
4
4
|
# ActiveModelSerializers integration constants
|
|
5
5
|
module Ext
|
|
6
6
|
APP = 'active_model_serializers'.freeze
|
|
7
|
-
|
|
8
|
-
|
|
7
|
+
ENV_ENABLED = 'DD_TRACE_ACTIVE_MODEL_SERIALIZERS_ENABLED'.freeze
|
|
8
|
+
ENV_ANALYTICS_ENABLED = 'DD_TRACE_ACTIVE_MODEL_SERIALIZERS_ANALYTICS_ENABLED'.freeze
|
|
9
|
+
ENV_ANALYTICS_ENABLED_OLD = 'DD_ACTIVE_MODEL_SERIALIZERS_ANALYTICS_ENABLED'.freeze
|
|
10
|
+
ENV_ANALYTICS_SAMPLE_RATE = 'DD_TRACE_ACTIVE_MODEL_SERIALIZERS_ANALYTICS_SAMPLE_RATE'.freeze
|
|
11
|
+
ENV_ANALYTICS_SAMPLE_RATE_OLD = 'DD_ACTIVE_MODEL_SERIALIZERS_ANALYTICS_SAMPLE_RATE'.freeze
|
|
9
12
|
SERVICE_NAME = 'active_model_serializers'.freeze
|
|
10
13
|
SPAN_RENDER = 'active_model_serializers.render'.freeze
|
|
11
14
|
SPAN_SERIALIZE = 'active_model_serializers.serialize'.freeze
|
|
@@ -9,6 +9,8 @@ module Datadog
|
|
|
9
9
|
class Integration
|
|
10
10
|
include Contrib::Integration
|
|
11
11
|
|
|
12
|
+
MINIMUM_VERSION = Gem::Version.new('0.9.0')
|
|
13
|
+
|
|
12
14
|
register_as :active_model_serializers
|
|
13
15
|
|
|
14
16
|
def self.version
|
|
@@ -16,14 +18,13 @@ module Datadog
|
|
|
16
18
|
&& Gem.loaded_specs['active_model_serializers'].version
|
|
17
19
|
end
|
|
18
20
|
|
|
19
|
-
def self.
|
|
20
|
-
|
|
21
|
+
def self.loaded?
|
|
22
|
+
!defined?(::ActiveModel::Serializer).nil? \
|
|
23
|
+
&& !defined?(::ActiveSupport::Notifications).nil?
|
|
21
24
|
end
|
|
22
25
|
|
|
23
26
|
def self.compatible?
|
|
24
|
-
super
|
|
25
|
-
&& defined?(::ActiveSupport::Notifications) \
|
|
26
|
-
&& version >= Gem::Version.new('0.9.0')
|
|
27
|
+
super && version >= MINIMUM_VERSION
|
|
27
28
|
end
|
|
28
29
|
|
|
29
30
|
def default_configuration
|
|
@@ -12,19 +12,12 @@ module Datadog
|
|
|
12
12
|
|
|
13
13
|
module_function
|
|
14
14
|
|
|
15
|
-
def
|
|
16
|
-
|
|
15
|
+
def target_version
|
|
16
|
+
Integration.version
|
|
17
17
|
end
|
|
18
18
|
|
|
19
19
|
def patch
|
|
20
|
-
|
|
21
|
-
begin
|
|
22
|
-
# Subscribe to ActiveModelSerializers events
|
|
23
|
-
Events.subscribe!
|
|
24
|
-
rescue StandardError => e
|
|
25
|
-
Datadog::Tracer.log.error("Unable to apply ActiveModelSerializers integration: #{e}")
|
|
26
|
-
end
|
|
27
|
-
end
|
|
20
|
+
Events.subscribe!
|
|
28
21
|
end
|
|
29
22
|
|
|
30
23
|
def get_option(option)
|
|
@@ -11,6 +11,10 @@ module Datadog
|
|
|
11
11
|
@configurations = configurations
|
|
12
12
|
end
|
|
13
13
|
|
|
14
|
+
def resolve(key)
|
|
15
|
+
normalize(connection_resolver.resolve(key).symbolize_keys)
|
|
16
|
+
end
|
|
17
|
+
|
|
14
18
|
def configurations
|
|
15
19
|
@configurations || ::ActiveRecord::Base.configurations
|
|
16
20
|
end
|
|
@@ -25,11 +29,6 @@ module Datadog
|
|
|
25
29
|
end
|
|
26
30
|
end
|
|
27
31
|
|
|
28
|
-
def resolve(spec)
|
|
29
|
-
return :default if spec == :default
|
|
30
|
-
normalize(connection_resolver.resolve(spec).symbolize_keys)
|
|
31
|
-
end
|
|
32
|
-
|
|
33
32
|
def normalize(hash)
|
|
34
33
|
{
|
|
35
34
|
adapter: hash[:adapter],
|
|
@@ -8,13 +8,18 @@ module Datadog
|
|
|
8
8
|
module Configuration
|
|
9
9
|
# Custom settings for the ActiveRecord integration
|
|
10
10
|
class Settings < Contrib::Configuration::Settings
|
|
11
|
+
option :enabled do |o|
|
|
12
|
+
o.default { env_to_bool(Ext::ENV_ENABLED, true) }
|
|
13
|
+
o.lazy
|
|
14
|
+
end
|
|
15
|
+
|
|
11
16
|
option :analytics_enabled do |o|
|
|
12
|
-
o.default { env_to_bool(Ext::ENV_ANALYTICS_ENABLED, false) }
|
|
17
|
+
o.default { env_to_bool([Ext::ENV_ANALYTICS_ENABLED, Ext::ENV_ANALYTICS_ENABLED_OLD], false) }
|
|
13
18
|
o.lazy
|
|
14
19
|
end
|
|
15
20
|
|
|
16
21
|
option :analytics_sample_rate do |o|
|
|
17
|
-
o.default { env_to_float(Ext::ENV_ANALYTICS_SAMPLE_RATE, 1.0) }
|
|
22
|
+
o.default { env_to_float([Ext::ENV_ANALYTICS_SAMPLE_RATE, Ext::ENV_ANALYTICS_SAMPLE_RATE_OLD], 1.0) }
|
|
18
23
|
o.lazy
|
|
19
24
|
end
|
|
20
25
|
|