ddtrace 0.40.0 → 0.54.1
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/.editorconfig +22 -0
- data/.gitignore +7 -1
- data/CHANGELOG.md +1667 -350
- data/CONTRIBUTING.md +3 -7
- data/LICENSE-3rdparty.csv +2 -0
- data/README.md +1 -0
- data/bin/ddtracerb +15 -0
- data/ddtrace.gemspec +21 -37
- data/docs/DevelopmentGuide.md +56 -8
- data/docs/GettingStarted.md +438 -92
- data/docs/ProfilingDevelopment.md +107 -0
- data/ext/ddtrace_profiling_native_extension/NativeExtensionDesign.md +86 -0
- data/ext/ddtrace_profiling_native_extension/clock_id.h +4 -0
- data/ext/ddtrace_profiling_native_extension/clock_id_from_pthread.c +52 -0
- data/ext/ddtrace_profiling_native_extension/clock_id_noop.c +14 -0
- data/ext/ddtrace_profiling_native_extension/extconf.rb +166 -0
- data/ext/ddtrace_profiling_native_extension/private_vm_api_access.c +35 -0
- data/ext/ddtrace_profiling_native_extension/private_vm_api_access.h +3 -0
- data/ext/ddtrace_profiling_native_extension/profiling.c +22 -0
- data/lib/datadog/ci/configuration/components.rb +31 -0
- data/lib/datadog/ci/configuration/settings.rb +37 -0
- data/lib/datadog/ci/context_flush.rb +29 -0
- data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +31 -0
- data/lib/datadog/ci/contrib/cucumber/ext.rb +20 -0
- data/lib/datadog/ci/contrib/cucumber/formatter.rb +99 -0
- data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +27 -0
- data/lib/datadog/ci/contrib/cucumber/integration.rb +48 -0
- data/lib/datadog/ci/contrib/cucumber/patcher.rb +26 -0
- data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +31 -0
- data/lib/datadog/ci/contrib/rspec/example.rb +75 -0
- data/lib/datadog/ci/contrib/rspec/ext.rb +19 -0
- data/lib/datadog/ci/contrib/rspec/integration.rb +49 -0
- data/lib/datadog/ci/contrib/rspec/patcher.rb +26 -0
- data/lib/datadog/ci/ext/app_types.rb +10 -0
- data/lib/datadog/ci/ext/environment.rb +485 -0
- data/lib/datadog/ci/ext/settings.rb +11 -0
- data/lib/datadog/ci/ext/test.rb +36 -0
- data/lib/datadog/ci/extensions.rb +18 -0
- data/lib/datadog/ci/test.rb +81 -0
- data/lib/datadog/ci.rb +17 -0
- data/lib/datadog/contrib.rb +71 -0
- data/lib/datadog/core/environment/cgroup.rb +52 -0
- data/lib/datadog/core/environment/class_count.rb +20 -0
- data/lib/datadog/core/environment/container.rb +91 -0
- data/lib/datadog/core/environment/ext.rb +27 -0
- data/lib/datadog/core/environment/gc.rb +19 -0
- data/lib/datadog/core/environment/identity.rb +51 -0
- data/lib/datadog/core/environment/socket.rb +17 -0
- data/lib/datadog/core/environment/thread_count.rb +19 -0
- data/lib/datadog/core/environment/variable_helpers.rb +42 -0
- data/lib/datadog/core/environment/vm_cache.rb +46 -0
- data/lib/ddtrace/analytics.rb +3 -0
- data/lib/ddtrace/auto_instrument.rb +5 -0
- data/lib/ddtrace/auto_instrument_base.rb +7 -0
- data/lib/ddtrace/buffer.rb +278 -57
- data/lib/ddtrace/chunker.rb +1 -0
- data/lib/ddtrace/configuration/agent_settings_resolver.rb +309 -0
- data/lib/ddtrace/configuration/base.rb +9 -11
- data/lib/ddtrace/configuration/components.rb +167 -26
- data/lib/ddtrace/configuration/dependency_resolver.rb +1 -0
- data/lib/ddtrace/configuration/option.rb +1 -0
- data/lib/ddtrace/configuration/option_definition.rb +2 -3
- data/lib/ddtrace/configuration/option_definition_set.rb +1 -0
- data/lib/ddtrace/configuration/option_set.rb +1 -0
- data/lib/ddtrace/configuration/options.rb +10 -10
- data/lib/ddtrace/configuration/pin_setup.rb +1 -0
- data/lib/ddtrace/configuration/settings.rb +147 -13
- data/lib/ddtrace/configuration.rb +133 -22
- data/lib/ddtrace/context.rb +51 -22
- data/lib/ddtrace/context_flush.rb +15 -2
- data/lib/ddtrace/context_provider.rb +17 -5
- data/lib/ddtrace/contrib/action_cable/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/action_cable/event.rb +6 -4
- data/lib/ddtrace/contrib/action_cable/events/broadcast.rb +1 -0
- data/lib/ddtrace/contrib/action_cable/events/perform_action.rb +1 -0
- data/lib/ddtrace/contrib/action_cable/events/transmit.rb +1 -0
- data/lib/ddtrace/contrib/action_cable/events.rb +1 -0
- data/lib/ddtrace/contrib/action_cable/ext.rb +1 -0
- data/lib/ddtrace/contrib/action_cable/instrumentation.rb +47 -0
- data/lib/ddtrace/contrib/action_cable/integration.rb +8 -0
- data/lib/ddtrace/contrib/action_cable/patcher.rb +2 -0
- data/lib/ddtrace/contrib/action_mailer/configuration/settings.rb +32 -0
- data/lib/ddtrace/contrib/action_mailer/event.rb +50 -0
- data/lib/ddtrace/contrib/action_mailer/events/deliver.rb +54 -0
- data/lib/ddtrace/contrib/action_mailer/events/process.rb +41 -0
- data/lib/ddtrace/contrib/action_mailer/events.rb +31 -0
- data/lib/ddtrace/contrib/action_mailer/ext.rb +32 -0
- data/lib/ddtrace/contrib/action_mailer/integration.rb +45 -0
- data/lib/ddtrace/contrib/action_mailer/patcher.rb +27 -0
- data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +22 -13
- data/lib/ddtrace/contrib/action_pack/action_controller/patcher.rb +2 -1
- data/lib/ddtrace/contrib/action_pack/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/action_pack/ext.rb +1 -0
- data/lib/ddtrace/contrib/action_pack/integration.rb +8 -0
- data/lib/ddtrace/contrib/action_pack/patcher.rb +1 -0
- data/lib/ddtrace/contrib/action_pack/utils.rb +2 -1
- data/lib/ddtrace/contrib/action_view/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/action_view/event.rb +4 -7
- data/lib/ddtrace/contrib/action_view/events/render_partial.rb +2 -0
- data/lib/ddtrace/contrib/action_view/events/render_template.rb +2 -0
- data/lib/ddtrace/contrib/action_view/events.rb +1 -0
- data/lib/ddtrace/contrib/action_view/ext.rb +1 -0
- data/lib/ddtrace/contrib/action_view/instrumentation/partial_renderer.rb +1 -0
- data/lib/ddtrace/contrib/action_view/instrumentation/template_renderer.rb +1 -0
- data/lib/ddtrace/contrib/action_view/integration.rb +8 -0
- data/lib/ddtrace/contrib/action_view/patcher.rb +5 -4
- data/lib/ddtrace/contrib/action_view/utils.rb +2 -1
- data/lib/ddtrace/contrib/active_job/configuration/settings.rb +33 -0
- data/lib/ddtrace/contrib/active_job/event.rb +54 -0
- data/lib/ddtrace/contrib/active_job/events/discard.rb +46 -0
- data/lib/ddtrace/contrib/active_job/events/enqueue.rb +45 -0
- data/lib/ddtrace/contrib/active_job/events/enqueue_at.rb +45 -0
- data/lib/ddtrace/contrib/active_job/events/enqueue_retry.rb +47 -0
- data/lib/ddtrace/contrib/active_job/events/perform.rb +45 -0
- data/lib/ddtrace/contrib/active_job/events/retry_stopped.rb +46 -0
- data/lib/ddtrace/contrib/active_job/events.rb +39 -0
- data/lib/ddtrace/contrib/active_job/ext.rb +32 -0
- data/lib/ddtrace/contrib/active_job/integration.rb +46 -0
- data/lib/ddtrace/contrib/active_job/log_injection.rb +21 -0
- data/lib/ddtrace/contrib/active_job/patcher.rb +33 -0
- data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/active_model_serializers/event.rb +3 -2
- data/lib/ddtrace/contrib/active_model_serializers/events/render.rb +1 -0
- data/lib/ddtrace/contrib/active_model_serializers/events/serialize.rb +1 -0
- data/lib/ddtrace/contrib/active_model_serializers/events.rb +1 -0
- data/lib/ddtrace/contrib/active_model_serializers/ext.rb +1 -0
- data/lib/ddtrace/contrib/active_model_serializers/integration.rb +1 -0
- data/lib/ddtrace/contrib/active_model_serializers/patcher.rb +1 -0
- data/lib/ddtrace/contrib/active_record/configuration/makara_resolver.rb +31 -0
- data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +108 -18
- data/lib/ddtrace/contrib/active_record/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/active_record/event.rb +3 -2
- data/lib/ddtrace/contrib/active_record/events/instantiation.rb +1 -0
- data/lib/ddtrace/contrib/active_record/events/sql.rb +5 -0
- data/lib/ddtrace/contrib/active_record/events.rb +1 -0
- data/lib/ddtrace/contrib/active_record/ext.rb +1 -0
- data/lib/ddtrace/contrib/active_record/integration.rb +8 -0
- data/lib/ddtrace/contrib/active_record/patcher.rb +1 -0
- data/lib/ddtrace/contrib/active_record/utils.rb +69 -21
- data/lib/ddtrace/contrib/active_support/cache/instrumentation.rb +105 -3
- data/lib/ddtrace/contrib/active_support/cache/patcher.rb +26 -4
- data/lib/ddtrace/contrib/active_support/cache/redis.rb +2 -5
- data/lib/ddtrace/contrib/active_support/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/active_support/ext.rb +4 -0
- data/lib/ddtrace/contrib/active_support/integration.rb +8 -1
- data/lib/ddtrace/contrib/active_support/notifications/event.rb +15 -3
- data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +3 -1
- data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +12 -7
- data/lib/ddtrace/contrib/active_support/patcher.rb +1 -0
- data/lib/ddtrace/contrib/analytics.rb +1 -0
- data/lib/ddtrace/contrib/auto_instrument.rb +48 -0
- data/lib/ddtrace/contrib/aws/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/aws/ext.rb +1 -0
- data/lib/ddtrace/contrib/aws/instrumentation.rb +36 -1
- data/lib/ddtrace/contrib/aws/integration.rb +1 -0
- data/lib/ddtrace/contrib/aws/parsed_context.rb +1 -0
- data/lib/ddtrace/contrib/aws/patcher.rb +6 -1
- data/lib/ddtrace/contrib/aws/services.rb +4 -0
- data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/concurrent_ruby/context_composite_executor_service.rb +1 -0
- data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +1 -0
- data/lib/ddtrace/contrib/concurrent_ruby/future_patch.rb +1 -0
- data/lib/ddtrace/contrib/concurrent_ruby/integration.rb +1 -0
- data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +3 -1
- data/lib/ddtrace/contrib/configurable.rb +65 -38
- data/lib/ddtrace/contrib/configuration/resolver.rb +71 -5
- data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +21 -20
- data/lib/ddtrace/contrib/configuration/settings.rb +8 -6
- data/lib/ddtrace/contrib/dalli/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/dalli/ext.rb +1 -0
- data/lib/ddtrace/contrib/dalli/instrumentation.rb +6 -1
- data/lib/ddtrace/contrib/dalli/integration.rb +1 -0
- data/lib/ddtrace/contrib/dalli/patcher.rb +2 -39
- data/lib/ddtrace/contrib/dalli/quantize.rb +1 -0
- data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +3 -0
- data/lib/ddtrace/contrib/delayed_job/ext.rb +3 -0
- data/lib/ddtrace/contrib/delayed_job/integration.rb +1 -0
- data/lib/ddtrace/contrib/delayed_job/patcher.rb +1 -0
- data/lib/ddtrace/contrib/delayed_job/plugin.rb +40 -16
- data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/elasticsearch/ext.rb +1 -0
- data/lib/ddtrace/contrib/elasticsearch/integration.rb +1 -0
- data/lib/ddtrace/contrib/elasticsearch/patcher.rb +6 -0
- data/lib/ddtrace/contrib/elasticsearch/quantize.rb +6 -2
- data/lib/ddtrace/contrib/ethon/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/ethon/easy_patch.rb +15 -11
- data/lib/ddtrace/contrib/ethon/ext.rb +2 -0
- data/lib/ddtrace/contrib/ethon/integration.rb +1 -0
- data/lib/ddtrace/contrib/ethon/multi_patch.rb +6 -1
- data/lib/ddtrace/contrib/ethon/patcher.rb +4 -2
- data/lib/ddtrace/contrib/excon/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/excon/ext.rb +1 -0
- data/lib/ddtrace/contrib/excon/integration.rb +1 -0
- data/lib/ddtrace/contrib/excon/middleware.rb +14 -7
- data/lib/ddtrace/contrib/excon/patcher.rb +1 -0
- data/lib/ddtrace/contrib/extensions.rb +90 -14
- data/lib/ddtrace/contrib/faraday/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/faraday/connection.rb +1 -0
- data/lib/ddtrace/contrib/faraday/ext.rb +1 -0
- data/lib/ddtrace/contrib/faraday/integration.rb +1 -0
- data/lib/ddtrace/contrib/faraday/middleware.rb +6 -3
- data/lib/ddtrace/contrib/faraday/patcher.rb +3 -38
- data/lib/ddtrace/contrib/faraday/rack_builder.rb +1 -0
- data/lib/ddtrace/contrib/grape/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/grape/endpoint.rb +73 -35
- data/lib/ddtrace/contrib/grape/ext.rb +2 -0
- data/lib/ddtrace/contrib/grape/instrumentation.rb +4 -3
- data/lib/ddtrace/contrib/grape/integration.rb +1 -0
- data/lib/ddtrace/contrib/grape/patcher.rb +2 -43
- data/lib/ddtrace/contrib/graphql/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/graphql/ext.rb +1 -0
- data/lib/ddtrace/contrib/graphql/integration.rb +1 -0
- data/lib/ddtrace/contrib/graphql/patcher.rb +1 -0
- data/lib/ddtrace/contrib/grpc/configuration/settings.rb +2 -0
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +6 -1
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +5 -1
- data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +13 -8
- data/lib/ddtrace/contrib/grpc/ext.rb +1 -0
- data/lib/ddtrace/contrib/grpc/integration.rb +1 -0
- data/lib/ddtrace/contrib/grpc/intercept_with_datadog.rb +1 -0
- data/lib/ddtrace/contrib/grpc/patcher.rb +3 -37
- data/lib/ddtrace/contrib/http/circuit_breaker.rb +2 -3
- data/lib/ddtrace/contrib/http/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/http/ext.rb +1 -0
- data/lib/ddtrace/contrib/http/instrumentation.rb +13 -8
- data/lib/ddtrace/contrib/http/integration.rb +1 -0
- data/lib/ddtrace/contrib/http/patcher.rb +2 -1
- data/lib/ddtrace/contrib/http_annotation_helper.rb +1 -0
- data/lib/ddtrace/contrib/httpclient/configuration/settings.rb +33 -0
- data/lib/ddtrace/contrib/httpclient/ext.rb +18 -0
- data/lib/ddtrace/contrib/httpclient/instrumentation.rb +148 -0
- data/lib/ddtrace/contrib/httpclient/integration.rb +44 -0
- data/lib/ddtrace/contrib/httpclient/patcher.rb +39 -0
- data/lib/ddtrace/contrib/httprb/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/httprb/ext.rb +1 -0
- data/lib/ddtrace/contrib/httprb/instrumentation.rb +20 -22
- data/lib/ddtrace/contrib/httprb/integration.rb +1 -0
- data/lib/ddtrace/contrib/httprb/patcher.rb +8 -4
- data/lib/ddtrace/contrib/integration.rb +4 -3
- data/lib/ddtrace/contrib/kafka/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/kafka/consumer_event.rb +1 -0
- data/lib/ddtrace/contrib/kafka/consumer_group_event.rb +1 -0
- data/lib/ddtrace/contrib/kafka/event.rb +4 -3
- data/lib/ddtrace/contrib/kafka/events/connection/request.rb +1 -0
- data/lib/ddtrace/contrib/kafka/events/consumer/process_batch.rb +1 -0
- data/lib/ddtrace/contrib/kafka/events/consumer/process_message.rb +1 -0
- data/lib/ddtrace/contrib/kafka/events/consumer_group/heartbeat.rb +1 -0
- data/lib/ddtrace/contrib/kafka/events/consumer_group/join_group.rb +1 -0
- data/lib/ddtrace/contrib/kafka/events/consumer_group/leave_group.rb +1 -0
- data/lib/ddtrace/contrib/kafka/events/consumer_group/sync_group.rb +1 -0
- data/lib/ddtrace/contrib/kafka/events/produce_operation/send_messages.rb +1 -0
- data/lib/ddtrace/contrib/kafka/events/producer/deliver_messages.rb +1 -0
- data/lib/ddtrace/contrib/kafka/events.rb +1 -0
- data/lib/ddtrace/contrib/kafka/ext.rb +1 -0
- data/lib/ddtrace/contrib/kafka/integration.rb +1 -0
- data/lib/ddtrace/contrib/kafka/patcher.rb +1 -0
- data/lib/ddtrace/contrib/lograge/configuration/settings.rb +19 -0
- data/lib/ddtrace/contrib/lograge/ext.rb +11 -0
- data/lib/ddtrace/contrib/lograge/instrumentation.rb +39 -0
- data/lib/ddtrace/contrib/lograge/integration.rb +46 -0
- data/lib/ddtrace/contrib/lograge/patcher.rb +26 -0
- data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/mongodb/ext.rb +1 -0
- data/lib/ddtrace/contrib/mongodb/instrumentation.rb +6 -3
- data/lib/ddtrace/contrib/mongodb/integration.rb +6 -0
- data/lib/ddtrace/contrib/mongodb/parsers.rb +1 -0
- data/lib/ddtrace/contrib/mongodb/patcher.rb +3 -2
- data/lib/ddtrace/contrib/mongodb/subscribers.rb +7 -3
- data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/mysql2/ext.rb +1 -0
- data/lib/ddtrace/contrib/mysql2/instrumentation.rb +6 -1
- data/lib/ddtrace/contrib/mysql2/integration.rb +1 -0
- data/lib/ddtrace/contrib/mysql2/patcher.rb +2 -1
- data/lib/ddtrace/contrib/patchable.rb +21 -9
- data/lib/ddtrace/contrib/patcher.rb +12 -8
- data/lib/ddtrace/contrib/presto/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/presto/ext.rb +1 -0
- data/lib/ddtrace/contrib/presto/instrumentation.rb +5 -1
- data/lib/ddtrace/contrib/presto/integration.rb +1 -0
- data/lib/ddtrace/contrib/presto/patcher.rb +7 -3
- data/lib/ddtrace/contrib/qless/configuration/settings.rb +36 -0
- data/lib/ddtrace/contrib/qless/ext.rb +21 -0
- data/lib/ddtrace/contrib/qless/integration.rb +39 -0
- data/lib/ddtrace/contrib/qless/patcher.rb +35 -0
- data/lib/ddtrace/contrib/qless/qless_job.rb +74 -0
- data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +34 -0
- data/lib/ddtrace/contrib/que/configuration/settings.rb +2 -0
- data/lib/ddtrace/contrib/que/ext.rb +20 -19
- data/lib/ddtrace/contrib/que/integration.rb +1 -0
- data/lib/ddtrace/contrib/que/patcher.rb +1 -0
- data/lib/ddtrace/contrib/que/tracer.rb +4 -2
- data/lib/ddtrace/contrib/racecar/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/racecar/event.rb +8 -2
- data/lib/ddtrace/contrib/racecar/events/batch.rb +1 -0
- data/lib/ddtrace/contrib/racecar/events/consume.rb +1 -0
- data/lib/ddtrace/contrib/racecar/events/message.rb +1 -0
- data/lib/ddtrace/contrib/racecar/events.rb +1 -0
- data/lib/ddtrace/contrib/racecar/ext.rb +1 -0
- data/lib/ddtrace/contrib/racecar/integration.rb +1 -0
- data/lib/ddtrace/contrib/racecar/patcher.rb +1 -0
- data/lib/ddtrace/contrib/rack/configuration/settings.rb +4 -3
- data/lib/ddtrace/contrib/rack/ext.rb +1 -0
- data/lib/ddtrace/contrib/rack/integration.rb +8 -0
- data/lib/ddtrace/contrib/rack/middlewares.rb +8 -12
- data/lib/ddtrace/contrib/rack/patcher.rb +2 -3
- data/lib/ddtrace/contrib/rack/request_queue.rb +7 -1
- data/lib/ddtrace/contrib/rails/auto_instrument_railtie.rb +10 -0
- data/lib/ddtrace/contrib/rails/configuration/settings.rb +8 -0
- data/lib/ddtrace/contrib/rails/ext.rb +1 -0
- data/lib/ddtrace/contrib/rails/framework.rb +50 -2
- data/lib/ddtrace/contrib/rails/integration.rb +1 -0
- data/lib/ddtrace/contrib/rails/log_injection.rb +1 -40
- data/lib/ddtrace/contrib/rails/middlewares.rb +1 -0
- data/lib/ddtrace/contrib/rails/patcher.rb +47 -17
- data/lib/ddtrace/contrib/rails/railtie.rb +1 -0
- data/lib/ddtrace/contrib/rails/utils.rb +5 -0
- data/lib/ddtrace/contrib/rake/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/rake/ext.rb +1 -0
- data/lib/ddtrace/contrib/rake/instrumentation.rb +6 -3
- data/lib/ddtrace/contrib/rake/integration.rb +2 -1
- data/lib/ddtrace/contrib/rake/patcher.rb +2 -1
- data/lib/ddtrace/contrib/redis/configuration/resolver.rb +15 -5
- data/lib/ddtrace/contrib/redis/configuration/settings.rb +6 -0
- data/lib/ddtrace/contrib/redis/ext.rb +2 -0
- data/lib/ddtrace/contrib/redis/instrumentation.rb +90 -0
- data/lib/ddtrace/contrib/redis/integration.rb +1 -0
- data/lib/ddtrace/contrib/redis/patcher.rb +3 -67
- data/lib/ddtrace/contrib/redis/quantize.rb +29 -0
- data/lib/ddtrace/contrib/redis/tags.rb +10 -1
- data/lib/ddtrace/contrib/redis/vendor/LICENSE +20 -0
- data/lib/ddtrace/contrib/redis/vendor/resolver.rb +7 -7
- data/lib/ddtrace/contrib/registerable.rb +4 -4
- data/lib/ddtrace/contrib/registry.rb +3 -2
- data/lib/ddtrace/contrib/resque/configuration/settings.rb +19 -1
- data/lib/ddtrace/contrib/resque/ext.rb +1 -0
- data/lib/ddtrace/contrib/resque/integration.rb +2 -5
- data/lib/ddtrace/contrib/resque/patcher.rb +5 -4
- data/lib/ddtrace/contrib/resque/resque_job.rb +26 -2
- data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/rest_client/ext.rb +1 -0
- data/lib/ddtrace/contrib/rest_client/integration.rb +1 -0
- data/lib/ddtrace/contrib/rest_client/patcher.rb +3 -1
- data/lib/ddtrace/contrib/rest_client/request_patch.rb +7 -4
- data/lib/ddtrace/contrib/semantic_logger/configuration/settings.rb +19 -0
- data/lib/ddtrace/contrib/semantic_logger/ext.rb +11 -0
- data/lib/ddtrace/contrib/semantic_logger/instrumentation.rb +43 -0
- data/lib/ddtrace/contrib/semantic_logger/integration.rb +48 -0
- data/lib/ddtrace/contrib/semantic_logger/patcher.rb +26 -0
- data/lib/ddtrace/contrib/sequel/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/sequel/database.rb +5 -2
- data/lib/ddtrace/contrib/sequel/dataset.rb +5 -3
- data/lib/ddtrace/contrib/sequel/ext.rb +2 -0
- data/lib/ddtrace/contrib/sequel/integration.rb +1 -0
- data/lib/ddtrace/contrib/sequel/patcher.rb +3 -2
- data/lib/ddtrace/contrib/sequel/utils.rb +16 -5
- data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +3 -0
- data/lib/ddtrace/contrib/shoryuken/ext.rb +1 -0
- data/lib/ddtrace/contrib/shoryuken/integration.rb +1 -0
- data/lib/ddtrace/contrib/shoryuken/patcher.rb +1 -0
- data/lib/ddtrace/contrib/shoryuken/tracer.rb +9 -2
- data/lib/ddtrace/contrib/sidekiq/client_tracer.rb +1 -0
- data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +2 -0
- data/lib/ddtrace/contrib/sidekiq/ext.rb +4 -0
- data/lib/ddtrace/contrib/sidekiq/integration.rb +11 -0
- data/lib/ddtrace/contrib/sidekiq/patcher.rb +27 -0
- data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/heartbeat.rb +30 -0
- data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/job_fetch.rb +30 -0
- data/lib/ddtrace/contrib/sidekiq/server_internal_tracer/scheduled_push.rb +29 -0
- data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +6 -7
- data/lib/ddtrace/contrib/sidekiq/tracing.rb +1 -1
- data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/sinatra/env.rb +4 -4
- data/lib/ddtrace/contrib/sinatra/ext.rb +1 -0
- data/lib/ddtrace/contrib/sinatra/headers.rb +2 -3
- data/lib/ddtrace/contrib/sinatra/integration.rb +1 -0
- data/lib/ddtrace/contrib/sinatra/patcher.rb +3 -1
- data/lib/ddtrace/contrib/sinatra/tracer.rb +28 -7
- data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +13 -6
- data/lib/ddtrace/contrib/sneakers/configuration/settings.rb +2 -0
- data/lib/ddtrace/contrib/sneakers/ext.rb +12 -11
- data/lib/ddtrace/contrib/sneakers/integration.rb +1 -0
- data/lib/ddtrace/contrib/sneakers/patcher.rb +1 -0
- data/lib/ddtrace/contrib/sneakers/tracer.rb +17 -21
- data/lib/ddtrace/contrib/status_code_matcher.rb +70 -0
- data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/sucker_punch/exception_handler.rb +5 -6
- data/lib/ddtrace/contrib/sucker_punch/ext.rb +1 -0
- data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +5 -0
- data/lib/ddtrace/contrib/sucker_punch/integration.rb +1 -0
- data/lib/ddtrace/contrib/sucker_punch/patcher.rb +2 -0
- data/lib/ddtrace/correlation.rb +3 -1
- data/lib/ddtrace/diagnostics/environment_logger.rb +9 -7
- data/lib/ddtrace/diagnostics/health.rb +1 -0
- data/lib/ddtrace/distributed_tracing/headers/b3.rb +1 -0
- data/lib/ddtrace/distributed_tracing/headers/b3_single.rb +1 -0
- data/lib/ddtrace/distributed_tracing/headers/datadog.rb +1 -0
- data/lib/ddtrace/distributed_tracing/headers/headers.rb +2 -0
- data/lib/ddtrace/distributed_tracing/headers/helpers.rb +2 -3
- data/lib/ddtrace/encoding.rb +3 -0
- data/lib/ddtrace/error.rb +78 -8
- data/lib/ddtrace/event.rb +1 -0
- data/lib/ddtrace/ext/analytics.rb +1 -0
- data/lib/ddtrace/ext/app_types.rb +1 -0
- data/lib/ddtrace/ext/correlation.rb +1 -0
- data/lib/ddtrace/ext/diagnostics.rb +1 -0
- data/lib/ddtrace/ext/distributed.rb +9 -2
- data/lib/ddtrace/ext/environment.rb +8 -0
- data/lib/ddtrace/ext/errors.rb +1 -0
- data/lib/ddtrace/ext/forced_tracing.rb +1 -0
- data/lib/ddtrace/ext/git.rb +32 -0
- data/lib/ddtrace/ext/http.rb +2 -1
- data/lib/ddtrace/ext/integration.rb +9 -0
- data/lib/ddtrace/ext/manual_tracing.rb +1 -0
- data/lib/ddtrace/ext/metrics.rb +1 -0
- data/lib/ddtrace/ext/net.rb +1 -0
- data/lib/ddtrace/ext/priority.rb +7 -4
- data/lib/ddtrace/ext/profiling.rb +57 -0
- data/lib/ddtrace/ext/runtime.rb +5 -6
- data/lib/ddtrace/ext/sampling.rb +1 -0
- data/lib/ddtrace/ext/sql.rb +1 -0
- data/lib/ddtrace/ext/test.rb +9 -0
- data/lib/ddtrace/ext/transport.rb +14 -0
- data/lib/ddtrace/forced_tracing.rb +3 -0
- data/lib/ddtrace/logger.rb +2 -1
- data/lib/ddtrace/metrics.rb +84 -24
- data/lib/ddtrace/opentelemetry/extensions.rb +2 -1
- data/lib/ddtrace/opentelemetry/span.rb +1 -0
- data/lib/ddtrace/opentracer/binary_propagator.rb +1 -0
- data/lib/ddtrace/opentracer/carrier.rb +1 -0
- data/lib/ddtrace/opentracer/distributed_headers.rb +5 -1
- data/lib/ddtrace/opentracer/global_tracer.rb +1 -0
- data/lib/ddtrace/opentracer/propagator.rb +1 -0
- data/lib/ddtrace/opentracer/rack_propagator.rb +1 -0
- data/lib/ddtrace/opentracer/scope.rb +1 -0
- data/lib/ddtrace/opentracer/scope_manager.rb +1 -0
- data/lib/ddtrace/opentracer/span.rb +3 -6
- data/lib/ddtrace/opentracer/span_context.rb +1 -0
- data/lib/ddtrace/opentracer/span_context_factory.rb +1 -0
- data/lib/ddtrace/opentracer/text_map_propagator.rb +1 -0
- data/lib/ddtrace/opentracer/thread_local_scope.rb +2 -0
- data/lib/ddtrace/opentracer/thread_local_scope_manager.rb +1 -0
- data/lib/ddtrace/opentracer/tracer.rb +1 -0
- data/lib/ddtrace/opentracer.rb +21 -39
- data/lib/ddtrace/patcher.rb +28 -6
- data/lib/ddtrace/pin.rb +9 -61
- data/lib/ddtrace/pipeline/span_filter.rb +2 -1
- data/lib/ddtrace/pipeline/span_processor.rb +1 -0
- data/lib/ddtrace/pipeline.rb +1 -0
- data/lib/ddtrace/profiling/backtrace_location.rb +33 -0
- data/lib/ddtrace/profiling/buffer.rb +42 -0
- data/lib/ddtrace/profiling/collectors/stack.rb +301 -0
- data/lib/ddtrace/profiling/encoding/profile.rb +46 -0
- data/lib/ddtrace/profiling/event.rb +14 -0
- data/lib/ddtrace/profiling/events/stack.rb +81 -0
- data/lib/ddtrace/profiling/exporter.rb +24 -0
- data/lib/ddtrace/profiling/ext/forking.rb +98 -0
- data/lib/ddtrace/profiling/flush.rb +44 -0
- data/lib/ddtrace/profiling/native_extension.rb +40 -0
- data/lib/ddtrace/profiling/pprof/builder.rb +126 -0
- data/lib/ddtrace/profiling/pprof/converter.rb +103 -0
- data/lib/ddtrace/profiling/pprof/message_set.rb +15 -0
- data/lib/ddtrace/profiling/pprof/payload.rb +19 -0
- data/lib/ddtrace/profiling/pprof/pprof.proto +212 -0
- data/lib/ddtrace/profiling/pprof/pprof_pb.rb +82 -0
- data/lib/ddtrace/profiling/pprof/stack_sample.rb +140 -0
- data/lib/ddtrace/profiling/pprof/string_table.rb +11 -0
- data/lib/ddtrace/profiling/pprof/template.rb +119 -0
- data/lib/ddtrace/profiling/preload.rb +4 -0
- data/lib/ddtrace/profiling/profiler.rb +31 -0
- data/lib/ddtrace/profiling/recorder.rb +96 -0
- data/lib/ddtrace/profiling/scheduler.rb +134 -0
- data/lib/ddtrace/profiling/tasks/setup.rb +90 -0
- data/lib/ddtrace/profiling/trace_identifiers/ddtrace.rb +42 -0
- data/lib/ddtrace/profiling/trace_identifiers/helper.rb +46 -0
- data/lib/ddtrace/profiling/transport/client.rb +15 -0
- data/lib/ddtrace/profiling/transport/http/api/endpoint.rb +101 -0
- data/lib/ddtrace/profiling/transport/http/api/instance.rb +37 -0
- data/lib/ddtrace/profiling/transport/http/api/spec.rb +41 -0
- data/lib/ddtrace/profiling/transport/http/api.rb +44 -0
- data/lib/ddtrace/profiling/transport/http/builder.rb +29 -0
- data/lib/ddtrace/profiling/transport/http/client.rb +34 -0
- data/lib/ddtrace/profiling/transport/http/response.rb +22 -0
- data/lib/ddtrace/profiling/transport/http.rb +111 -0
- data/lib/ddtrace/profiling/transport/io/client.rb +28 -0
- data/lib/ddtrace/profiling/transport/io/response.rb +17 -0
- data/lib/ddtrace/profiling/transport/io.rb +31 -0
- data/lib/ddtrace/profiling/transport/parcel.rb +18 -0
- data/lib/ddtrace/profiling/transport/request.rb +16 -0
- data/lib/ddtrace/profiling/transport/response.rb +9 -0
- data/lib/ddtrace/profiling.rb +149 -0
- data/lib/ddtrace/propagation/grpc_propagator.rb +20 -6
- data/lib/ddtrace/propagation/http_propagator.rb +18 -2
- data/lib/ddtrace/quantization/hash.rb +1 -0
- data/lib/ddtrace/quantization/http.rb +4 -0
- data/lib/ddtrace/runtime/metrics.rb +40 -15
- data/lib/ddtrace/sampler.rb +22 -11
- data/lib/ddtrace/sampling/matcher.rb +1 -0
- data/lib/ddtrace/sampling/rate_limiter.rb +66 -16
- data/lib/ddtrace/sampling/rule.rb +2 -1
- data/lib/ddtrace/sampling/rule_sampler.rb +19 -11
- data/lib/ddtrace/sampling.rb +1 -0
- data/lib/ddtrace/span.rb +174 -36
- data/lib/ddtrace/sync_writer.rb +17 -15
- data/lib/ddtrace/tasks/exec.rb +47 -0
- data/lib/ddtrace/tasks/help.rb +15 -0
- data/lib/ddtrace/tracer.rb +72 -62
- data/lib/ddtrace/transport/http/adapters/net.rb +48 -12
- data/lib/ddtrace/transport/http/adapters/registry.rb +2 -0
- data/lib/ddtrace/transport/http/adapters/test.rb +5 -2
- data/lib/ddtrace/transport/http/adapters/unix_socket.rb +26 -16
- data/lib/ddtrace/transport/http/api/endpoint.rb +1 -0
- data/lib/ddtrace/transport/http/api/fallbacks.rb +1 -0
- data/lib/ddtrace/transport/http/api/instance.rb +1 -0
- data/lib/ddtrace/transport/http/api/map.rb +1 -0
- data/lib/ddtrace/transport/http/api/spec.rb +1 -0
- data/lib/ddtrace/transport/http/api.rb +1 -0
- data/lib/ddtrace/transport/http/builder.rb +21 -7
- data/lib/ddtrace/transport/http/client.rb +3 -1
- data/lib/ddtrace/transport/http/env.rb +9 -0
- data/lib/ddtrace/transport/http/response.rb +1 -0
- data/lib/ddtrace/transport/http/statistics.rb +17 -3
- data/lib/ddtrace/transport/http/traces.rb +6 -6
- data/lib/ddtrace/transport/http.rb +48 -41
- data/lib/ddtrace/transport/io/client.rb +17 -9
- data/lib/ddtrace/transport/io/response.rb +2 -3
- data/lib/ddtrace/transport/io/traces.rb +10 -1
- data/lib/ddtrace/transport/io.rb +2 -1
- data/lib/ddtrace/transport/parcel.rb +7 -0
- data/lib/ddtrace/transport/request.rb +1 -0
- data/lib/ddtrace/transport/response.rb +1 -0
- data/lib/ddtrace/transport/statistics.rb +1 -0
- data/lib/ddtrace/transport/traces.rb +28 -5
- data/lib/ddtrace/utils/compression.rb +28 -0
- data/lib/ddtrace/utils/database.rb +1 -0
- data/lib/ddtrace/utils/forking.rb +53 -0
- data/lib/ddtrace/utils/object_set.rb +40 -0
- data/lib/ddtrace/utils/only_once.rb +41 -0
- data/lib/ddtrace/utils/sequence.rb +18 -0
- data/lib/ddtrace/utils/string_table.rb +46 -0
- data/lib/ddtrace/utils/time.rb +40 -3
- data/lib/ddtrace/utils.rb +29 -14
- data/lib/ddtrace/vendor/active_record/MIT-LICENSE +20 -0
- data/lib/ddtrace/vendor/active_record/connection_specification.rb +1 -0
- data/lib/ddtrace/vendor/multipart-post/LICENSE +11 -0
- data/lib/ddtrace/vendor/multipart-post/multipart/post/composite_read_io.rb +117 -0
- data/lib/ddtrace/vendor/multipart-post/multipart/post/multipartable.rb +58 -0
- data/lib/ddtrace/vendor/multipart-post/multipart/post/parts.rb +136 -0
- data/lib/ddtrace/vendor/multipart-post/multipart/post/version.rb +10 -0
- data/lib/ddtrace/vendor/multipart-post/multipart/post.rb +9 -0
- data/lib/ddtrace/vendor/multipart-post/multipart.rb +13 -0
- data/lib/ddtrace/vendor/multipart-post/net/http/post/multipart.rb +33 -0
- data/lib/ddtrace/version.rb +16 -3
- data/lib/ddtrace/worker.rb +1 -0
- data/lib/ddtrace/workers/async.rb +15 -5
- data/lib/ddtrace/workers/loop.rb +32 -5
- data/lib/ddtrace/workers/polling.rb +13 -5
- data/lib/ddtrace/workers/queue.rb +3 -1
- data/lib/ddtrace/workers/runtime_metrics.rb +22 -4
- data/lib/ddtrace/workers/trace_writer.rb +14 -16
- data/lib/ddtrace/workers.rb +8 -2
- data/lib/ddtrace/writer.rb +33 -8
- data/lib/ddtrace.rb +22 -48
- metadata +180 -374
- data/.circleci/config.yml +0 -548
- data/.circleci/images/primary/Dockerfile-2.0.0 +0 -73
- data/.circleci/images/primary/Dockerfile-2.1.10 +0 -73
- data/.circleci/images/primary/Dockerfile-2.2.10 +0 -73
- data/.circleci/images/primary/Dockerfile-2.3.8 +0 -75
- data/.circleci/images/primary/Dockerfile-2.4.6 +0 -73
- data/.circleci/images/primary/Dockerfile-2.5.6 +0 -73
- data/.circleci/images/primary/Dockerfile-2.6.4 +0 -73
- data/.circleci/images/primary/Dockerfile-2.7.0 +0 -73
- data/.circleci/images/primary/Dockerfile-jruby-9.2 +0 -77
- data/.dockerignore +0 -1
- data/.env +0 -26
- data/.github/CODEOWNERS +0 -1
- data/.gitlab-ci.yml +0 -27
- data/.rspec +0 -1
- data/.rubocop.yml +0 -85
- data/.simplecov +0 -38
- data/Appraisals +0 -1071
- data/Gemfile +0 -7
- data/Rakefile +0 -791
- data/benchmarks/postgres_database.yml +0 -9
- data/benchmarks/sidekiq_test.rb +0 -154
- data/docker-compose.yml +0 -370
- data/lib/ddtrace/augmentation/method_wrapper.rb +0 -20
- data/lib/ddtrace/augmentation/method_wrapping.rb +0 -38
- data/lib/ddtrace/augmentation/shim.rb +0 -102
- data/lib/ddtrace/augmentation.rb +0 -13
- data/lib/ddtrace/environment.rb +0 -41
- data/lib/ddtrace/monkey.rb +0 -58
- data/lib/ddtrace/runtime/cgroup.rb +0 -44
- data/lib/ddtrace/runtime/class_count.rb +0 -17
- data/lib/ddtrace/runtime/container.rb +0 -73
- data/lib/ddtrace/runtime/gc.rb +0 -16
- data/lib/ddtrace/runtime/identity.rb +0 -41
- data/lib/ddtrace/runtime/object_space.rb +0 -19
- data/lib/ddtrace/runtime/socket.rb +0 -14
- data/lib/ddtrace/runtime/thread_count.rb +0 -16
- data/tasks/release_gem.rake +0 -28
data/lib/ddtrace/tracer.rb
CHANGED
|
@@ -1,16 +1,18 @@
|
|
|
1
|
-
|
|
2
|
-
require 'thread'
|
|
1
|
+
# typed: true
|
|
3
2
|
require 'logger'
|
|
4
3
|
require 'pathname'
|
|
5
4
|
|
|
6
|
-
require 'ddtrace/environment'
|
|
5
|
+
require 'ddtrace/ext/environment'
|
|
7
6
|
require 'ddtrace/span'
|
|
8
7
|
require 'ddtrace/context'
|
|
9
8
|
require 'ddtrace/logger'
|
|
10
9
|
require 'ddtrace/writer'
|
|
10
|
+
require 'datadog/core/environment/identity'
|
|
11
11
|
require 'ddtrace/sampler'
|
|
12
12
|
require 'ddtrace/sampling'
|
|
13
13
|
require 'ddtrace/correlation'
|
|
14
|
+
require 'ddtrace/event'
|
|
15
|
+
require 'ddtrace/utils/only_once'
|
|
14
16
|
|
|
15
17
|
# \Datadog global namespace that includes all tracing functionality for Tracer and Span classes.
|
|
16
18
|
module Datadog
|
|
@@ -20,6 +22,9 @@ module Datadog
|
|
|
20
22
|
# of these function calls and sub-requests would be encapsulated within a single trace.
|
|
21
23
|
# rubocop:disable Metrics/ClassLength
|
|
22
24
|
class Tracer
|
|
25
|
+
SERVICES_DEPRECATION_WARN_ONLY_ONCE = Datadog::Utils::OnlyOnce.new
|
|
26
|
+
SET_SERVICE_INFO_DEPRECATION_WARN_ONLY_ONCE = Datadog::Utils::OnlyOnce.new
|
|
27
|
+
|
|
23
28
|
attr_reader :sampler, :tags, :provider, :context_flush
|
|
24
29
|
attr_accessor :enabled, :writer
|
|
25
30
|
attr_writer :default_service
|
|
@@ -28,8 +33,7 @@ module Datadog
|
|
|
28
33
|
DEFAULT_ON_ERROR = proc { |span, error| span.set_error(error) unless span.nil? }
|
|
29
34
|
|
|
30
35
|
def services
|
|
31
|
-
|
|
32
|
-
Datadog::Patcher.do_once('Tracer#set_service_info') do
|
|
36
|
+
SERVICES_DEPRECATION_WARN_ONLY_ONCE.run do
|
|
33
37
|
Datadog.logger.warn('services: Usage of Tracer.services has been deprecated')
|
|
34
38
|
end
|
|
35
39
|
|
|
@@ -60,8 +64,8 @@ module Datadog
|
|
|
60
64
|
#
|
|
61
65
|
# This method makes use of a \ContextProvider that is automatically set during the tracer
|
|
62
66
|
# initialization, or while using a library instrumentation.
|
|
63
|
-
def call_context
|
|
64
|
-
@provider.context
|
|
67
|
+
def call_context(key = nil)
|
|
68
|
+
@provider.context(key)
|
|
65
69
|
end
|
|
66
70
|
|
|
67
71
|
# Initialize a new \Tracer used to create, sample and submit spans that measure the
|
|
@@ -71,7 +75,9 @@ module Datadog
|
|
|
71
75
|
# by default.
|
|
72
76
|
def initialize(options = {})
|
|
73
77
|
# Configurable options
|
|
74
|
-
@context_flush = if options[:
|
|
78
|
+
@context_flush = if options[:context_flush]
|
|
79
|
+
options[:context_flush]
|
|
80
|
+
elsif options[:partial_flush]
|
|
75
81
|
Datadog::ContextFlush::Partial.new(options)
|
|
76
82
|
else
|
|
77
83
|
Datadog::ContextFlush::Finished.new
|
|
@@ -79,14 +85,13 @@ module Datadog
|
|
|
79
85
|
|
|
80
86
|
@default_service = options[:default_service]
|
|
81
87
|
@enabled = options.fetch(:enabled, true)
|
|
82
|
-
@provider = options
|
|
88
|
+
@provider = options[:context_provider] || Datadog::DefaultContextProvider.new
|
|
83
89
|
@sampler = options.fetch(:sampler, Datadog::AllSampler.new)
|
|
84
90
|
@tags = options.fetch(:tags, {})
|
|
85
|
-
@writer = options.fetch(:writer
|
|
91
|
+
@writer = options.fetch(:writer) { Datadog::Writer.new }
|
|
86
92
|
|
|
87
93
|
# Instance variables
|
|
88
94
|
@mutex = Mutex.new
|
|
89
|
-
@provider ||= Datadog::DefaultContextProvider.new # @provider should never be nil
|
|
90
95
|
|
|
91
96
|
# Enable priority sampling by default
|
|
92
97
|
activate_priority_sampling!(@sampler)
|
|
@@ -115,8 +120,10 @@ module Datadog
|
|
|
115
120
|
|
|
116
121
|
configure_writer(options)
|
|
117
122
|
|
|
118
|
-
if options.key?(:partial_flush)
|
|
119
|
-
@context_flush = if options[:
|
|
123
|
+
if options.key?(:context_flush) || options.key?(:partial_flush)
|
|
124
|
+
@context_flush = if options[:context_flush]
|
|
125
|
+
options[:context_flush]
|
|
126
|
+
elsif options[:partial_flush]
|
|
120
127
|
Datadog::ContextFlush::Partial.new(options)
|
|
121
128
|
else
|
|
122
129
|
Datadog::ContextFlush::Finished.new
|
|
@@ -130,8 +137,7 @@ module Datadog
|
|
|
130
137
|
#
|
|
131
138
|
# set_service_info is deprecated, no service information needs to be tracked
|
|
132
139
|
def set_service_info(service, app, app_type)
|
|
133
|
-
|
|
134
|
-
Datadog::Patcher.do_once('Tracer#set_service_info') do
|
|
140
|
+
SET_SERVICE_INFO_DEPRECATION_WARN_ONLY_ONCE.run do
|
|
135
141
|
Datadog.logger.warn(%(
|
|
136
142
|
set_service_info: Usage of set_service_info has been deprecated,
|
|
137
143
|
service information no longer needs to be reported to the trace agent.
|
|
@@ -143,14 +149,7 @@ module Datadog
|
|
|
143
149
|
# for non-root spans which have a parent. However, root spans without
|
|
144
150
|
# a service would be invalid and rejected.
|
|
145
151
|
def default_service
|
|
146
|
-
|
|
147
|
-
begin
|
|
148
|
-
@default_service = File.basename($PROGRAM_NAME, '.*')
|
|
149
|
-
rescue StandardError => e
|
|
150
|
-
Datadog.logger.error("unable to guess default service: #{e}")
|
|
151
|
-
@default_service = 'ruby'.freeze
|
|
152
|
-
end
|
|
153
|
-
@default_service
|
|
152
|
+
@default_service ||= Datadog::Ext::Environment::FALLBACK_SERVICE_NAME
|
|
154
153
|
end
|
|
155
154
|
|
|
156
155
|
# Set the given key / value tag pair at the tracer level. These tags will be
|
|
@@ -159,7 +158,7 @@ module Datadog
|
|
|
159
158
|
#
|
|
160
159
|
# tracer.set_tags('env' => 'prod', 'component' => 'core')
|
|
161
160
|
def set_tags(tags)
|
|
162
|
-
string_tags =
|
|
161
|
+
string_tags = tags.collect { |k, v| [k.to_s, v] }.to_h
|
|
163
162
|
@tags = @tags.merge(string_tags)
|
|
164
163
|
end
|
|
165
164
|
|
|
@@ -186,8 +185,7 @@ module Datadog
|
|
|
186
185
|
# * +start_time+: when the span actually starts (defaults to \now)
|
|
187
186
|
# * +tags+: extra tags which should be added to the span.
|
|
188
187
|
def start_span(name, options = {})
|
|
189
|
-
start_time = options
|
|
190
|
-
|
|
188
|
+
start_time = options[:start_time]
|
|
191
189
|
tags = options.fetch(:tags, {})
|
|
192
190
|
|
|
193
191
|
span_options = options.select do |k, _v|
|
|
@@ -202,7 +200,8 @@ module Datadog
|
|
|
202
200
|
if parent.nil?
|
|
203
201
|
# root span
|
|
204
202
|
@sampler.sample!(span)
|
|
205
|
-
span.set_tag(
|
|
203
|
+
span.set_tag(Datadog::Ext::Runtime::TAG_PID, Process.pid)
|
|
204
|
+
span.set_tag(Datadog::Ext::Runtime::TAG_ID, Datadog::Core::Environment::Identity.id)
|
|
206
205
|
|
|
207
206
|
if ctx && ctx.trace_id
|
|
208
207
|
span.trace_id = ctx.trace_id
|
|
@@ -212,9 +211,10 @@ module Datadog
|
|
|
212
211
|
# child span
|
|
213
212
|
span.parent = parent # sets service, trace_id, parent_id, sampled
|
|
214
213
|
end
|
|
214
|
+
|
|
215
215
|
span.set_tags(@tags) unless @tags.empty?
|
|
216
216
|
span.set_tags(tags) unless tags.empty?
|
|
217
|
-
span.start_time
|
|
217
|
+
span.start(start_time)
|
|
218
218
|
|
|
219
219
|
# this could at some point be optional (start_active_span vs start_manual_span)
|
|
220
220
|
ctx.add_span(span) unless ctx.nil?
|
|
@@ -288,8 +288,19 @@ module Datadog
|
|
|
288
288
|
# and it is user code which should be executed no matter what.
|
|
289
289
|
# It's not a problem since we re-raise it afterwards so for example a
|
|
290
290
|
# SignalException::Interrupt would still bubble up.
|
|
291
|
+
# rubocop:disable Metrics/BlockNesting
|
|
291
292
|
rescue Exception => e
|
|
292
|
-
(options[:on_error]
|
|
293
|
+
if (on_error_handler = options[:on_error]) && on_error_handler.respond_to?(:call)
|
|
294
|
+
begin
|
|
295
|
+
on_error_handler.call(span, e)
|
|
296
|
+
rescue
|
|
297
|
+
Datadog.logger.debug('Custom on_error handler failed, falling back to default')
|
|
298
|
+
DEFAULT_ON_ERROR.call(span, e)
|
|
299
|
+
end
|
|
300
|
+
else
|
|
301
|
+
Datadog.logger.debug('Custom on_error handler must be a callable, falling back to default') if on_error_handler
|
|
302
|
+
DEFAULT_ON_ERROR.call(span, e)
|
|
303
|
+
end
|
|
293
304
|
raise e
|
|
294
305
|
ensure
|
|
295
306
|
span.finish unless span.nil?
|
|
@@ -301,6 +312,10 @@ module Datadog
|
|
|
301
312
|
end
|
|
302
313
|
end
|
|
303
314
|
|
|
315
|
+
def trace_completed
|
|
316
|
+
@trace_completed ||= TraceCompleted.new
|
|
317
|
+
end
|
|
318
|
+
|
|
304
319
|
# Record the given +context+. For compatibility with previous versions,
|
|
305
320
|
# +context+ can also be a span. It is similar to the +child_of+ argument,
|
|
306
321
|
# method will figure out what to do, submitting a +span+ for recording
|
|
@@ -325,18 +340,18 @@ module Datadog
|
|
|
325
340
|
end
|
|
326
341
|
|
|
327
342
|
# Return the current active span or +nil+.
|
|
328
|
-
def active_span
|
|
329
|
-
call_context.current_span
|
|
343
|
+
def active_span(key = nil)
|
|
344
|
+
call_context(key).current_span
|
|
330
345
|
end
|
|
331
346
|
|
|
332
347
|
# Return the current active root span or +nil+.
|
|
333
|
-
def active_root_span
|
|
334
|
-
call_context.current_root_span
|
|
348
|
+
def active_root_span(key = nil)
|
|
349
|
+
call_context(key).current_root_span
|
|
335
350
|
end
|
|
336
351
|
|
|
337
352
|
# Return a CorrelationIdentifier for active span
|
|
338
|
-
def active_correlation
|
|
339
|
-
Datadog::Correlation.identifier_from_context(call_context)
|
|
353
|
+
def active_correlation(key = nil)
|
|
354
|
+
Datadog::Correlation.identifier_from_context(call_context(key))
|
|
340
355
|
end
|
|
341
356
|
|
|
342
357
|
# Send the trace to the writer to enqueue the spans list in the agent
|
|
@@ -352,24 +367,34 @@ module Datadog
|
|
|
352
367
|
end
|
|
353
368
|
|
|
354
369
|
@writer.write(trace)
|
|
370
|
+
trace_completed.publish(trace)
|
|
371
|
+
end
|
|
372
|
+
|
|
373
|
+
# Triggered whenever a trace is completed
|
|
374
|
+
class TraceCompleted < Datadog::Event
|
|
375
|
+
def initialize
|
|
376
|
+
super(:trace_completed)
|
|
377
|
+
end
|
|
378
|
+
|
|
379
|
+
# NOTE: Ignore Rubocop rule. This definition allows for
|
|
380
|
+
# description of and constraints on arguments.
|
|
381
|
+
# rubocop:disable Lint/UselessMethodDefinition
|
|
382
|
+
def publish(trace)
|
|
383
|
+
super(trace)
|
|
384
|
+
end
|
|
385
|
+
# rubocop:enable Lint/UselessMethodDefinition
|
|
355
386
|
end
|
|
356
387
|
|
|
357
388
|
# TODO: Move this kind of configuration building out of the tracer.
|
|
358
389
|
# Tracer should not have this kind of knowledge of writer.
|
|
359
|
-
# rubocop:disable Metrics/PerceivedComplexity
|
|
360
|
-
# rubocop:disable Metrics/CyclomaticComplexity
|
|
361
|
-
# rubocop:disable Metrics/MethodLength
|
|
362
390
|
def configure_writer(options = {})
|
|
363
|
-
hostname = options.fetch(:hostname, nil)
|
|
364
|
-
port = options.fetch(:port, nil)
|
|
365
391
|
sampler = options.fetch(:sampler, nil)
|
|
366
392
|
priority_sampling = options.fetch(:priority_sampling, nil)
|
|
367
393
|
writer = options.fetch(:writer, nil)
|
|
368
|
-
|
|
394
|
+
agent_settings = options.fetch(:agent_settings, nil)
|
|
369
395
|
|
|
370
396
|
# Compile writer options
|
|
371
397
|
writer_options = options.fetch(:writer_options, {}).dup
|
|
372
|
-
rebuild_writer = !writer_options.empty?
|
|
373
398
|
|
|
374
399
|
# Re-build the sampler and writer if priority sampling is enabled,
|
|
375
400
|
# but neither are configured. Verify the sampler isn't already a
|
|
@@ -382,35 +407,20 @@ module Datadog
|
|
|
382
407
|
end
|
|
383
408
|
elsif priority_sampling != false && !@sampler.is_a?(PrioritySampler)
|
|
384
409
|
writer_options[:priority_sampler] = activate_priority_sampling!(@sampler)
|
|
385
|
-
rebuild_writer = true
|
|
386
410
|
elsif priority_sampling == false
|
|
387
411
|
deactivate_priority_sampling!(sampler)
|
|
388
|
-
rebuild_writer = true
|
|
389
412
|
elsif @sampler.is_a?(PrioritySampler)
|
|
390
413
|
# Make sure to add sampler to options if transport is rebuilt.
|
|
391
414
|
writer_options[:priority_sampler] = @sampler
|
|
392
415
|
end
|
|
393
416
|
|
|
394
|
-
|
|
395
|
-
if transport_options.is_a?(Proc)
|
|
396
|
-
transport_options = { on_build: transport_options }
|
|
397
|
-
rebuild_writer = true
|
|
398
|
-
end
|
|
399
|
-
|
|
400
|
-
if hostname || port
|
|
401
|
-
transport_options[:hostname] = hostname unless hostname.nil?
|
|
402
|
-
transport_options[:port] = port unless port.nil?
|
|
403
|
-
rebuild_writer = true
|
|
404
|
-
end
|
|
417
|
+
writer_options[:agent_settings] = agent_settings if agent_settings
|
|
405
418
|
|
|
406
|
-
|
|
419
|
+
# Make sure old writer is shut down before throwing away.
|
|
420
|
+
# Don't want additional threads running...
|
|
421
|
+
@writer.stop unless writer.nil?
|
|
407
422
|
|
|
408
|
-
|
|
409
|
-
# Make sure old writer is shut down before throwing away.
|
|
410
|
-
# Don't want additional threads running...
|
|
411
|
-
@writer.stop unless writer.nil?
|
|
412
|
-
@writer = writer || Writer.new(writer_options)
|
|
413
|
-
end
|
|
423
|
+
@writer = writer || Writer.new(writer_options)
|
|
414
424
|
end
|
|
415
425
|
|
|
416
426
|
def activate_priority_sampling!(base_sampler = nil)
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
# typed: true
|
|
1
2
|
require 'ddtrace/transport/response'
|
|
3
|
+
require 'ddtrace/vendor/multipart-post/net/http/post/multipart'
|
|
2
4
|
|
|
3
5
|
module Datadog
|
|
4
6
|
module Transport
|
|
@@ -9,21 +11,38 @@ module Datadog
|
|
|
9
11
|
attr_reader \
|
|
10
12
|
:hostname,
|
|
11
13
|
:port,
|
|
12
|
-
:timeout
|
|
14
|
+
:timeout,
|
|
15
|
+
:ssl
|
|
13
16
|
|
|
14
|
-
DEFAULT_TIMEOUT =
|
|
17
|
+
DEFAULT_TIMEOUT = 30
|
|
15
18
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
@
|
|
19
|
+
# @deprecated Positional parameters are deprecated. Use named parameters instead.
|
|
20
|
+
def initialize(hostname = nil, port = nil, **options)
|
|
21
|
+
@hostname = hostname || options.fetch(:hostname)
|
|
22
|
+
@port = port || options.fetch(:port)
|
|
19
23
|
@timeout = options[:timeout] || DEFAULT_TIMEOUT
|
|
24
|
+
@ssl = options.key?(:ssl) ? options[:ssl] == true : false
|
|
20
25
|
end
|
|
21
26
|
|
|
22
|
-
def
|
|
23
|
-
|
|
24
|
-
|
|
25
|
-
|
|
26
|
-
|
|
27
|
+
def self.build(agent_settings)
|
|
28
|
+
new(
|
|
29
|
+
hostname: agent_settings.hostname,
|
|
30
|
+
port: agent_settings.port,
|
|
31
|
+
timeout: agent_settings.timeout_seconds,
|
|
32
|
+
ssl: agent_settings.ssl
|
|
33
|
+
)
|
|
34
|
+
end
|
|
35
|
+
|
|
36
|
+
def open(&block)
|
|
37
|
+
# DEV Initializing +Net::HTTP+ directly help us avoid expensive
|
|
38
|
+
# options processing done in +Net::HTTP.start+:
|
|
39
|
+
# https://github.com/ruby/ruby/blob/b2d96abb42abbe2e01f010ffc9ac51f0f9a50002/lib/net/http.rb#L614-L618
|
|
40
|
+
req = ::Net::HTTP.new(hostname, port, nil)
|
|
41
|
+
|
|
42
|
+
req.use_ssl = ssl
|
|
43
|
+
req.open_timeout = req.read_timeout = timeout
|
|
44
|
+
|
|
45
|
+
req.start(&block)
|
|
27
46
|
end
|
|
28
47
|
|
|
29
48
|
def call(env)
|
|
@@ -35,8 +54,18 @@ module Datadog
|
|
|
35
54
|
end
|
|
36
55
|
|
|
37
56
|
def post(env)
|
|
38
|
-
post =
|
|
39
|
-
|
|
57
|
+
post = nil
|
|
58
|
+
|
|
59
|
+
if env.form.nil? || env.form.empty?
|
|
60
|
+
post = ::Net::HTTP::Post.new(env.path, env.headers)
|
|
61
|
+
post.body = env.body
|
|
62
|
+
else
|
|
63
|
+
post = ::Datadog::Vendor::Net::HTTP::Post::Multipart.new(
|
|
64
|
+
env.path,
|
|
65
|
+
env.form,
|
|
66
|
+
env.headers
|
|
67
|
+
)
|
|
68
|
+
end
|
|
40
69
|
|
|
41
70
|
# Connect and send the request
|
|
42
71
|
http_response = open do |http|
|
|
@@ -76,36 +105,43 @@ module Datadog
|
|
|
76
105
|
|
|
77
106
|
def payload
|
|
78
107
|
return super if http_response.nil?
|
|
108
|
+
|
|
79
109
|
http_response.body
|
|
80
110
|
end
|
|
81
111
|
|
|
82
112
|
def code
|
|
83
113
|
return super if http_response.nil?
|
|
114
|
+
|
|
84
115
|
http_response.code.to_i
|
|
85
116
|
end
|
|
86
117
|
|
|
87
118
|
def ok?
|
|
88
119
|
return super if http_response.nil?
|
|
120
|
+
|
|
89
121
|
code.between?(200, 299)
|
|
90
122
|
end
|
|
91
123
|
|
|
92
124
|
def unsupported?
|
|
93
125
|
return super if http_response.nil?
|
|
126
|
+
|
|
94
127
|
code == 415
|
|
95
128
|
end
|
|
96
129
|
|
|
97
130
|
def not_found?
|
|
98
131
|
return super if http_response.nil?
|
|
132
|
+
|
|
99
133
|
code == 404
|
|
100
134
|
end
|
|
101
135
|
|
|
102
136
|
def client_error?
|
|
103
137
|
return super if http_response.nil?
|
|
138
|
+
|
|
104
139
|
code.between?(400, 499)
|
|
105
140
|
end
|
|
106
141
|
|
|
107
142
|
def server_error?
|
|
108
143
|
return super if http_response.nil?
|
|
144
|
+
|
|
109
145
|
code.between?(500, 599)
|
|
110
146
|
end
|
|
111
147
|
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# typed: true
|
|
1
2
|
require 'ddtrace/transport/response'
|
|
2
3
|
|
|
3
4
|
module Datadog
|
|
@@ -10,8 +11,10 @@ module Datadog
|
|
|
10
11
|
:buffer,
|
|
11
12
|
:status
|
|
12
13
|
|
|
13
|
-
|
|
14
|
-
|
|
14
|
+
# @param buffer [Array] an optional array that will capture all spans sent to this adapter, defaults to +nil+
|
|
15
|
+
# @deprecated Positional parameters are deprecated. Use named parameters instead.
|
|
16
|
+
def initialize(buffer = nil, **options)
|
|
17
|
+
@buffer = buffer || options[:buffer]
|
|
15
18
|
@mutex = Mutex.new
|
|
16
19
|
@status = 200
|
|
17
20
|
end
|
|
@@ -1,4 +1,6 @@
|
|
|
1
|
+
# typed: false
|
|
1
2
|
require 'net/http'
|
|
3
|
+
require 'ddtrace/ext/transport'
|
|
2
4
|
require 'ddtrace/transport/http/adapters/net'
|
|
3
5
|
|
|
4
6
|
module Datadog
|
|
@@ -7,32 +9,38 @@ module Datadog
|
|
|
7
9
|
module Adapters
|
|
8
10
|
# Adapter for Unix sockets
|
|
9
11
|
class UnixSocket < Adapters::Net
|
|
10
|
-
DEFAULT_TIMEOUT = 1
|
|
11
|
-
|
|
12
12
|
attr_reader \
|
|
13
|
-
:filepath,
|
|
13
|
+
:filepath, # DEV(1.0): Rename to `uds_path`
|
|
14
14
|
:timeout
|
|
15
15
|
|
|
16
|
-
|
|
17
|
-
|
|
18
|
-
|
|
16
|
+
alias_method :uds_path, :filepath
|
|
17
|
+
|
|
18
|
+
# @deprecated Positional parameters are deprecated. Use named parameters instead.
|
|
19
|
+
def initialize(uds_path = nil, **options)
|
|
20
|
+
@filepath = uds_path || options.fetch(:uds_path)
|
|
21
|
+
@timeout = options[:timeout] || Ext::Transport::UnixSocket::DEFAULT_TIMEOUT_SECONDS
|
|
19
22
|
end
|
|
20
23
|
|
|
21
|
-
def
|
|
24
|
+
def self.build(agent_settings)
|
|
25
|
+
new(
|
|
26
|
+
uds_path: agent_settings.uds_path,
|
|
27
|
+
timeout: agent_settings.timeout_seconds,
|
|
28
|
+
)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def open(&block)
|
|
22
32
|
# Open connection
|
|
23
33
|
connection = HTTP.new(
|
|
24
|
-
|
|
34
|
+
uds_path,
|
|
25
35
|
read_timeout: timeout,
|
|
26
36
|
continue_timeout: timeout
|
|
27
37
|
)
|
|
28
38
|
|
|
29
|
-
connection.start
|
|
30
|
-
yield(http)
|
|
31
|
-
end
|
|
39
|
+
connection.start(&block)
|
|
32
40
|
end
|
|
33
41
|
|
|
34
42
|
def url
|
|
35
|
-
"http+unix://#{
|
|
43
|
+
"http+unix://#{uds_path}?timeout=#{timeout}"
|
|
36
44
|
end
|
|
37
45
|
|
|
38
46
|
# Re-implements Net:HTTP with underlying Unix socket
|
|
@@ -40,19 +48,21 @@ module Datadog
|
|
|
40
48
|
DEFAULT_TIMEOUT = 1
|
|
41
49
|
|
|
42
50
|
attr_reader \
|
|
43
|
-
:filepath,
|
|
51
|
+
:filepath, # DEV(1.0): Rename to `uds_path`
|
|
44
52
|
:unix_socket
|
|
45
53
|
|
|
46
|
-
|
|
54
|
+
alias_method :uds_path, :filepath
|
|
55
|
+
|
|
56
|
+
def initialize(uds_path, options = {})
|
|
47
57
|
super('localhost', 80)
|
|
48
|
-
@filepath =
|
|
58
|
+
@filepath = uds_path
|
|
49
59
|
@read_timeout = options.fetch(:read_timeout, DEFAULT_TIMEOUT)
|
|
50
60
|
@continue_timeout = options.fetch(:continue_timeout, DEFAULT_TIMEOUT)
|
|
51
61
|
@debug_output = options[:debug_output] if options.key?(:debug_output)
|
|
52
62
|
end
|
|
53
63
|
|
|
54
64
|
def connect
|
|
55
|
-
@unix_socket = UNIXSocket.open(
|
|
65
|
+
@unix_socket = UNIXSocket.open(uds_path)
|
|
56
66
|
@socket = ::Net::BufferedIO.new(@unix_socket).tap do |socket|
|
|
57
67
|
socket.read_timeout = @read_timeout
|
|
58
68
|
socket.continue_timeout = @continue_timeout
|
|
@@ -1,3 +1,5 @@
|
|
|
1
|
+
# typed: true
|
|
2
|
+
require 'ddtrace/configuration/agent_settings_resolver'
|
|
1
3
|
require 'ddtrace/transport/http/adapters/registry'
|
|
2
4
|
require 'ddtrace/transport/http/api/map'
|
|
3
5
|
require 'ddtrace/transport/http/api/instance'
|
|
@@ -32,13 +34,20 @@ module Datadog
|
|
|
32
34
|
yield(self) if block_given?
|
|
33
35
|
end
|
|
34
36
|
|
|
35
|
-
def adapter(
|
|
36
|
-
@default_adapter =
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
registry_klass.
|
|
37
|
+
def adapter(config, *args, **kwargs)
|
|
38
|
+
@default_adapter = case config
|
|
39
|
+
when Configuration::AgentSettingsResolver::AgentSettings
|
|
40
|
+
registry_klass = REGISTRY.get(config.adapter)
|
|
41
|
+
raise UnknownAdapterError, config.adapter if registry_klass.nil?
|
|
42
|
+
|
|
43
|
+
registry_klass.build(config)
|
|
44
|
+
when Symbol
|
|
45
|
+
registry_klass = REGISTRY.get(config)
|
|
46
|
+
raise UnknownAdapterError, config if registry_klass.nil?
|
|
47
|
+
|
|
48
|
+
registry_klass.new(*args, **kwargs)
|
|
40
49
|
else
|
|
41
|
-
|
|
50
|
+
config
|
|
42
51
|
end
|
|
43
52
|
end
|
|
44
53
|
|
|
@@ -67,6 +76,7 @@ module Datadog
|
|
|
67
76
|
|
|
68
77
|
def default_api=(key)
|
|
69
78
|
raise UnknownApiError, key unless @apis.key?(key)
|
|
79
|
+
|
|
70
80
|
@default_api = key
|
|
71
81
|
end
|
|
72
82
|
|
|
@@ -93,7 +103,7 @@ module Datadog
|
|
|
93
103
|
api_options[:headers] = @default_headers.merge((api_options[:headers] || {}))
|
|
94
104
|
|
|
95
105
|
# Add API::Instance with all settings
|
|
96
|
-
instances[key] =
|
|
106
|
+
instances[key] = api_instance_class.new(
|
|
97
107
|
spec,
|
|
98
108
|
adapter,
|
|
99
109
|
api_options
|
|
@@ -105,6 +115,10 @@ module Datadog
|
|
|
105
115
|
end
|
|
106
116
|
end
|
|
107
117
|
|
|
118
|
+
def api_instance_class
|
|
119
|
+
API::Instance
|
|
120
|
+
end
|
|
121
|
+
|
|
108
122
|
# Raised when the API key does not match known APIs.
|
|
109
123
|
class UnknownApiError < StandardError
|
|
110
124
|
attr_reader :key
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# typed: true
|
|
1
2
|
require 'ddtrace/transport/http/statistics'
|
|
2
3
|
require 'ddtrace/transport/http/env'
|
|
3
4
|
|
|
@@ -26,7 +27,8 @@ module Datadog
|
|
|
26
27
|
|
|
27
28
|
response
|
|
28
29
|
rescue StandardError => e
|
|
29
|
-
message =
|
|
30
|
+
message =
|
|
31
|
+
"Internal error during HTTP transport request. Cause: #{e.message} Location: #{Array(e.backtrace).first}"
|
|
30
32
|
|
|
31
33
|
# Log error
|
|
32
34
|
if stats.consecutive_errors > 0
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# typed: true
|
|
1
2
|
module Datadog
|
|
2
3
|
module Transport
|
|
3
4
|
module HTTP
|
|
@@ -42,6 +43,14 @@ module Datadog
|
|
|
42
43
|
def headers=(value)
|
|
43
44
|
self[:headers] = value
|
|
44
45
|
end
|
|
46
|
+
|
|
47
|
+
def form
|
|
48
|
+
self[:form] ||= {}
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
def form=(value)
|
|
52
|
+
self[:form] = value
|
|
53
|
+
end
|
|
45
54
|
end
|
|
46
55
|
end
|
|
47
56
|
end
|