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
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# typed: false
|
|
1
2
|
require 'ddtrace/logger'
|
|
2
3
|
|
|
3
4
|
module Datadog
|
|
@@ -12,13 +13,13 @@ module Datadog
|
|
|
12
13
|
SHUTDOWN_TIMEOUT = 1
|
|
13
14
|
|
|
14
15
|
def self.included(base)
|
|
15
|
-
base.
|
|
16
|
+
base.prepend(PrependedMethods)
|
|
16
17
|
end
|
|
17
18
|
|
|
18
19
|
# Methods that must be prepended
|
|
19
20
|
module PrependedMethods
|
|
20
21
|
def perform(*args)
|
|
21
|
-
|
|
22
|
+
start_async { self.result = super(*args) } unless started?
|
|
22
23
|
end
|
|
23
24
|
end
|
|
24
25
|
|
|
@@ -31,18 +32,22 @@ module Datadog
|
|
|
31
32
|
|
|
32
33
|
def join(timeout = nil)
|
|
33
34
|
return true unless running?
|
|
35
|
+
|
|
34
36
|
!worker.join(timeout).nil?
|
|
35
37
|
end
|
|
36
38
|
|
|
37
39
|
def terminate
|
|
38
40
|
return false unless running?
|
|
41
|
+
|
|
39
42
|
@run_async = false
|
|
43
|
+
Datadog.logger.debug { "Forcibly terminating worker thread for: #{self}" }
|
|
40
44
|
worker.terminate
|
|
41
45
|
true
|
|
42
46
|
end
|
|
43
47
|
|
|
44
48
|
def run_async?
|
|
45
49
|
return false unless instance_variable_defined?(:@run_async)
|
|
50
|
+
|
|
46
51
|
@run_async == true
|
|
47
52
|
end
|
|
48
53
|
|
|
@@ -56,6 +61,7 @@ module Datadog
|
|
|
56
61
|
|
|
57
62
|
def error?
|
|
58
63
|
return false unless instance_variable_defined?(:@error)
|
|
64
|
+
|
|
59
65
|
!@error.nil?
|
|
60
66
|
end
|
|
61
67
|
|
|
@@ -101,9 +107,10 @@ module Datadog
|
|
|
101
107
|
@worker ||= nil
|
|
102
108
|
end
|
|
103
109
|
|
|
104
|
-
def
|
|
110
|
+
def start_async(&block)
|
|
105
111
|
mutex.synchronize do
|
|
106
112
|
return if running?
|
|
113
|
+
|
|
107
114
|
if forked?
|
|
108
115
|
case fork_policy
|
|
109
116
|
when FORK_POLICY_STOP
|
|
@@ -121,7 +128,7 @@ module Datadog
|
|
|
121
128
|
@run_async = true
|
|
122
129
|
@pid = Process.pid
|
|
123
130
|
@error = nil
|
|
124
|
-
Datadog.logger.debug
|
|
131
|
+
Datadog.logger.debug { "Starting thread for: #{self}" }
|
|
125
132
|
|
|
126
133
|
@worker = ::Thread.new do
|
|
127
134
|
begin
|
|
@@ -129,10 +136,13 @@ module Datadog
|
|
|
129
136
|
# rubocop:disable Lint/RescueException
|
|
130
137
|
rescue Exception => e
|
|
131
138
|
@error = e
|
|
132
|
-
Datadog.logger.debug("Worker thread error. Cause #{e.message} Location: #{e.backtrace.first}")
|
|
139
|
+
Datadog.logger.debug("Worker thread error. Cause #{e.message} Location: #{Array(e.backtrace).first}")
|
|
133
140
|
raise
|
|
134
141
|
end
|
|
135
142
|
end
|
|
143
|
+
@worker.name = self.class.name unless Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.3')
|
|
144
|
+
|
|
145
|
+
nil
|
|
136
146
|
end
|
|
137
147
|
|
|
138
148
|
def stop_fork
|
data/lib/ddtrace/workers/loop.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# typed: false
|
|
1
2
|
module Datadog
|
|
2
3
|
module Workers
|
|
3
4
|
# Adds looping behavior to workers, with a sleep
|
|
@@ -8,7 +9,7 @@ module Datadog
|
|
|
8
9
|
BASE_INTERVAL = 1
|
|
9
10
|
|
|
10
11
|
def self.included(base)
|
|
11
|
-
base.
|
|
12
|
+
base.prepend(PrependedMethods)
|
|
12
13
|
end
|
|
13
14
|
|
|
14
15
|
# Methods that must be prepended
|
|
@@ -21,6 +22,7 @@ module Datadog
|
|
|
21
22
|
def stop_loop
|
|
22
23
|
mutex.synchronize do
|
|
23
24
|
return false unless run_loop?
|
|
25
|
+
|
|
24
26
|
@run_loop = false
|
|
25
27
|
shutdown.signal
|
|
26
28
|
end
|
|
@@ -34,6 +36,7 @@ module Datadog
|
|
|
34
36
|
|
|
35
37
|
def run_loop?
|
|
36
38
|
return false unless instance_variable_defined?(:@run_loop)
|
|
39
|
+
|
|
37
40
|
@run_loop == true
|
|
38
41
|
end
|
|
39
42
|
|
|
@@ -53,12 +56,29 @@ module Datadog
|
|
|
53
56
|
@loop_wait_time ||= loop_base_interval
|
|
54
57
|
end
|
|
55
58
|
|
|
59
|
+
def loop_wait_time=(value)
|
|
60
|
+
@loop_wait_time = value
|
|
61
|
+
end
|
|
62
|
+
|
|
63
|
+
def reset_loop_wait_time
|
|
64
|
+
self.loop_wait_time = loop_base_interval
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# Should the loop "back off" when there's no work?
|
|
56
68
|
def loop_back_off?
|
|
57
69
|
false
|
|
58
70
|
end
|
|
59
71
|
|
|
60
|
-
def loop_back_off!
|
|
61
|
-
|
|
72
|
+
def loop_back_off!
|
|
73
|
+
self.loop_wait_time = [loop_wait_time * BACK_OFF_RATIO, BACK_OFF_MAX].min
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
# Should perform_loop just straight into work, or start by waiting?
|
|
77
|
+
#
|
|
78
|
+
# The use case is if we want to report some information (like profiles) from time to time, we may not want to
|
|
79
|
+
# report empty/zero/some residual value immediately when the worker starts.
|
|
80
|
+
def loop_wait_before_first_iteration?
|
|
81
|
+
false
|
|
62
82
|
end
|
|
63
83
|
|
|
64
84
|
protected
|
|
@@ -75,16 +95,22 @@ module Datadog
|
|
|
75
95
|
private
|
|
76
96
|
|
|
77
97
|
def perform_loop
|
|
78
|
-
|
|
98
|
+
mutex.synchronize do
|
|
99
|
+
@run_loop = true
|
|
100
|
+
|
|
101
|
+
shutdown.wait(mutex, loop_wait_time) if loop_wait_before_first_iteration?
|
|
102
|
+
end
|
|
79
103
|
|
|
80
104
|
loop do
|
|
81
105
|
if work_pending?
|
|
106
|
+
# There's work to do...
|
|
82
107
|
# Run the task
|
|
83
108
|
yield
|
|
84
109
|
|
|
85
110
|
# Reset the wait interval
|
|
86
|
-
loop_back_off
|
|
111
|
+
reset_loop_wait_time if loop_back_off?
|
|
87
112
|
elsif loop_back_off?
|
|
113
|
+
# There's no work to do...
|
|
88
114
|
# Back off the wait interval a bit
|
|
89
115
|
loop_back_off!
|
|
90
116
|
end
|
|
@@ -92,6 +118,7 @@ module Datadog
|
|
|
92
118
|
# Wait for an interval, unless shutdown has been signaled.
|
|
93
119
|
mutex.synchronize do
|
|
94
120
|
return unless run_loop? || work_pending?
|
|
121
|
+
|
|
95
122
|
shutdown.wait(mutex, loop_wait_time) if run_loop?
|
|
96
123
|
end
|
|
97
124
|
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# typed: false
|
|
1
2
|
require 'ddtrace/workers/async'
|
|
2
3
|
require 'ddtrace/workers/loop'
|
|
3
4
|
|
|
@@ -8,9 +9,9 @@ module Datadog
|
|
|
8
9
|
SHUTDOWN_TIMEOUT = 1
|
|
9
10
|
|
|
10
11
|
def self.included(base)
|
|
11
|
-
base.
|
|
12
|
-
base.
|
|
13
|
-
base.
|
|
12
|
+
base.include(Workers::IntervalLoop)
|
|
13
|
+
base.include(Workers::Async::Thread)
|
|
14
|
+
base.prepend(PrependedMethods)
|
|
14
15
|
end
|
|
15
16
|
|
|
16
17
|
# Methods that must be prepended
|
|
@@ -26,8 +27,14 @@ module Datadog
|
|
|
26
27
|
stop_loop
|
|
27
28
|
graceful = join(timeout)
|
|
28
29
|
|
|
29
|
-
|
|
30
|
-
|
|
30
|
+
if !graceful && force_stop
|
|
31
|
+
Datadog.logger.debug do
|
|
32
|
+
"Timeout while waiting for worker to finish gracefully, forcing termination for: #{self}"
|
|
33
|
+
end
|
|
34
|
+
terminate
|
|
35
|
+
else
|
|
36
|
+
graceful
|
|
37
|
+
end
|
|
31
38
|
else
|
|
32
39
|
false
|
|
33
40
|
end
|
|
@@ -35,6 +42,7 @@ module Datadog
|
|
|
35
42
|
|
|
36
43
|
def enabled?
|
|
37
44
|
return true unless instance_variable_defined?(:@enabled)
|
|
45
|
+
|
|
38
46
|
@enabled
|
|
39
47
|
end
|
|
40
48
|
|
|
@@ -1,10 +1,11 @@
|
|
|
1
|
+
# typed: false
|
|
1
2
|
module Datadog
|
|
2
3
|
module Workers
|
|
3
4
|
# Adds queue behavior to workers, with a buffer
|
|
4
5
|
# to which items can be queued then dequeued.
|
|
5
6
|
module Queue
|
|
6
7
|
def self.included(base)
|
|
7
|
-
base.
|
|
8
|
+
base.prepend(PrependedMethods)
|
|
8
9
|
end
|
|
9
10
|
|
|
10
11
|
# Methods that must be prepended
|
|
@@ -26,6 +27,7 @@ module Datadog
|
|
|
26
27
|
buffer.shift
|
|
27
28
|
end
|
|
28
29
|
|
|
30
|
+
# Are there more items to be processed next?
|
|
29
31
|
def work_pending?
|
|
30
32
|
!buffer.empty?
|
|
31
33
|
end
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# typed: false
|
|
1
2
|
require 'forwardable'
|
|
2
3
|
|
|
3
4
|
require 'ddtrace/runtime/metrics'
|
|
@@ -12,19 +13,23 @@ module Datadog
|
|
|
12
13
|
extend Forwardable
|
|
13
14
|
include Workers::Polling
|
|
14
15
|
|
|
16
|
+
# In seconds
|
|
17
|
+
DEFAULT_FLUSH_INTERVAL = 10
|
|
18
|
+
DEFAULT_BACK_OFF_MAX = 30
|
|
19
|
+
|
|
15
20
|
attr_reader \
|
|
16
21
|
:metrics
|
|
17
22
|
|
|
18
23
|
def initialize(options = {})
|
|
19
|
-
@metrics = options.fetch(:metrics
|
|
24
|
+
@metrics = options.fetch(:metrics) { Runtime::Metrics.new }
|
|
20
25
|
|
|
21
26
|
# Workers::Async::Thread settings
|
|
22
27
|
self.fork_policy = options.fetch(:fork_policy, Workers::Async::Thread::FORK_POLICY_STOP)
|
|
23
28
|
|
|
24
29
|
# Workers::IntervalLoop settings
|
|
25
|
-
self.
|
|
26
|
-
self.
|
|
27
|
-
self.
|
|
30
|
+
self.loop_base_interval = options.fetch(:interval, DEFAULT_FLUSH_INTERVAL)
|
|
31
|
+
self.loop_back_off_ratio = options[:back_off_ratio] if options.key?(:back_off_ratio)
|
|
32
|
+
self.loop_back_off_max = options.fetch(:back_off_max, DEFAULT_BACK_OFF_MAX)
|
|
28
33
|
|
|
29
34
|
self.enabled = options.fetch(:enabled, false)
|
|
30
35
|
end
|
|
@@ -39,6 +44,19 @@ module Datadog
|
|
|
39
44
|
metrics.associate_with_span(*args).tap { perform }
|
|
40
45
|
end
|
|
41
46
|
|
|
47
|
+
# TODO: `close_metrics` is only needed because
|
|
48
|
+
# Datadog::Components directly manipulates the lifecycle of
|
|
49
|
+
# Runtime::Metrics.statsd instances.
|
|
50
|
+
# This should be avoided, as it prevents this class from
|
|
51
|
+
# ensuring correct resource decommission of its internal
|
|
52
|
+
# dependencies.
|
|
53
|
+
def stop(*args, close_metrics: true)
|
|
54
|
+
self.enabled = false
|
|
55
|
+
result = super(*args)
|
|
56
|
+
@metrics.close if close_metrics
|
|
57
|
+
result
|
|
58
|
+
end
|
|
59
|
+
|
|
42
60
|
def_delegators \
|
|
43
61
|
:metrics,
|
|
44
62
|
:register_service
|
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# typed: false
|
|
1
2
|
require 'ddtrace/logger'
|
|
2
3
|
require 'ddtrace/transport/http'
|
|
3
4
|
|
|
@@ -16,15 +17,10 @@ module Datadog
|
|
|
16
17
|
def initialize(options = {})
|
|
17
18
|
transport_options = options.fetch(:transport_options, {})
|
|
18
19
|
|
|
19
|
-
if
|
|
20
|
-
transport_options = { on_build: transport_options }
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
transport_options[:hostname] = options[:hostname] if options.key?(:hostname)
|
|
24
|
-
transport_options[:port] = options[:port] if options.key?(:port)
|
|
20
|
+
transport_options[:agent_settings] = options[:agent_settings] if options.key?(:agent_settings)
|
|
25
21
|
|
|
26
22
|
@transport = options.fetch(:transport) do
|
|
27
|
-
Transport::HTTP.default(transport_options)
|
|
23
|
+
Transport::HTTP.default(**transport_options)
|
|
28
24
|
end
|
|
29
25
|
end
|
|
30
26
|
|
|
@@ -41,7 +37,7 @@ module Datadog
|
|
|
41
37
|
flush_traces(traces)
|
|
42
38
|
rescue StandardError => e
|
|
43
39
|
Datadog.logger.error(
|
|
44
|
-
"Error while writing traces: dropped #{traces.length} items. Cause: #{e} Location: #{e.backtrace.first}"
|
|
40
|
+
"Error while writing traces: dropped #{traces.length} items. Cause: #{e} Location: #{Array(e.backtrace).first}"
|
|
45
41
|
)
|
|
46
42
|
end
|
|
47
43
|
|
|
@@ -65,10 +61,8 @@ module Datadog
|
|
|
65
61
|
traces.each do |trace|
|
|
66
62
|
next if trace.first.nil?
|
|
67
63
|
|
|
68
|
-
hostname = Datadog::
|
|
69
|
-
unless hostname.nil? || hostname.empty?
|
|
70
|
-
trace.first.set_tag(Ext::NET::TAG_HOSTNAME, hostname)
|
|
71
|
-
end
|
|
64
|
+
hostname = Datadog::Core::Environment::Socket.hostname
|
|
65
|
+
trace.first.set_tag(Ext::NET::TAG_HOSTNAME, hostname) unless hostname.nil? || hostname.empty?
|
|
72
66
|
end
|
|
73
67
|
end
|
|
74
68
|
|
|
@@ -84,10 +78,6 @@ module Datadog
|
|
|
84
78
|
def initialize
|
|
85
79
|
super(:flush_completed)
|
|
86
80
|
end
|
|
87
|
-
|
|
88
|
-
def publish(response)
|
|
89
|
-
super(response)
|
|
90
|
-
end
|
|
91
81
|
end
|
|
92
82
|
end
|
|
93
83
|
|
|
@@ -127,10 +117,15 @@ module Datadog
|
|
|
127
117
|
|
|
128
118
|
# NOTE: #perform is wrapped by other modules:
|
|
129
119
|
# Polling --> Async --> IntervalLoop --> AsyncTraceWriter --> TraceWriter
|
|
120
|
+
#
|
|
121
|
+
# WARNING: This method breaks the Liskov Substitution Principle -- TraceWriter#perform is spec'd to return the
|
|
122
|
+
# result from the writer, whereas this method always returns nil.
|
|
130
123
|
def perform(traces)
|
|
131
124
|
super(traces).tap do |responses|
|
|
132
125
|
loop_back_off! if responses.find(&:server_error?)
|
|
133
126
|
end
|
|
127
|
+
|
|
128
|
+
nil
|
|
134
129
|
end
|
|
135
130
|
|
|
136
131
|
def stop(*args)
|
|
@@ -148,6 +143,7 @@ module Datadog
|
|
|
148
143
|
[buffer.pop]
|
|
149
144
|
end
|
|
150
145
|
|
|
146
|
+
# Are there more traces to be processed next?
|
|
151
147
|
def work_pending?
|
|
152
148
|
!buffer.empty?
|
|
153
149
|
end
|
|
@@ -187,6 +183,8 @@ module Datadog
|
|
|
187
183
|
@async = false if @writer_fork_policy == FORK_POLICY_SYNC
|
|
188
184
|
end
|
|
189
185
|
|
|
186
|
+
# WARNING: This method breaks the Liskov Substitution Principle -- TraceWriter#write is spec'd to return the
|
|
187
|
+
# result from the writer, whereas this method returns something else when running in async mode.
|
|
190
188
|
def write(trace)
|
|
191
189
|
# Start worker thread. If the process has forked, it will trigger #after_fork to
|
|
192
190
|
# reconfigure the worker accordingly.
|
data/lib/ddtrace/workers.rb
CHANGED
|
@@ -1,3 +1,4 @@
|
|
|
1
|
+
# typed: true
|
|
1
2
|
require 'time'
|
|
2
3
|
|
|
3
4
|
require 'ddtrace/workers/trace_writer'
|
|
@@ -58,7 +59,7 @@ module Datadog
|
|
|
58
59
|
# TODO[manu]: findout the reason and reschedule the send if it's not
|
|
59
60
|
# a fatal exception
|
|
60
61
|
Datadog.logger.error(
|
|
61
|
-
"Error during traces flush: dropped #{traces.length} items. Cause: #{e} Location: #{e.backtrace.first}"
|
|
62
|
+
"Error during traces flush: dropped #{traces.length} items. Cause: #{e} Location: #{Array(e.backtrace).first}"
|
|
62
63
|
)
|
|
63
64
|
end
|
|
64
65
|
end
|
|
@@ -67,9 +68,13 @@ module Datadog
|
|
|
67
68
|
def start
|
|
68
69
|
@mutex.synchronize do
|
|
69
70
|
return if @run
|
|
71
|
+
|
|
70
72
|
@run = true
|
|
71
|
-
Datadog.logger.debug
|
|
73
|
+
Datadog.logger.debug { "Starting thread for: #{self}" }
|
|
72
74
|
@worker = Thread.new { perform }
|
|
75
|
+
@worker.name = self.class.name unless Gem::Version.new(RUBY_VERSION) < Gem::Version.new('2.3')
|
|
76
|
+
|
|
77
|
+
nil
|
|
73
78
|
end
|
|
74
79
|
end
|
|
75
80
|
|
|
@@ -108,6 +113,7 @@ module Datadog
|
|
|
108
113
|
|
|
109
114
|
@mutex.synchronize do
|
|
110
115
|
return if !@run && @trace_buffer.empty?
|
|
116
|
+
|
|
111
117
|
@shutdown.wait(@mutex, @back_off) if @run # do not wait when shutting down
|
|
112
118
|
end
|
|
113
119
|
end
|
data/lib/ddtrace/writer.rb
CHANGED
|
@@ -1,17 +1,22 @@
|
|
|
1
|
+
# typed: true
|
|
1
2
|
require 'json'
|
|
2
3
|
|
|
3
4
|
require 'ddtrace/ext/net'
|
|
4
|
-
require '
|
|
5
|
+
require 'datadog/core/environment/socket'
|
|
5
6
|
|
|
7
|
+
require 'ddtrace/configuration/agent_settings_resolver'
|
|
6
8
|
require 'ddtrace/transport/http'
|
|
7
9
|
require 'ddtrace/transport/io'
|
|
8
10
|
require 'ddtrace/encoding'
|
|
9
11
|
require 'ddtrace/workers'
|
|
10
12
|
require 'ddtrace/diagnostics/environment_logger'
|
|
13
|
+
require 'ddtrace/utils/only_once'
|
|
11
14
|
|
|
12
15
|
module Datadog
|
|
13
16
|
# Processor that sends traces and metadata to the agent
|
|
14
17
|
class Writer
|
|
18
|
+
DEPRECATION_WARN_ONLY_ONCE = Datadog::Utils::OnlyOnce.new
|
|
19
|
+
|
|
15
20
|
attr_reader \
|
|
16
21
|
:priority_sampler,
|
|
17
22
|
:transport,
|
|
@@ -23,6 +28,8 @@ module Datadog
|
|
|
23
28
|
@flush_interval = options.fetch(:flush_interval, Workers::AsyncTransport::DEFAULT_FLUSH_INTERVAL)
|
|
24
29
|
transport_options = options.fetch(:transport_options, {})
|
|
25
30
|
|
|
31
|
+
transport_options[:agent_settings] = options[:agent_settings] if options.key?(:agent_settings)
|
|
32
|
+
|
|
26
33
|
# priority sampling
|
|
27
34
|
if options[:priority_sampler]
|
|
28
35
|
@priority_sampler = options[:priority_sampler]
|
|
@@ -31,7 +38,7 @@ module Datadog
|
|
|
31
38
|
|
|
32
39
|
# transport and buffers
|
|
33
40
|
@transport = options.fetch(:transport) do
|
|
34
|
-
Transport::HTTP.default(transport_options)
|
|
41
|
+
Transport::HTTP.default(**transport_options)
|
|
35
42
|
end
|
|
36
43
|
|
|
37
44
|
# handles the thread creation after an eventual fork
|
|
@@ -42,13 +49,23 @@ module Datadog
|
|
|
42
49
|
|
|
43
50
|
# one worker for traces
|
|
44
51
|
@worker = nil
|
|
52
|
+
|
|
53
|
+
# Once stopped, this writer instance cannot be restarted.
|
|
54
|
+
# This allow for graceful shutdown, while preventing
|
|
55
|
+
# the host application from inadvertently start new
|
|
56
|
+
# threads during shutdown.
|
|
57
|
+
@stopped = false
|
|
45
58
|
end
|
|
46
59
|
|
|
47
60
|
def start
|
|
48
61
|
@mutex_after_fork.synchronize do
|
|
62
|
+
return false if @stopped
|
|
63
|
+
|
|
49
64
|
pid = Process.pid
|
|
50
65
|
return if @worker && pid == @pid
|
|
66
|
+
|
|
51
67
|
@pid = pid
|
|
68
|
+
|
|
52
69
|
start_worker
|
|
53
70
|
true
|
|
54
71
|
end
|
|
@@ -67,14 +84,24 @@ module Datadog
|
|
|
67
84
|
@worker.start
|
|
68
85
|
end
|
|
69
86
|
|
|
87
|
+
# Gracefully shuts down this writer.
|
|
88
|
+
#
|
|
89
|
+
# Once stopped methods calls won't fail, but
|
|
90
|
+
# no internal work will be performed.
|
|
91
|
+
#
|
|
92
|
+
# It is not possible to restart a stopped writer instance.
|
|
70
93
|
def stop
|
|
71
94
|
@mutex_after_fork.synchronize { stop_worker }
|
|
72
95
|
end
|
|
73
96
|
|
|
74
97
|
def stop_worker
|
|
98
|
+
@stopped = true
|
|
99
|
+
|
|
75
100
|
return if @worker.nil?
|
|
101
|
+
|
|
76
102
|
@worker.stop
|
|
77
103
|
@worker = nil
|
|
104
|
+
|
|
78
105
|
true
|
|
79
106
|
end
|
|
80
107
|
|
|
@@ -107,7 +134,7 @@ module Datadog
|
|
|
107
134
|
# enqueue the trace for submission to the API
|
|
108
135
|
def write(trace, services = nil)
|
|
109
136
|
unless services.nil?
|
|
110
|
-
|
|
137
|
+
DEPRECATION_WARN_ONLY_ONCE.run do
|
|
111
138
|
Datadog.logger.warn(%(
|
|
112
139
|
write: Writing services has been deprecated and no longer need to be provided.
|
|
113
140
|
write(traces, services) can be updated to write(traces)
|
|
@@ -136,7 +163,7 @@ module Datadog
|
|
|
136
163
|
|
|
137
164
|
if worker_local
|
|
138
165
|
worker_local.enqueue_trace(trace)
|
|
139
|
-
|
|
166
|
+
elsif !@stopped
|
|
140
167
|
Datadog.logger.debug('Writer either failed to start or was stopped before #write could complete')
|
|
141
168
|
end
|
|
142
169
|
end
|
|
@@ -155,10 +182,8 @@ module Datadog
|
|
|
155
182
|
traces.each do |trace|
|
|
156
183
|
next if trace.first.nil?
|
|
157
184
|
|
|
158
|
-
hostname = Datadog::
|
|
159
|
-
unless hostname.nil? || hostname.empty?
|
|
160
|
-
trace.first.set_tag(Ext::NET::TAG_HOSTNAME, hostname)
|
|
161
|
-
end
|
|
185
|
+
hostname = Datadog::Core::Environment::Socket.hostname
|
|
186
|
+
trace.first.set_tag(Ext::NET::TAG_HOSTNAME, hostname) unless hostname.nil? || hostname.empty?
|
|
162
187
|
end
|
|
163
188
|
end
|
|
164
189
|
|
data/lib/ddtrace.rb
CHANGED
|
@@ -1,5 +1,4 @@
|
|
|
1
|
-
|
|
2
|
-
|
|
1
|
+
# typed: strict
|
|
3
2
|
# During development, we load `ddtrace` by through `ddtrace.gemspec`,
|
|
4
3
|
# which in turn eager loads 'ddtrace/version'.
|
|
5
4
|
#
|
|
@@ -15,64 +14,39 @@ require 'ddtrace/quantization/http'
|
|
|
15
14
|
require 'ddtrace/pipeline'
|
|
16
15
|
require 'ddtrace/configuration'
|
|
17
16
|
require 'ddtrace/patcher'
|
|
18
|
-
require 'ddtrace/augmentation'
|
|
19
17
|
require 'ddtrace/metrics'
|
|
18
|
+
require 'ddtrace/auto_instrument_base'
|
|
19
|
+
require 'ddtrace/profiling'
|
|
20
|
+
|
|
21
|
+
require 'datadog/contrib'
|
|
22
|
+
require 'ddtrace/contrib/auto_instrument'
|
|
23
|
+
require 'ddtrace/contrib/extensions'
|
|
24
|
+
|
|
25
|
+
require 'ddtrace/opentelemetry/extensions'
|
|
20
26
|
|
|
21
27
|
# \Datadog global namespace that includes all tracing functionality for Tracer and Span classes.
|
|
22
28
|
module Datadog
|
|
23
|
-
extend Augmentation
|
|
24
29
|
extend Configuration
|
|
30
|
+
extend AutoInstrumentBase
|
|
25
31
|
|
|
26
|
-
# Load
|
|
27
|
-
require 'ddtrace/contrib/extensions'
|
|
32
|
+
# Load built-in Datadog integrations
|
|
28
33
|
extend Contrib::Extensions
|
|
34
|
+
# Load Contrib auto instrumentation
|
|
35
|
+
extend Contrib::AutoInstrument
|
|
36
|
+
# Load Contrib extension to global Datadog objects
|
|
37
|
+
Configuration::Settings.include Contrib::Extensions::Configuration::Settings
|
|
29
38
|
|
|
30
39
|
# Load and extend OpenTelemetry compatibility by default
|
|
31
|
-
require 'ddtrace/opentelemetry/extensions'
|
|
32
40
|
extend OpenTelemetry::Extensions
|
|
33
41
|
|
|
34
42
|
# Add shutdown hook:
|
|
35
43
|
# Ensures the tracer has an opportunity to flush traces
|
|
36
44
|
# and cleanup before terminating the process.
|
|
37
|
-
at_exit
|
|
45
|
+
at_exit do
|
|
46
|
+
if Interrupt === $! # rubocop:disable Style/SpecialGlobalVars is process terminating due to a ctrl+c or similar?
|
|
47
|
+
Datadog.send(:handle_interrupt_shutdown!)
|
|
48
|
+
else
|
|
49
|
+
Datadog.shutdown!
|
|
50
|
+
end
|
|
51
|
+
end
|
|
38
52
|
end
|
|
39
|
-
|
|
40
|
-
require 'ddtrace/contrib/action_cable/integration'
|
|
41
|
-
require 'ddtrace/contrib/action_pack/integration'
|
|
42
|
-
require 'ddtrace/contrib/action_view/integration'
|
|
43
|
-
require 'ddtrace/contrib/active_model_serializers/integration'
|
|
44
|
-
require 'ddtrace/contrib/active_record/integration'
|
|
45
|
-
require 'ddtrace/contrib/active_support/integration'
|
|
46
|
-
require 'ddtrace/contrib/aws/integration'
|
|
47
|
-
require 'ddtrace/contrib/concurrent_ruby/integration'
|
|
48
|
-
require 'ddtrace/contrib/dalli/integration'
|
|
49
|
-
require 'ddtrace/contrib/delayed_job/integration'
|
|
50
|
-
require 'ddtrace/contrib/elasticsearch/integration'
|
|
51
|
-
require 'ddtrace/contrib/ethon/integration'
|
|
52
|
-
require 'ddtrace/contrib/excon/integration'
|
|
53
|
-
require 'ddtrace/contrib/faraday/integration'
|
|
54
|
-
require 'ddtrace/contrib/grape/integration'
|
|
55
|
-
require 'ddtrace/contrib/graphql/integration'
|
|
56
|
-
require 'ddtrace/contrib/grpc/integration'
|
|
57
|
-
require 'ddtrace/contrib/http/integration'
|
|
58
|
-
require 'ddtrace/contrib/httprb/integration'
|
|
59
|
-
require 'ddtrace/contrib/integration'
|
|
60
|
-
require 'ddtrace/contrib/kafka/integration'
|
|
61
|
-
require 'ddtrace/contrib/presto/integration'
|
|
62
|
-
require 'ddtrace/contrib/que/integration'
|
|
63
|
-
require 'ddtrace/contrib/mysql2/integration'
|
|
64
|
-
require 'ddtrace/contrib/mongodb/integration'
|
|
65
|
-
require 'ddtrace/contrib/racecar/integration'
|
|
66
|
-
require 'ddtrace/contrib/rack/integration'
|
|
67
|
-
require 'ddtrace/contrib/rails/integration'
|
|
68
|
-
require 'ddtrace/contrib/rake/integration'
|
|
69
|
-
require 'ddtrace/contrib/redis/integration'
|
|
70
|
-
require 'ddtrace/contrib/resque/integration'
|
|
71
|
-
require 'ddtrace/contrib/rest_client/integration'
|
|
72
|
-
require 'ddtrace/contrib/sequel/integration'
|
|
73
|
-
require 'ddtrace/contrib/shoryuken/integration'
|
|
74
|
-
require 'ddtrace/contrib/sidekiq/integration'
|
|
75
|
-
require 'ddtrace/contrib/sinatra/integration'
|
|
76
|
-
require 'ddtrace/contrib/sneakers/integration'
|
|
77
|
-
require 'ddtrace/contrib/sucker_punch/integration'
|
|
78
|
-
require 'ddtrace/monkey'
|