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
|
@@ -10,20 +10,23 @@ module Datadog
|
|
|
10
10
|
count :api_errors, Ext::Diagnostics::Health::Metrics::METRIC_API_ERRORS
|
|
11
11
|
count :api_requests, Ext::Diagnostics::Health::Metrics::METRIC_API_REQUESTS
|
|
12
12
|
count :api_responses, Ext::Diagnostics::Health::Metrics::METRIC_API_RESPONSES
|
|
13
|
+
count :error_context_overflow, Ext::Diagnostics::Health::Metrics::METRIC_ERROR_CONTEXT_OVERFLOW
|
|
14
|
+
count :error_instrumentation_patch, Ext::Diagnostics::Health::Metrics::METRIC_ERROR_INSTRUMENTATION_PATCH
|
|
15
|
+
count :error_span_finish, Ext::Diagnostics::Health::Metrics::METRIC_ERROR_SPAN_FINISH
|
|
16
|
+
count :error_unfinished_spans, Ext::Diagnostics::Health::Metrics::METRIC_ERROR_UNFINISHED_SPANS
|
|
17
|
+
count :instrumentation_patched, Ext::Diagnostics::Health::Metrics::METRIC_INSTRUMENTATION_PATCHED
|
|
13
18
|
count :queue_accepted, Ext::Diagnostics::Health::Metrics::METRIC_QUEUE_ACCEPTED
|
|
14
19
|
count :queue_accepted_lengths, Ext::Diagnostics::Health::Metrics::METRIC_QUEUE_ACCEPTED_LENGTHS
|
|
15
20
|
count :queue_dropped, Ext::Diagnostics::Health::Metrics::METRIC_QUEUE_DROPPED
|
|
16
|
-
gauge :queue_length, Ext::Diagnostics::Health::Metrics::METRIC_QUEUE_LENGTH
|
|
17
|
-
gauge :queue_max_length, Ext::Diagnostics::Health::Metrics::METRIC_QUEUE_MAX_LENGTH
|
|
18
|
-
gauge :queue_spans, Ext::Diagnostics::Health::Metrics::METRIC_QUEUE_SPANS
|
|
19
21
|
count :traces_filtered, Ext::Diagnostics::Health::Metrics::METRIC_TRACES_FILTERED
|
|
22
|
+
count :transport_trace_too_large, Ext::Diagnostics::Health::Metrics::METRIC_TRANSPORT_TRACE_TOO_LARGE
|
|
23
|
+
count :transport_chunked, Ext::Diagnostics::Health::Metrics::METRIC_TRANSPORT_CHUNKED
|
|
20
24
|
count :writer_cpu_time, Ext::Diagnostics::Health::Metrics::METRIC_WRITER_CPU_TIME
|
|
21
|
-
end
|
|
22
25
|
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
26
|
+
gauge :queue_length, Ext::Diagnostics::Health::Metrics::METRIC_QUEUE_LENGTH
|
|
27
|
+
gauge :queue_max_length, Ext::Diagnostics::Health::Metrics::METRIC_QUEUE_MAX_LENGTH
|
|
28
|
+
gauge :queue_spans, Ext::Diagnostics::Health::Metrics::METRIC_QUEUE_SPANS
|
|
29
|
+
gauge :sampling_service_cache_length, Ext::Diagnostics::Health::Metrics::METRIC_SAMPLING_SERVICE_CACHE_LENGTH
|
|
27
30
|
end
|
|
28
31
|
end
|
|
29
32
|
end
|
data/lib/ddtrace/encoding.rb
CHANGED
|
@@ -10,19 +10,12 @@ module Datadog
|
|
|
10
10
|
raise NotImplementedError
|
|
11
11
|
end
|
|
12
12
|
|
|
13
|
-
#
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
def encode_traces(traces)
|
|
17
|
-
to_send = []
|
|
18
|
-
traces.each do |trace|
|
|
19
|
-
to_send << trace.map(&:to_hash)
|
|
20
|
-
end
|
|
21
|
-
encode(to_send)
|
|
13
|
+
# Concatenates a list of elements previously encoded by +#encode+.
|
|
14
|
+
def join(encoded_elements)
|
|
15
|
+
raise NotImplementedError
|
|
22
16
|
end
|
|
23
17
|
|
|
24
|
-
#
|
|
25
|
-
# This method must be implemented and should only be used by the internal functions.
|
|
18
|
+
# Serializes a single trace into a String suitable for network transmission.
|
|
26
19
|
def encode(_)
|
|
27
20
|
raise NotImplementedError
|
|
28
21
|
end
|
|
@@ -43,6 +36,10 @@ module Datadog
|
|
|
43
36
|
def encode(obj)
|
|
44
37
|
JSON.dump(obj)
|
|
45
38
|
end
|
|
39
|
+
|
|
40
|
+
def join(encoded_data)
|
|
41
|
+
"[#{encoded_data.join(',')}]"
|
|
42
|
+
end
|
|
46
43
|
end
|
|
47
44
|
|
|
48
45
|
# Encoder for the Msgpack format
|
|
@@ -60,6 +57,13 @@ module Datadog
|
|
|
60
57
|
def encode(obj)
|
|
61
58
|
MessagePack.pack(obj)
|
|
62
59
|
end
|
|
60
|
+
|
|
61
|
+
def join(encoded_data)
|
|
62
|
+
packer = MessagePack::Packer.new
|
|
63
|
+
packer.write_array_header(encoded_data.size)
|
|
64
|
+
|
|
65
|
+
(packer.buffer.to_a + encoded_data).join
|
|
66
|
+
end
|
|
63
67
|
end
|
|
64
68
|
end
|
|
65
69
|
end
|
data/lib/ddtrace/environment.rb
CHANGED
|
@@ -1,23 +1,41 @@
|
|
|
1
|
+
require 'ddtrace/ext/environment'
|
|
2
|
+
|
|
1
3
|
module Datadog
|
|
2
4
|
# Namespace for handling application environment
|
|
3
5
|
module Environment
|
|
4
6
|
# Defines helper methods for environment
|
|
5
7
|
module Helpers
|
|
6
8
|
def env_to_bool(var, default = nil)
|
|
7
|
-
|
|
9
|
+
var = decode_array(var)
|
|
10
|
+
var && ENV.key?(var) ? ENV[var].to_s.strip.downcase == 'true' : default
|
|
11
|
+
end
|
|
12
|
+
|
|
13
|
+
def env_to_int(var, default = nil)
|
|
14
|
+
var = decode_array(var)
|
|
15
|
+
var && ENV.key?(var) ? ENV[var].to_i : default
|
|
8
16
|
end
|
|
9
17
|
|
|
10
18
|
def env_to_float(var, default = nil)
|
|
11
|
-
|
|
19
|
+
var = decode_array(var)
|
|
20
|
+
var && ENV.key?(var) ? ENV[var].to_f : default
|
|
12
21
|
end
|
|
13
22
|
|
|
14
23
|
def env_to_list(var, default = [])
|
|
15
|
-
|
|
24
|
+
var = decode_array(var)
|
|
25
|
+
if var && ENV.key?(var)
|
|
16
26
|
ENV[var].split(',').map(&:strip)
|
|
17
27
|
else
|
|
18
28
|
default
|
|
19
29
|
end
|
|
20
30
|
end
|
|
31
|
+
|
|
32
|
+
private
|
|
33
|
+
|
|
34
|
+
def decode_array(var)
|
|
35
|
+
var.is_a?(Array) ? var.find { |env_var| ENV.key?(env_var) } : var
|
|
36
|
+
end
|
|
21
37
|
end
|
|
38
|
+
|
|
39
|
+
extend Helpers
|
|
22
40
|
end
|
|
23
41
|
end
|
|
@@ -0,0 +1,52 @@
|
|
|
1
|
+
require 'ddtrace/logger'
|
|
2
|
+
|
|
3
|
+
module Datadog
|
|
4
|
+
# A simple pub-sub event model for components to exchange messages through.
|
|
5
|
+
class Event
|
|
6
|
+
attr_reader \
|
|
7
|
+
:name,
|
|
8
|
+
:subscriptions
|
|
9
|
+
|
|
10
|
+
def initialize(name)
|
|
11
|
+
@name = name
|
|
12
|
+
@subscriptions = {}
|
|
13
|
+
@mutex = Mutex.new
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
def subscribe(key, &block)
|
|
17
|
+
raise ArgumentError, 'Must give a block to subscribe!' unless block
|
|
18
|
+
|
|
19
|
+
@mutex.synchronize do
|
|
20
|
+
subscriptions[key] = block
|
|
21
|
+
end
|
|
22
|
+
end
|
|
23
|
+
|
|
24
|
+
def unsubscribe(key)
|
|
25
|
+
@mutex.synchronize do
|
|
26
|
+
subscriptions.delete(key)
|
|
27
|
+
end
|
|
28
|
+
end
|
|
29
|
+
|
|
30
|
+
def unsubscribe_all!
|
|
31
|
+
@mutex.synchronize do
|
|
32
|
+
subscriptions.clear
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
true
|
|
36
|
+
end
|
|
37
|
+
|
|
38
|
+
def publish(*args)
|
|
39
|
+
@mutex.synchronize do
|
|
40
|
+
subscriptions.each do |key, block|
|
|
41
|
+
begin
|
|
42
|
+
block.call(*args)
|
|
43
|
+
rescue StandardError => e
|
|
44
|
+
Datadog.logger.debug("Error while handling '#{key}' for '#{name}' event: #{e.message}")
|
|
45
|
+
end
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
true
|
|
49
|
+
end
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
end
|
|
@@ -1,6 +1,9 @@
|
|
|
1
1
|
module Datadog
|
|
2
2
|
module Ext
|
|
3
3
|
module Diagnostics
|
|
4
|
+
DD_TRACE_STARTUP_LOGS = 'DD_TRACE_STARTUP_LOGS'.freeze
|
|
5
|
+
DD_TRACE_DEBUG = 'DD_TRACE_DEBUG'.freeze
|
|
6
|
+
DD_TRACE_ENABLED = 'DD_TRACE_ENABLED'.freeze
|
|
4
7
|
# Health
|
|
5
8
|
module Health
|
|
6
9
|
# Metrics
|
|
@@ -10,13 +13,21 @@ module Datadog
|
|
|
10
13
|
METRIC_API_ERRORS = 'datadog.tracer.api.errors'.freeze
|
|
11
14
|
METRIC_API_REQUESTS = 'datadog.tracer.api.requests'.freeze
|
|
12
15
|
METRIC_API_RESPONSES = 'datadog.tracer.api.responses'.freeze
|
|
16
|
+
METRIC_ERROR_CONTEXT_OVERFLOW = 'datadog.tracer.error.context_overflow'.freeze
|
|
17
|
+
METRIC_ERROR_INSTRUMENTATION_PATCH = 'datadog.tracer.error.instrumentation_patch'.freeze
|
|
18
|
+
METRIC_ERROR_SPAN_FINISH = 'datadog.tracer.error.span_finish'.freeze
|
|
19
|
+
METRIC_ERROR_UNFINISHED_SPANS = 'datadog.tracer.error.unfinished_spans'.freeze
|
|
20
|
+
METRIC_INSTRUMENTATION_PATCHED = 'datadog.tracer.instrumentation_patched'.freeze
|
|
13
21
|
METRIC_QUEUE_ACCEPTED = 'datadog.tracer.queue.accepted'.freeze
|
|
14
22
|
METRIC_QUEUE_ACCEPTED_LENGTHS = 'datadog.tracer.queue.accepted_lengths'.freeze
|
|
15
23
|
METRIC_QUEUE_DROPPED = 'datadog.tracer.queue.dropped'.freeze
|
|
16
24
|
METRIC_QUEUE_LENGTH = 'datadog.tracer.queue.length'.freeze
|
|
17
25
|
METRIC_QUEUE_MAX_LENGTH = 'datadog.tracer.queue.max_length'.freeze
|
|
18
26
|
METRIC_QUEUE_SPANS = 'datadog.tracer.queue.spans'.freeze
|
|
27
|
+
METRIC_SAMPLING_SERVICE_CACHE_LENGTH = 'datadog.tracer.sampling.service_cache_length'.freeze
|
|
19
28
|
METRIC_TRACES_FILTERED = 'datadog.tracer.traces.filtered'.freeze
|
|
29
|
+
METRIC_TRANSPORT_CHUNKED = 'datadog.tracer.transport.chunked'.freeze
|
|
30
|
+
METRIC_TRANSPORT_TRACE_TOO_LARGE = 'datadog.tracer.transport.trace_too_large'.freeze
|
|
20
31
|
METRIC_WRITER_CPU_TIME = 'datadog.tracer.writer.cpu_time'.freeze
|
|
21
32
|
end
|
|
22
33
|
end
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module Datadog
|
|
2
|
+
module Ext
|
|
3
|
+
module Environment
|
|
4
|
+
ENV_API_KEY = 'DD_API_KEY'.freeze
|
|
5
|
+
ENV_ENVIRONMENT = 'DD_ENV'.freeze
|
|
6
|
+
ENV_SERVICE = 'DD_SERVICE'.freeze
|
|
7
|
+
ENV_SITE = 'DD_SITE'.freeze
|
|
8
|
+
ENV_TAGS = 'DD_TAGS'.freeze
|
|
9
|
+
ENV_VERSION = 'DD_VERSION'.freeze
|
|
10
|
+
|
|
11
|
+
TAG_ENV = 'env'.freeze
|
|
12
|
+
TAG_SERVICE = 'service'.freeze
|
|
13
|
+
TAG_VERSION = 'version'.freeze
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -12,7 +12,7 @@ module Datadog
|
|
|
12
12
|
|
|
13
13
|
# Only log each deprecation warning once (safeguard against log spam)
|
|
14
14
|
unless @deprecation_warning_shown
|
|
15
|
-
Datadog
|
|
15
|
+
Datadog.logger.warn(
|
|
16
16
|
'forced tracing: Datadog::Ext::ForcedTracing has been renamed to Datadog::Ext::ManualTracing'
|
|
17
17
|
)
|
|
18
18
|
@deprecation_warning_shown = true
|
|
@@ -0,0 +1,16 @@
|
|
|
1
|
+
module Datadog
|
|
2
|
+
module Ext
|
|
3
|
+
module Sampling
|
|
4
|
+
ENV_SAMPLE_RATE = 'DD_TRACE_SAMPLE_RATE'.freeze
|
|
5
|
+
ENV_RATE_LIMIT = 'DD_TRACE_RATE_LIMIT'.freeze
|
|
6
|
+
|
|
7
|
+
# If rule sampling is applied to a span, set this metric the sample rate configured for that rule.
|
|
8
|
+
# This should be done regardless of sampling outcome.
|
|
9
|
+
RULE_SAMPLE_RATE = '_dd.rule_psr'.freeze
|
|
10
|
+
|
|
11
|
+
# If rate limiting is checked on a span, set this metric the effective rate limiting rate applied.
|
|
12
|
+
# This should be done regardless of rate limiting outcome.
|
|
13
|
+
RATE_LIMITER_RATE = '_dd.limit_psr'.freeze
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
end
|
|
@@ -6,6 +6,7 @@ module Datadog
|
|
|
6
6
|
DEFAULT_PORT = 8126
|
|
7
7
|
ENV_DEFAULT_HOST = 'DD_AGENT_HOST'.freeze
|
|
8
8
|
ENV_DEFAULT_PORT = 'DD_TRACE_AGENT_PORT'.freeze
|
|
9
|
+
ENV_DEFAULT_URL = 'DD_TRACE_AGENT_URL'.freeze
|
|
9
10
|
HEADER_CONTAINER_ID = 'Datadog-Container-ID'.freeze
|
|
10
11
|
HEADER_META_LANG = 'Datadog-Meta-Lang'.freeze
|
|
11
12
|
HEADER_META_LANG_VERSION = 'Datadog-Meta-Lang-Version'.freeze
|
data/lib/ddtrace/logger.rb
CHANGED
|
@@ -1,15 +1,16 @@
|
|
|
1
1
|
require 'logger'
|
|
2
2
|
|
|
3
3
|
module Datadog
|
|
4
|
-
LOG_PREFIX = 'ddtrace'.freeze
|
|
5
|
-
|
|
6
4
|
# A custom logger with minor enhancements:
|
|
7
5
|
# - progname defaults to ddtrace to clearly identify Datadog dd-trace-rb related messages
|
|
8
6
|
# - adds last caller stack-trace info to know where the message comes from
|
|
9
7
|
class Logger < ::Logger
|
|
8
|
+
PREFIX = 'ddtrace'.freeze
|
|
9
|
+
|
|
10
10
|
def initialize(*args, &block)
|
|
11
11
|
super
|
|
12
|
-
self.progname =
|
|
12
|
+
self.progname = PREFIX
|
|
13
|
+
self.level = ::Logger::INFO
|
|
13
14
|
end
|
|
14
15
|
|
|
15
16
|
def add(severity, message = nil, progname = nil, &block)
|
data/lib/ddtrace/metrics.rb
CHANGED
|
@@ -2,6 +2,7 @@ require 'ddtrace/ext/metrics'
|
|
|
2
2
|
|
|
3
3
|
require 'set'
|
|
4
4
|
require 'logger'
|
|
5
|
+
require 'ddtrace/environment'
|
|
5
6
|
require 'ddtrace/utils/time'
|
|
6
7
|
require 'ddtrace/runtime/identity'
|
|
7
8
|
|
|
@@ -62,7 +63,7 @@ module Datadog
|
|
|
62
63
|
|
|
63
64
|
statsd.count(stat, value, metric_options(options))
|
|
64
65
|
rescue StandardError => e
|
|
65
|
-
Datadog
|
|
66
|
+
Datadog.logger.error("Failed to send count stat. Cause: #{e.message} Source: #{e.backtrace.first}")
|
|
66
67
|
end
|
|
67
68
|
|
|
68
69
|
def distribution(stat, value = nil, options = nil, &block)
|
|
@@ -72,7 +73,7 @@ module Datadog
|
|
|
72
73
|
|
|
73
74
|
statsd.distribution(stat, value, metric_options(options))
|
|
74
75
|
rescue StandardError => e
|
|
75
|
-
Datadog
|
|
76
|
+
Datadog.logger.error("Failed to send distribution stat. Cause: #{e.message} Source: #{e.backtrace.first}")
|
|
76
77
|
end
|
|
77
78
|
|
|
78
79
|
def increment(stat, options = nil)
|
|
@@ -81,7 +82,7 @@ module Datadog
|
|
|
81
82
|
|
|
82
83
|
statsd.increment(stat, metric_options(options))
|
|
83
84
|
rescue StandardError => e
|
|
84
|
-
Datadog
|
|
85
|
+
Datadog.logger.error("Failed to send increment stat. Cause: #{e.message} Source: #{e.backtrace.first}")
|
|
85
86
|
end
|
|
86
87
|
|
|
87
88
|
def gauge(stat, value = nil, options = nil, &block)
|
|
@@ -91,7 +92,7 @@ module Datadog
|
|
|
91
92
|
|
|
92
93
|
statsd.gauge(stat, value, metric_options(options))
|
|
93
94
|
rescue StandardError => e
|
|
94
|
-
Datadog
|
|
95
|
+
Datadog.logger.error("Failed to send gauge stat. Cause: #{e.message} Source: #{e.backtrace.first}")
|
|
95
96
|
end
|
|
96
97
|
|
|
97
98
|
def time(stat, options = nil)
|
|
@@ -107,7 +108,7 @@ module Datadog
|
|
|
107
108
|
distribution(stat, ((finished - start) * 1000), options)
|
|
108
109
|
end
|
|
109
110
|
rescue StandardError => e
|
|
110
|
-
Datadog
|
|
111
|
+
Datadog.logger.error("Failed to send time stat. Cause: #{e.message} Source: #{e.backtrace.first}")
|
|
111
112
|
end
|
|
112
113
|
end
|
|
113
114
|
|
|
@@ -151,6 +152,12 @@ module Datadog
|
|
|
151
152
|
# and defaults are unfrozen for mutation in Statsd.
|
|
152
153
|
DEFAULT.dup.tap do |options|
|
|
153
154
|
options[:tags] = options[:tags].dup
|
|
155
|
+
|
|
156
|
+
env = Datadog.configuration.env
|
|
157
|
+
options[:tags] << "#{Datadog::Ext::Environment::TAG_ENV}:#{env}" unless env.nil?
|
|
158
|
+
|
|
159
|
+
version = Datadog.configuration.version
|
|
160
|
+
options[:tags] << "#{Datadog::Ext::Environment::TAG_VERSION}:#{version}" unless version.nil?
|
|
154
161
|
end
|
|
155
162
|
end
|
|
156
163
|
end
|
data/lib/ddtrace/monkey.rb
CHANGED
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
require 'ddtrace/span'
|
|
2
|
+
require 'ddtrace/opentelemetry/span'
|
|
3
|
+
|
|
4
|
+
module Datadog
|
|
5
|
+
module OpenTelemetry
|
|
6
|
+
# Defines extensions to ddtrace for OpenTelemetry support
|
|
7
|
+
module Extensions
|
|
8
|
+
def self.extended(base)
|
|
9
|
+
Datadog::Span.send(:prepend, OpenTelemetry::Span)
|
|
10
|
+
end
|
|
11
|
+
end
|
|
12
|
+
end
|
|
13
|
+
end
|
|
@@ -0,0 +1,33 @@
|
|
|
1
|
+
require 'ddtrace/ext/environment'
|
|
2
|
+
|
|
3
|
+
module Datadog
|
|
4
|
+
module OpenTelemetry
|
|
5
|
+
# Extensions for Datadog::Span
|
|
6
|
+
module Span
|
|
7
|
+
TAG_SERVICE_NAME = 'service.name'.freeze
|
|
8
|
+
TAG_SERVICE_VERSION = 'service.version'.freeze
|
|
9
|
+
|
|
10
|
+
def set_tag(key, value)
|
|
11
|
+
# Configure sampling priority if they give us a forced tracing tag
|
|
12
|
+
# DEV: Do not set if the value they give us is explicitly "false"
|
|
13
|
+
case key
|
|
14
|
+
when TAG_SERVICE_NAME
|
|
15
|
+
if defined?(super)
|
|
16
|
+
# Set original tag and Datadog version tag
|
|
17
|
+
self.service = value
|
|
18
|
+
super
|
|
19
|
+
end
|
|
20
|
+
when TAG_SERVICE_VERSION
|
|
21
|
+
if defined?(super)
|
|
22
|
+
# Set original tag and Datadog version tag
|
|
23
|
+
super
|
|
24
|
+
super(Datadog::Ext::Environment::TAG_VERSION, value)
|
|
25
|
+
end
|
|
26
|
+
else
|
|
27
|
+
# Otherwise, set the tag normally.
|
|
28
|
+
super if defined?(super)
|
|
29
|
+
end
|
|
30
|
+
end
|
|
31
|
+
end
|
|
32
|
+
end
|
|
33
|
+
end
|
data/lib/ddtrace/pin.rb
CHANGED
|
@@ -12,26 +12,36 @@ module Datadog
|
|
|
12
12
|
obj.datadog_pin
|
|
13
13
|
end
|
|
14
14
|
|
|
15
|
-
attr_reader :service_name
|
|
16
15
|
attr_accessor :app
|
|
17
|
-
attr_accessor :tags
|
|
18
16
|
attr_accessor :app_type
|
|
19
|
-
attr_accessor :name
|
|
20
|
-
attr_accessor :tracer
|
|
21
17
|
attr_accessor :config
|
|
18
|
+
attr_accessor :name
|
|
19
|
+
attr_accessor :service_name
|
|
20
|
+
attr_accessor :tags
|
|
21
|
+
attr_reader :tracer
|
|
22
|
+
attr_accessor :writer
|
|
23
|
+
|
|
24
|
+
alias service= service_name=
|
|
25
|
+
alias service service_name
|
|
22
26
|
|
|
23
27
|
def initialize(service_name, options = {})
|
|
28
|
+
deprecation_warning unless options[:tracer].is_a?(Proc) || options[:tracer].nil?
|
|
29
|
+
|
|
24
30
|
@app = options[:app]
|
|
25
|
-
@tags = options[:tags]
|
|
26
31
|
@app_type = options[:app_type]
|
|
27
|
-
@name = nil # this would rarely be overriden as it's really span-specific
|
|
28
|
-
@tracer = options[:tracer] || Datadog.tracer
|
|
29
32
|
@config = options[:config]
|
|
30
|
-
|
|
33
|
+
@name = nil # this would rarely be overriden as it's really span-specific
|
|
34
|
+
@service_name = service_name
|
|
35
|
+
@tags = options[:tags]
|
|
36
|
+
@tracer = options[:tracer]
|
|
37
|
+
end
|
|
38
|
+
|
|
39
|
+
def tracer
|
|
40
|
+
@tracer.is_a?(Proc) ? @tracer.call : (@tracer || Datadog.tracer)
|
|
31
41
|
end
|
|
32
42
|
|
|
33
43
|
def enabled?
|
|
34
|
-
return
|
|
44
|
+
return tracer.enabled if tracer
|
|
35
45
|
false
|
|
36
46
|
end
|
|
37
47
|
|
|
@@ -56,15 +66,29 @@ module Datadog
|
|
|
56
66
|
obj.datadog_pin = self
|
|
57
67
|
end
|
|
58
68
|
|
|
59
|
-
def
|
|
60
|
-
|
|
69
|
+
def to_s
|
|
70
|
+
"Pin(service:#{service},app:#{app},app_type:#{app_type},name:#{name})"
|
|
71
|
+
end
|
|
72
|
+
|
|
73
|
+
private
|
|
74
|
+
|
|
75
|
+
DEPRECATION_WARNING = %(
|
|
76
|
+
Explicitly providing a tracer instance is DEPRECATED.
|
|
77
|
+
It's recommended to not provide an explicit tracer instance
|
|
78
|
+
and let Datadog::Pin resolve the correct tracer internally.
|
|
79
|
+
).freeze
|
|
80
|
+
|
|
81
|
+
def deprecation_warning
|
|
82
|
+
log_deprecation_warning('Datadog::Pin.new')
|
|
61
83
|
end
|
|
62
84
|
|
|
63
|
-
|
|
64
|
-
alias service service_name
|
|
85
|
+
include Datadog::Patcher
|
|
65
86
|
|
|
66
|
-
def
|
|
67
|
-
|
|
87
|
+
def log_deprecation_warning(method_name)
|
|
88
|
+
# Only log each deprecation warning once (safeguard against log spam)
|
|
89
|
+
do_once(method_name) do
|
|
90
|
+
Datadog.logger.warn("#{method_name}:#{DEPRECATION_WARNING}")
|
|
91
|
+
end
|
|
68
92
|
end
|
|
69
93
|
end
|
|
70
94
|
|
|
@@ -107,7 +131,7 @@ module Datadog
|
|
|
107
131
|
def log_deprecation_warning(method_name)
|
|
108
132
|
# Only log each deprecation warning once (safeguard against log spam)
|
|
109
133
|
do_once(method_name) do
|
|
110
|
-
Datadog
|
|
134
|
+
Datadog.logger.warn("#{method_name}:#{DEPRECATION_WARNING}")
|
|
111
135
|
end
|
|
112
136
|
end
|
|
113
137
|
end
|