ddtrace 0.43.0 → 0.48.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +5 -5
- data/.circleci/config.yml +278 -139
- data/.circleci/images/primary/Dockerfile-2.0.0 +11 -1
- data/.circleci/images/primary/Dockerfile-2.1.10 +11 -1
- data/.circleci/images/primary/Dockerfile-2.2.10 +11 -1
- data/.circleci/images/primary/Dockerfile-2.3.8 +10 -0
- data/.circleci/images/primary/Dockerfile-2.4.6 +10 -0
- data/.circleci/images/primary/Dockerfile-2.5.6 +10 -0
- data/.circleci/images/primary/Dockerfile-2.6.4 +10 -0
- data/.circleci/images/primary/Dockerfile-2.7.0 +10 -0
- data/.circleci/images/primary/Dockerfile-3.0.0 +73 -0
- data/.circleci/images/primary/Dockerfile-jruby-9.2-latest +88 -0
- data/.circleci/images/primary/{Dockerfile-jruby-9.2 → Dockerfile-jruby-9.2.0.0} +1 -5
- data/.circleci/images/primary/Dockerfile-truffleruby-21.0.0 +73 -0
- data/.github/workflows/add-milestone-to-pull-requests.yml +1 -1
- data/.github/workflows/create-next-milestone.yml +2 -2
- data/.gitlab-ci.yml +18 -18
- data/.rubocop.yml +269 -7
- data/.rubocop_todo.yml +438 -0
- data/.simplecov +10 -1
- data/Appraisals +285 -15
- data/CHANGELOG.md +1243 -377
- data/Gemfile +65 -3
- data/LICENSE-3rdparty.csv +2 -0
- data/README.md +1 -0
- data/Rakefile +186 -29
- data/bin/ddtracerb +15 -0
- data/ddtrace.gemspec +7 -37
- data/docker-compose.yml +105 -7
- data/docs/DevelopmentGuide.md +28 -0
- data/docs/GettingStarted.md +208 -75
- data/docs/ProfilingDevelopment.md +88 -0
- data/integration/README.md +67 -0
- data/integration/apps/rack/.dockerignore +1 -0
- data/integration/apps/rack/.envrc.sample +1 -0
- data/integration/apps/rack/.gitignore +4 -0
- data/integration/apps/rack/.rspec +1 -0
- data/integration/apps/rack/Dockerfile +28 -0
- data/integration/apps/rack/Dockerfile-ci +11 -0
- data/integration/apps/rack/Gemfile +24 -0
- data/integration/apps/rack/README.md +93 -0
- data/integration/apps/rack/app/acme.rb +80 -0
- data/integration/apps/rack/app/datadog.rb +17 -0
- data/integration/apps/rack/bin/run +22 -0
- data/integration/apps/rack/bin/setup +17 -0
- data/integration/apps/rack/bin/test +24 -0
- data/integration/apps/rack/config.ru +6 -0
- data/integration/apps/rack/config/puma.rb +14 -0
- data/integration/apps/rack/config/unicorn.rb +23 -0
- data/integration/apps/rack/docker-compose.ci.yml +62 -0
- data/integration/apps/rack/docker-compose.yml +78 -0
- data/integration/apps/rack/script/build-images +38 -0
- data/integration/apps/rack/script/ci +50 -0
- data/integration/apps/rack/spec/integration/basic_spec.rb +10 -0
- data/integration/apps/rack/spec/spec_helper.rb +16 -0
- data/integration/apps/rack/spec/support/integration_helper.rb +22 -0
- data/integration/apps/rails-five/.dockerignore +1 -0
- data/integration/apps/rails-five/.env +3 -0
- data/integration/apps/rails-five/.envrc.sample +1 -0
- data/integration/apps/rails-five/.gitignore +30 -0
- data/integration/apps/rails-five/Dockerfile +25 -0
- data/integration/apps/rails-five/Dockerfile-ci +11 -0
- data/integration/apps/rails-five/Gemfile +104 -0
- data/integration/apps/rails-five/README.md +94 -0
- data/integration/apps/rails-five/Rakefile +6 -0
- data/integration/apps/rails-five/app/channels/application_cable/channel.rb +4 -0
- data/integration/apps/rails-five/app/channels/application_cable/connection.rb +4 -0
- data/integration/apps/rails-five/app/controllers/application_controller.rb +2 -0
- data/integration/apps/rails-five/app/controllers/basic_controller.rb +36 -0
- data/integration/apps/rails-five/app/controllers/concerns/.keep +0 -0
- data/integration/apps/rails-five/app/controllers/health_controller.rb +9 -0
- data/integration/apps/rails-five/app/controllers/jobs_controller.rb +12 -0
- data/integration/apps/rails-five/app/jobs/application_job.rb +2 -0
- data/integration/apps/rails-five/app/jobs/test_job.rb +12 -0
- data/integration/apps/rails-five/app/mailers/application_mailer.rb +4 -0
- data/integration/apps/rails-five/app/models/application_record.rb +3 -0
- data/integration/apps/rails-five/app/models/concerns/.keep +0 -0
- data/integration/apps/rails-five/app/models/test.rb +2 -0
- data/integration/apps/rails-five/app/views/layouts/mailer.html.erb +13 -0
- data/integration/apps/rails-five/app/views/layouts/mailer.text.erb +1 -0
- data/integration/apps/rails-five/bin/bundle +3 -0
- data/integration/apps/rails-five/bin/rails +9 -0
- data/integration/apps/rails-five/bin/rake +9 -0
- data/integration/apps/rails-five/bin/run +24 -0
- data/integration/apps/rails-five/bin/setup +27 -0
- data/integration/apps/rails-five/bin/spring +17 -0
- data/integration/apps/rails-five/bin/test +21 -0
- data/integration/apps/rails-five/bin/update +28 -0
- data/integration/apps/rails-five/config.ru +5 -0
- data/integration/apps/rails-five/config/application.rb +97 -0
- data/integration/apps/rails-five/config/boot.rb +4 -0
- data/integration/apps/rails-five/config/cable.yml +10 -0
- data/integration/apps/rails-five/config/credentials.yml.enc +1 -0
- data/integration/apps/rails-five/config/database.yml +28 -0
- data/integration/apps/rails-five/config/environment.rb +5 -0
- data/integration/apps/rails-five/config/environments/development.rb +51 -0
- data/integration/apps/rails-five/config/environments/production.rb +82 -0
- data/integration/apps/rails-five/config/environments/test.rb +43 -0
- data/integration/apps/rails-five/config/initializers/datadog.rb +18 -0
- data/integration/apps/rails-five/config/initializers/filter_parameter_logging.rb +4 -0
- data/integration/apps/rails-five/config/initializers/resque.rb +4 -0
- data/integration/apps/rails-five/config/initializers/rollbar.rb +5 -0
- data/integration/apps/rails-five/config/initializers/wrap_parameters.rb +14 -0
- data/integration/apps/rails-five/config/locales/en.yml +33 -0
- data/integration/apps/rails-five/config/puma.rb +24 -0
- data/integration/apps/rails-five/config/routes.rb +11 -0
- data/integration/apps/rails-five/config/spring.rb +6 -0
- data/integration/apps/rails-five/config/unicorn.rb +29 -0
- data/integration/apps/rails-five/db/migrate/20190927215052_create_tests.rb +11 -0
- data/integration/apps/rails-five/db/schema.rb +23 -0
- data/integration/apps/rails-five/db/seeds.rb +7 -0
- data/integration/apps/rails-five/docker-compose.ci.yml +98 -0
- data/integration/apps/rails-five/docker-compose.yml +100 -0
- data/integration/apps/rails-five/lib/tasks/.keep +0 -0
- data/integration/apps/rails-five/log/.keep +0 -0
- data/integration/apps/rails-five/public/robots.txt +1 -0
- data/integration/apps/rails-five/script/build-images +35 -0
- data/integration/apps/rails-five/script/ci +50 -0
- data/integration/apps/rails-five/spec/integration/basic_spec.rb +10 -0
- data/integration/apps/rails-five/spec/spec_helper.rb +16 -0
- data/integration/apps/rails-five/spec/support/integration_helper.rb +22 -0
- data/integration/apps/rails-five/storage/.keep +0 -0
- data/integration/apps/rails-five/tmp/.keep +0 -0
- data/integration/apps/rails-five/vendor/.keep +0 -0
- data/integration/apps/ruby/.dockerignore +1 -0
- data/integration/apps/ruby/.envrc.sample +1 -0
- data/integration/apps/ruby/.gitignore +2 -0
- data/integration/apps/ruby/Dockerfile +25 -0
- data/integration/apps/ruby/Dockerfile-ci +11 -0
- data/integration/apps/ruby/Gemfile +11 -0
- data/integration/apps/ruby/README.md +70 -0
- data/integration/apps/ruby/agent.yaml +3 -0
- data/integration/apps/ruby/app/datadog.rb +13 -0
- data/integration/apps/ruby/app/fibonacci.rb +58 -0
- data/integration/apps/ruby/bin/run +20 -0
- data/integration/apps/ruby/bin/setup +17 -0
- data/integration/apps/ruby/bin/test +21 -0
- data/integration/apps/ruby/docker-compose.ci.yml +51 -0
- data/integration/apps/ruby/docker-compose.yml +63 -0
- data/integration/apps/ruby/script/build-images +38 -0
- data/integration/apps/ruby/script/ci +50 -0
- data/integration/images/agent/Dockerfile +2 -0
- data/integration/images/agent/agent.yaml +3 -0
- data/integration/images/include/datadog/analyzer.rb +71 -0
- data/integration/images/include/datadog/demo_env.rb +101 -0
- data/integration/images/include/http-health-check +33 -0
- data/integration/images/ruby/2.0/Dockerfile +54 -0
- data/integration/images/ruby/2.1/Dockerfile +54 -0
- data/integration/images/ruby/2.2/Dockerfile +54 -0
- data/integration/images/ruby/2.3/Dockerfile +70 -0
- data/integration/images/ruby/2.4/Dockerfile +54 -0
- data/integration/images/ruby/2.5/Dockerfile +54 -0
- data/integration/images/ruby/2.6/Dockerfile +54 -0
- data/integration/images/ruby/2.7/Dockerfile +54 -0
- data/integration/images/ruby/3.0/Dockerfile +54 -0
- data/integration/images/wrk/Dockerfile +33 -0
- data/integration/images/wrk/scripts/entrypoint.sh +17 -0
- data/integration/images/wrk/scripts/scenarios/basic/default.lua +1 -0
- data/integration/images/wrk/scripts/scenarios/basic/fibonacci.lua +1 -0
- data/integration/script/build-images +43 -0
- data/lib/ddtrace.rb +9 -5
- data/lib/ddtrace/analytics.rb +2 -0
- data/lib/ddtrace/auto_instrument.rb +3 -0
- data/lib/ddtrace/auto_instrument_base.rb +6 -0
- data/lib/ddtrace/buffer.rb +4 -4
- data/lib/ddtrace/configuration.rb +121 -26
- data/lib/ddtrace/configuration/base.rb +1 -1
- data/lib/ddtrace/configuration/components.rb +87 -5
- data/lib/ddtrace/configuration/option_definition.rb +1 -3
- data/lib/ddtrace/configuration/options.rb +4 -7
- data/lib/ddtrace/configuration/settings.rb +48 -3
- data/lib/ddtrace/context.rb +5 -6
- data/lib/ddtrace/context_provider.rb +0 -1
- data/lib/ddtrace/contrib/action_cable/event.rb +1 -0
- data/lib/ddtrace/contrib/action_cable/integration.rb +7 -0
- data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +1 -3
- data/lib/ddtrace/contrib/action_pack/integration.rb +7 -0
- data/lib/ddtrace/contrib/action_view/event.rb +1 -5
- data/lib/ddtrace/contrib/action_view/events/render_partial.rb +1 -0
- data/lib/ddtrace/contrib/action_view/events/render_template.rb +1 -0
- data/lib/ddtrace/contrib/action_view/integration.rb +7 -0
- data/lib/ddtrace/contrib/action_view/utils.rb +1 -1
- data/lib/ddtrace/contrib/active_record/configuration/makara_resolver.rb +30 -0
- data/lib/ddtrace/contrib/active_record/configuration/resolver.rb +107 -18
- data/lib/ddtrace/contrib/active_record/integration.rb +7 -0
- data/lib/ddtrace/contrib/active_record/utils.rb +68 -21
- data/lib/ddtrace/contrib/active_support/integration.rb +7 -1
- data/lib/ddtrace/contrib/active_support/notifications/event.rb +2 -1
- data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +1 -0
- data/lib/ddtrace/contrib/active_support/notifications/subscription.rb +9 -5
- data/lib/ddtrace/contrib/auto_instrument.rb +49 -0
- data/lib/ddtrace/contrib/aws/patcher.rb +1 -0
- data/lib/ddtrace/contrib/aws/services.rb +3 -0
- data/lib/ddtrace/contrib/configurable.rb +63 -39
- data/lib/ddtrace/contrib/configuration/resolver.rb +70 -5
- data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +20 -19
- data/lib/ddtrace/contrib/configuration/settings.rb +7 -6
- data/lib/ddtrace/contrib/cucumber/configuration/settings.rb +0 -10
- data/lib/ddtrace/contrib/cucumber/ext.rb +0 -2
- data/lib/ddtrace/contrib/cucumber/formatter.rb +5 -11
- data/lib/ddtrace/contrib/cucumber/integration.rb +5 -0
- data/lib/ddtrace/contrib/dalli/patcher.rb +0 -38
- data/lib/ddtrace/contrib/delayed_job/plugin.rb +0 -1
- data/lib/ddtrace/contrib/elasticsearch/patcher.rb +1 -0
- data/lib/ddtrace/contrib/elasticsearch/quantize.rb +3 -2
- data/lib/ddtrace/contrib/ethon/easy_patch.rb +11 -10
- data/lib/ddtrace/contrib/ethon/ext.rb +1 -0
- data/lib/ddtrace/contrib/excon/middleware.rb +2 -6
- data/lib/ddtrace/contrib/extensions.rb +53 -3
- data/lib/ddtrace/contrib/faraday/middleware.rb +1 -3
- data/lib/ddtrace/contrib/faraday/patcher.rb +0 -36
- data/lib/ddtrace/contrib/grape/endpoint.rb +37 -26
- data/lib/ddtrace/contrib/grape/ext.rb +1 -0
- data/lib/ddtrace/contrib/grape/patcher.rb +0 -42
- data/lib/ddtrace/contrib/grpc/datadog_interceptor.rb +8 -8
- data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +1 -0
- data/lib/ddtrace/contrib/grpc/patcher.rb +0 -36
- data/lib/ddtrace/contrib/http/circuit_breaker.rb +1 -3
- data/lib/ddtrace/contrib/http/instrumentation.rb +5 -5
- data/lib/ddtrace/contrib/httpclient/configuration/settings.rb +32 -0
- data/lib/ddtrace/contrib/httpclient/ext.rb +17 -0
- data/lib/ddtrace/contrib/httpclient/instrumentation.rb +147 -0
- data/lib/ddtrace/contrib/httpclient/integration.rb +43 -0
- data/lib/ddtrace/contrib/httpclient/patcher.rb +38 -0
- data/lib/ddtrace/contrib/httprb/instrumentation.rb +15 -21
- data/lib/ddtrace/contrib/httprb/patcher.rb +5 -2
- data/lib/ddtrace/contrib/mongodb/instrumentation.rb +2 -0
- data/lib/ddtrace/contrib/mongodb/subscribers.rb +2 -3
- data/lib/ddtrace/contrib/patchable.rb +18 -7
- data/lib/ddtrace/contrib/patcher.rb +9 -6
- data/lib/ddtrace/contrib/presto/patcher.rb +5 -2
- data/lib/ddtrace/contrib/qless/configuration/settings.rb +35 -0
- data/lib/ddtrace/contrib/qless/ext.rb +20 -0
- data/lib/ddtrace/contrib/qless/integration.rb +38 -0
- data/lib/ddtrace/contrib/qless/patcher.rb +35 -0
- data/lib/ddtrace/contrib/qless/qless_job.rb +73 -0
- data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +33 -0
- data/lib/ddtrace/contrib/que/ext.rb +19 -19
- data/lib/ddtrace/contrib/que/tracer.rb +1 -1
- data/lib/ddtrace/contrib/racecar/event.rb +1 -0
- data/lib/ddtrace/contrib/rack/configuration/settings.rb +3 -3
- data/lib/ddtrace/contrib/rack/integration.rb +7 -0
- data/lib/ddtrace/contrib/rack/middlewares.rb +6 -11
- data/lib/ddtrace/contrib/rack/patcher.rb +1 -3
- data/lib/ddtrace/contrib/rack/request_queue.rb +6 -1
- data/lib/ddtrace/contrib/rails/auto_instrument_railtie.rb +10 -0
- data/lib/ddtrace/contrib/rails/patcher.rb +6 -2
- data/lib/ddtrace/contrib/rails/utils.rb +4 -0
- data/lib/ddtrace/contrib/rake/instrumentation.rb +4 -2
- data/lib/ddtrace/contrib/rake/integration.rb +1 -1
- data/lib/ddtrace/contrib/redis/configuration/resolver.rb +14 -5
- data/lib/ddtrace/contrib/redis/configuration/settings.rb +5 -0
- data/lib/ddtrace/contrib/redis/ext.rb +1 -0
- data/lib/ddtrace/contrib/redis/patcher.rb +20 -3
- data/lib/ddtrace/contrib/redis/quantize.rb +28 -0
- data/lib/ddtrace/contrib/redis/tags.rb +5 -1
- data/lib/ddtrace/contrib/redis/vendor/LICENSE +20 -0
- data/lib/ddtrace/contrib/redis/vendor/resolver.rb +6 -7
- data/lib/ddtrace/contrib/registry.rb +2 -2
- data/lib/ddtrace/contrib/resque/configuration/settings.rb +17 -1
- data/lib/ddtrace/contrib/resque/integration.rb +1 -1
- data/lib/ddtrace/contrib/resque/patcher.rb +4 -4
- data/lib/ddtrace/contrib/resque/resque_job.rb +24 -1
- data/lib/ddtrace/contrib/rest_client/request_patch.rb +1 -3
- data/lib/ddtrace/contrib/rspec/configuration/settings.rb +0 -10
- data/lib/ddtrace/contrib/rspec/example.rb +24 -10
- data/lib/ddtrace/contrib/rspec/ext.rb +0 -3
- data/lib/ddtrace/contrib/rspec/integration.rb +6 -1
- data/lib/ddtrace/contrib/rspec/patcher.rb +0 -2
- data/lib/ddtrace/contrib/sequel/utils.rb +5 -6
- data/lib/ddtrace/contrib/shoryuken/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/shoryuken/tracer.rb +7 -4
- data/lib/ddtrace/contrib/sidekiq/server_tracer.rb +2 -7
- data/lib/ddtrace/contrib/sidekiq/tracing.rb +0 -1
- data/lib/ddtrace/contrib/sinatra/env.rb +1 -3
- data/lib/ddtrace/contrib/sinatra/headers.rb +1 -3
- data/lib/ddtrace/contrib/sinatra/tracer.rb +1 -3
- data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +5 -5
- data/lib/ddtrace/contrib/sneakers/ext.rb +11 -11
- data/lib/ddtrace/contrib/sneakers/tracer.rb +2 -4
- data/lib/ddtrace/contrib/status_code_matcher.rb +5 -3
- data/lib/ddtrace/correlation.rb +1 -0
- data/lib/ddtrace/diagnostics/environment_logger.rb +3 -2
- data/lib/ddtrace/distributed_tracing/headers/headers.rb +1 -0
- data/lib/ddtrace/distributed_tracing/headers/helpers.rb +1 -3
- data/lib/ddtrace/error.rb +2 -0
- data/lib/ddtrace/ext/ci.rb +43 -11
- data/lib/ddtrace/ext/distributed.rb +1 -1
- data/lib/ddtrace/ext/git.rb +0 -1
- data/lib/ddtrace/ext/http.rb +1 -1
- data/lib/ddtrace/ext/profiling.rb +52 -0
- data/lib/ddtrace/ext/runtime.rb +3 -1
- data/lib/ddtrace/ext/transport.rb +1 -0
- data/lib/ddtrace/forced_tracing.rb +2 -0
- data/lib/ddtrace/logger.rb +1 -1
- data/lib/ddtrace/metrics.rb +14 -6
- data/lib/ddtrace/opentracer/distributed_headers.rb +3 -0
- data/lib/ddtrace/opentracer/span.rb +2 -6
- data/lib/ddtrace/opentracer/thread_local_scope.rb +1 -0
- data/lib/ddtrace/patcher.rb +25 -4
- data/lib/ddtrace/pin.rb +8 -61
- data/lib/ddtrace/pipeline/span_filter.rb +1 -1
- data/lib/ddtrace/profiling.rb +54 -0
- data/lib/ddtrace/profiling/backtrace_location.rb +32 -0
- data/lib/ddtrace/profiling/buffer.rb +41 -0
- data/lib/ddtrace/profiling/collectors/stack.rb +253 -0
- data/lib/ddtrace/profiling/encoding/profile.rb +31 -0
- data/lib/ddtrace/profiling/event.rb +13 -0
- data/lib/ddtrace/profiling/events/stack.rb +102 -0
- data/lib/ddtrace/profiling/exporter.rb +23 -0
- data/lib/ddtrace/profiling/ext/cpu.rb +54 -0
- data/lib/ddtrace/profiling/ext/cthread.rb +134 -0
- data/lib/ddtrace/profiling/ext/forking.rb +97 -0
- data/lib/ddtrace/profiling/flush.rb +41 -0
- data/lib/ddtrace/profiling/pprof/builder.rb +121 -0
- data/lib/ddtrace/profiling/pprof/converter.rb +85 -0
- data/lib/ddtrace/profiling/pprof/message_set.rb +12 -0
- data/lib/ddtrace/profiling/pprof/payload.rb +18 -0
- data/lib/ddtrace/profiling/pprof/pprof.proto +212 -0
- data/lib/ddtrace/profiling/pprof/pprof_pb.rb +81 -0
- data/lib/ddtrace/profiling/pprof/stack_sample.rb +90 -0
- data/lib/ddtrace/profiling/pprof/string_table.rb +10 -0
- data/lib/ddtrace/profiling/pprof/template.rb +114 -0
- data/lib/ddtrace/profiling/preload.rb +3 -0
- data/lib/ddtrace/profiling/profiler.rb +28 -0
- data/lib/ddtrace/profiling/recorder.rb +87 -0
- data/lib/ddtrace/profiling/scheduler.rb +84 -0
- data/lib/ddtrace/profiling/tasks/setup.rb +77 -0
- data/lib/ddtrace/profiling/transport/client.rb +12 -0
- data/lib/ddtrace/profiling/transport/http.rb +122 -0
- data/lib/ddtrace/profiling/transport/http/api.rb +43 -0
- data/lib/ddtrace/profiling/transport/http/api/endpoint.rb +90 -0
- data/lib/ddtrace/profiling/transport/http/api/instance.rb +36 -0
- data/lib/ddtrace/profiling/transport/http/api/spec.rb +40 -0
- data/lib/ddtrace/profiling/transport/http/builder.rb +28 -0
- data/lib/ddtrace/profiling/transport/http/client.rb +33 -0
- data/lib/ddtrace/profiling/transport/http/response.rb +21 -0
- data/lib/ddtrace/profiling/transport/io.rb +30 -0
- data/lib/ddtrace/profiling/transport/io/client.rb +27 -0
- data/lib/ddtrace/profiling/transport/io/response.rb +16 -0
- data/lib/ddtrace/profiling/transport/parcel.rb +17 -0
- data/lib/ddtrace/profiling/transport/request.rb +15 -0
- data/lib/ddtrace/profiling/transport/response.rb +8 -0
- data/lib/ddtrace/propagation/grpc_propagator.rb +1 -0
- data/lib/ddtrace/propagation/http_propagator.rb +17 -2
- data/lib/ddtrace/quantization/http.rb +1 -0
- data/lib/ddtrace/runtime/cgroup.rb +2 -2
- data/lib/ddtrace/runtime/container.rb +32 -26
- data/lib/ddtrace/runtime/identity.rb +8 -0
- data/lib/ddtrace/sampler.rb +1 -1
- data/lib/ddtrace/sampling/rule_sampler.rb +4 -9
- data/lib/ddtrace/span.rb +7 -7
- data/lib/ddtrace/sync_writer.rb +12 -12
- data/lib/ddtrace/tasks/exec.rb +48 -0
- data/lib/ddtrace/tasks/help.rb +14 -0
- data/lib/ddtrace/tracer.rb +28 -5
- data/lib/ddtrace/transport/http.rb +15 -8
- data/lib/ddtrace/transport/http/adapters/net.rb +27 -8
- data/lib/ddtrace/transport/http/adapters/registry.rb +1 -0
- data/lib/ddtrace/transport/http/adapters/unix_socket.rb +2 -4
- data/lib/ddtrace/transport/http/builder.rb +7 -1
- data/lib/ddtrace/transport/http/env.rb +8 -0
- data/lib/ddtrace/transport/http/traces.rb +2 -3
- data/lib/ddtrace/transport/io.rb +1 -1
- data/lib/ddtrace/transport/io/client.rb +15 -8
- data/lib/ddtrace/transport/io/response.rb +1 -3
- data/lib/ddtrace/transport/io/traces.rb +6 -0
- data/lib/ddtrace/transport/parcel.rb +4 -0
- data/lib/ddtrace/transport/traces.rb +18 -1
- data/lib/ddtrace/utils/compression.rb +27 -0
- data/lib/ddtrace/utils/object_set.rb +41 -0
- data/lib/ddtrace/utils/only_once.rb +40 -0
- data/lib/ddtrace/utils/sequence.rb +17 -0
- data/lib/ddtrace/utils/string_table.rb +45 -0
- data/lib/ddtrace/utils/time.rb +32 -1
- data/lib/ddtrace/vendor/active_record/MIT-LICENSE +20 -0
- data/lib/ddtrace/vendor/multipart-post/LICENSE +11 -0
- data/lib/ddtrace/vendor/multipart-post/multipart.rb +12 -0
- data/lib/ddtrace/vendor/multipart-post/multipart/post.rb +8 -0
- data/lib/ddtrace/vendor/multipart-post/multipart/post/composite_read_io.rb +116 -0
- data/lib/ddtrace/vendor/multipart-post/multipart/post/multipartable.rb +57 -0
- data/lib/ddtrace/vendor/multipart-post/multipart/post/parts.rb +135 -0
- data/lib/ddtrace/vendor/multipart-post/multipart/post/version.rb +9 -0
- data/lib/ddtrace/vendor/multipart-post/net/http/post/multipart.rb +32 -0
- data/lib/ddtrace/version.rb +3 -1
- data/lib/ddtrace/workers.rb +5 -0
- data/lib/ddtrace/workers/async.rb +11 -3
- data/lib/ddtrace/workers/loop.rb +17 -3
- data/lib/ddtrace/workers/polling.rb +1 -0
- data/lib/ddtrace/workers/queue.rb +1 -0
- data/lib/ddtrace/workers/runtime_metrics.rb +21 -4
- data/lib/ddtrace/workers/trace_writer.rb +10 -10
- data/lib/ddtrace/writer.rb +7 -4
- metadata +224 -342
- data/lib/ddtrace/augmentation.rb +0 -13
- 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/contrib/rspec/example_group.rb +0 -61
- data/lib/ddtrace/monkey.rb +0 -58
|
@@ -27,8 +27,27 @@ module Datadog
|
|
|
27
27
|
|
|
28
28
|
# Activate integrations
|
|
29
29
|
if target.respond_to?(:integrations_pending_activation)
|
|
30
|
+
reduce_verbosity = target.respond_to?(:reduce_verbosity?) ? target.reduce_verbosity? : false
|
|
30
31
|
target.integrations_pending_activation.each do |integration|
|
|
31
|
-
|
|
32
|
+
next unless integration.respond_to?(:patch)
|
|
33
|
+
|
|
34
|
+
# integration.patch returns either true or a hash of details on why patching failed
|
|
35
|
+
patch_results = integration.patch
|
|
36
|
+
|
|
37
|
+
next if patch_results == true
|
|
38
|
+
|
|
39
|
+
# if patching failed, only log output if verbosity is unset
|
|
40
|
+
# or if patching failure is due to compatibility or integration specific reasons
|
|
41
|
+
next unless !reduce_verbosity ||
|
|
42
|
+
((patch_results[:available] && patch_results[:loaded]) &&
|
|
43
|
+
(!patch_results[:compatible] || !patch_results[:patchable]))
|
|
44
|
+
|
|
45
|
+
desc = "Available?: #{patch_results[:available]}"
|
|
46
|
+
desc += ", Loaded? #{patch_results[:loaded]}"
|
|
47
|
+
desc += ", Compatible? #{patch_results[:compatible]}"
|
|
48
|
+
desc += ", Patchable? #{patch_results[:patchable]}"
|
|
49
|
+
|
|
50
|
+
Datadog.logger.warn("Unable to patch #{patch_results[:name]} (#{desc})")
|
|
32
51
|
end
|
|
33
52
|
|
|
34
53
|
target.integrations_pending_activation.clear
|
|
@@ -48,9 +67,32 @@ module Datadog
|
|
|
48
67
|
end
|
|
49
68
|
end
|
|
50
69
|
|
|
51
|
-
|
|
70
|
+
# For the provided `integration_name`, resolves a matching configuration
|
|
71
|
+
# for the provided integration from an integration-specific `key`.
|
|
72
|
+
#
|
|
73
|
+
# How the matching is performed is integration-specific.
|
|
74
|
+
#
|
|
75
|
+
# @param [Symbol] integration_name the integration name
|
|
76
|
+
# @param [Object] key the integration-specific lookup key
|
|
77
|
+
# @return [Datadog::Contrib::Configuration::Settings]
|
|
78
|
+
def [](integration_name, key = :default)
|
|
79
|
+
integration = fetch_integration(integration_name)
|
|
80
|
+
integration.resolve(key) unless integration.nil?
|
|
81
|
+
end
|
|
82
|
+
|
|
83
|
+
# For the provided `integration_name`, retrieves a configuration previously
|
|
84
|
+
# stored by `#instrument`. Specifically, `describes` should be
|
|
85
|
+
# the same value provided in the `describes:` option for `#instrument`.
|
|
86
|
+
#
|
|
87
|
+
# If no `describes` value is provided, the default configuration is returned.
|
|
88
|
+
#
|
|
89
|
+
# @param [Symbol] integration_name the integration name
|
|
90
|
+
# @param [Object] describes the previously configured `describes:` object. If `nil`,
|
|
91
|
+
# fetches the default configuration
|
|
92
|
+
# @return [Datadog::Contrib::Configuration::Settings]
|
|
93
|
+
def configuration(integration_name, describes = nil)
|
|
52
94
|
integration = fetch_integration(integration_name)
|
|
53
|
-
integration.configuration(
|
|
95
|
+
integration.configuration(describes) unless integration.nil?
|
|
54
96
|
end
|
|
55
97
|
|
|
56
98
|
def instrument(integration_name, options = {}, &block)
|
|
@@ -86,6 +128,14 @@ module Datadog
|
|
|
86
128
|
registry[name] ||
|
|
87
129
|
raise(InvalidIntegrationError, "'#{name}' is not a valid integration.")
|
|
88
130
|
end
|
|
131
|
+
|
|
132
|
+
def reduce_verbosity?
|
|
133
|
+
defined?(@reduce_verbosity) ? @reduce_verbosity : false
|
|
134
|
+
end
|
|
135
|
+
|
|
136
|
+
def reduce_log_verbosity
|
|
137
|
+
@reduce_verbosity ||= true
|
|
138
|
+
end
|
|
89
139
|
end
|
|
90
140
|
end
|
|
91
141
|
end
|
|
@@ -57,9 +57,7 @@ module Datadog
|
|
|
57
57
|
end
|
|
58
58
|
|
|
59
59
|
def handle_response(span, env, options)
|
|
60
|
-
if options.fetch(:error_handler).call(env)
|
|
61
|
-
span.set_error(["Error #{env[:status]}", env[:body]])
|
|
62
|
-
end
|
|
60
|
+
span.set_error(["Error #{env[:status]}", env[:body]]) if options.fetch(:error_handler).call(env)
|
|
63
61
|
|
|
64
62
|
span.set_tag(Datadog::Ext::HTTP::STATUS_CODE, env[:status])
|
|
65
63
|
end
|
|
@@ -20,21 +20,10 @@ module Datadog
|
|
|
20
20
|
def patch
|
|
21
21
|
require 'ddtrace/contrib/faraday/middleware'
|
|
22
22
|
|
|
23
|
-
add_pin!
|
|
24
23
|
register_middleware!
|
|
25
24
|
add_default_middleware!
|
|
26
25
|
end
|
|
27
26
|
|
|
28
|
-
def add_pin!
|
|
29
|
-
DeprecatedPin
|
|
30
|
-
.new(
|
|
31
|
-
get_option(:service_name),
|
|
32
|
-
app: Ext::APP,
|
|
33
|
-
app_type: Datadog::Ext::HTTP::TYPE_OUTBOUND,
|
|
34
|
-
tracer: -> { get_option(:tracer) }
|
|
35
|
-
).onto(::Faraday)
|
|
36
|
-
end
|
|
37
|
-
|
|
38
27
|
def register_middleware!
|
|
39
28
|
::Faraday::Middleware.register_middleware(ddtrace: Middleware)
|
|
40
29
|
end
|
|
@@ -58,31 +47,6 @@ module Datadog
|
|
|
58
47
|
::Faraday::RackBuilder.send(:prepend, RackBuilder)
|
|
59
48
|
end
|
|
60
49
|
end
|
|
61
|
-
|
|
62
|
-
def get_option(option)
|
|
63
|
-
Datadog.configuration[:faraday].get_option(option)
|
|
64
|
-
end
|
|
65
|
-
|
|
66
|
-
# Implementation of deprecated Pin, which raises warnings when accessed.
|
|
67
|
-
# To be removed when support for Datadog::Pin with Faraday is removed.
|
|
68
|
-
class DeprecatedPin < Datadog::Pin
|
|
69
|
-
include Datadog::DeprecatedPin
|
|
70
|
-
|
|
71
|
-
DEPRECATION_WARNING = %(
|
|
72
|
-
Use of Datadog::Pin with Faraday is DEPRECATED.
|
|
73
|
-
Upgrade to the configuration API using the migration guide here:
|
|
74
|
-
https://github.com/DataDog/dd-trace-rb/releases/tag/v0.11.0).freeze
|
|
75
|
-
|
|
76
|
-
def service_name=(service_name)
|
|
77
|
-
Datadog.configuration[:faraday][:service_name] = service_name
|
|
78
|
-
end
|
|
79
|
-
|
|
80
|
-
def log_deprecation_warning(method_name)
|
|
81
|
-
do_once(method_name) do
|
|
82
|
-
Datadog.logger.warn("#{method_name}:#{DEPRECATION_WARNING}")
|
|
83
|
-
end
|
|
84
|
-
end
|
|
85
|
-
end
|
|
86
50
|
end
|
|
87
51
|
end
|
|
88
52
|
end
|
|
@@ -51,6 +51,7 @@ module Datadog
|
|
|
51
51
|
|
|
52
52
|
def endpoint_run(name, start, finish, id, payload)
|
|
53
53
|
return unless Thread.current[KEY_RUN]
|
|
54
|
+
|
|
54
55
|
Thread.current[KEY_RUN] = false
|
|
55
56
|
|
|
56
57
|
return unless enabled?
|
|
@@ -61,17 +62,12 @@ module Datadog
|
|
|
61
62
|
begin
|
|
62
63
|
# collect endpoint details
|
|
63
64
|
api = payload[:endpoint].options[:for]
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
67
|
-
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
api.to_s
|
|
71
|
-
end
|
|
72
|
-
|
|
73
|
-
path = payload[:endpoint].options[:path].join('/')
|
|
74
|
-
resource = "#{api_view}##{path}"
|
|
65
|
+
|
|
66
|
+
api_view = api_view(api)
|
|
67
|
+
|
|
68
|
+
request_method = payload[:endpoint].options[:method].first
|
|
69
|
+
path = endpoint_expand_path(payload[:endpoint])
|
|
70
|
+
resource = "#{api_view} #{request_method} #{path}"
|
|
75
71
|
span.resource = resource
|
|
76
72
|
|
|
77
73
|
# set the request span resource if it's a `rack.request` span
|
|
@@ -81,22 +77,22 @@ module Datadog
|
|
|
81
77
|
end
|
|
82
78
|
|
|
83
79
|
# Set analytics sample rate
|
|
84
|
-
if analytics_enabled?
|
|
85
|
-
Contrib::Analytics.set_sample_rate(span, analytics_sample_rate)
|
|
86
|
-
end
|
|
80
|
+
Contrib::Analytics.set_sample_rate(span, analytics_sample_rate) if analytics_enabled?
|
|
87
81
|
|
|
88
82
|
# Measure service stats
|
|
89
83
|
Contrib::Analytics.set_measured(span)
|
|
90
84
|
|
|
91
85
|
# catch thrown exceptions
|
|
92
86
|
|
|
93
|
-
if exception_is_error?(payload[:exception_object])
|
|
94
|
-
span.set_error(payload[:exception_object])
|
|
95
|
-
end
|
|
87
|
+
span.set_error(payload[:exception_object]) if exception_is_error?(payload[:exception_object])
|
|
96
88
|
|
|
97
89
|
# override the current span with this notification values
|
|
98
90
|
span.set_tag(Ext::TAG_ROUTE_ENDPOINT, api_view) unless api_view.nil?
|
|
99
91
|
span.set_tag(Ext::TAG_ROUTE_PATH, path)
|
|
92
|
+
span.set_tag(Ext::TAG_ROUTE_METHOD, request_method)
|
|
93
|
+
|
|
94
|
+
span.set_tag(Datadog::Ext::HTTP::METHOD, request_method)
|
|
95
|
+
span.set_tag(Datadog::Ext::HTTP::URL, path)
|
|
100
96
|
ensure
|
|
101
97
|
span.start(start)
|
|
102
98
|
span.finish(finish)
|
|
@@ -123,6 +119,7 @@ module Datadog
|
|
|
123
119
|
|
|
124
120
|
def endpoint_render(name, start, finish, id, payload)
|
|
125
121
|
return unless Thread.current[KEY_RENDER]
|
|
122
|
+
|
|
126
123
|
Thread.current[KEY_RENDER] = false
|
|
127
124
|
|
|
128
125
|
return unless enabled?
|
|
@@ -135,9 +132,7 @@ module Datadog
|
|
|
135
132
|
# Measure service stats
|
|
136
133
|
Contrib::Analytics.set_measured(span)
|
|
137
134
|
|
|
138
|
-
if exception_is_error?(payload[:exception_object])
|
|
139
|
-
span.set_error(payload[:exception_object])
|
|
140
|
-
end
|
|
135
|
+
span.set_error(payload[:exception_object]) if exception_is_error?(payload[:exception_object])
|
|
141
136
|
ensure
|
|
142
137
|
span.start(start)
|
|
143
138
|
span.finish(finish)
|
|
@@ -164,17 +159,13 @@ module Datadog
|
|
|
164
159
|
|
|
165
160
|
begin
|
|
166
161
|
# Set analytics sample rate
|
|
167
|
-
if analytics_enabled?
|
|
168
|
-
Contrib::Analytics.set_sample_rate(span, analytics_sample_rate)
|
|
169
|
-
end
|
|
162
|
+
Contrib::Analytics.set_sample_rate(span, analytics_sample_rate) if analytics_enabled?
|
|
170
163
|
|
|
171
164
|
# Measure service stats
|
|
172
165
|
Contrib::Analytics.set_measured(span)
|
|
173
166
|
|
|
174
167
|
# catch thrown exceptions
|
|
175
|
-
if exception_is_error?(payload[:exception_object])
|
|
176
|
-
span.set_error(payload[:exception_object])
|
|
177
|
-
end
|
|
168
|
+
span.set_error(payload[:exception_object]) if exception_is_error?(payload[:exception_object])
|
|
178
169
|
|
|
179
170
|
span.set_tag(Ext::TAG_FILTER_TYPE, type.to_s)
|
|
180
171
|
ensure
|
|
@@ -187,6 +178,25 @@ module Datadog
|
|
|
187
178
|
|
|
188
179
|
private
|
|
189
180
|
|
|
181
|
+
def api_view(api)
|
|
182
|
+
# If the API inherits from Grape::API in version >= 1.2.0
|
|
183
|
+
# then the API will be an instance and the name must be derived from the base.
|
|
184
|
+
# See https://github.com/ruby-grape/grape/issues/1825
|
|
185
|
+
if defined?(::Grape::API::Instance) && api <= ::Grape::API::Instance
|
|
186
|
+
api.base.to_s
|
|
187
|
+
else
|
|
188
|
+
api.to_s
|
|
189
|
+
end
|
|
190
|
+
end
|
|
191
|
+
|
|
192
|
+
def endpoint_expand_path(endpoint)
|
|
193
|
+
route_path = endpoint.options[:path]
|
|
194
|
+
namespace = endpoint.routes.first && endpoint.routes.first.namespace || ''
|
|
195
|
+
|
|
196
|
+
parts = (namespace.split('/') + route_path).reject { |p| p.blank? || p.eql?('/') }
|
|
197
|
+
parts.join('/').prepend('/')
|
|
198
|
+
end
|
|
199
|
+
|
|
190
200
|
def tracer
|
|
191
201
|
datadog_configuration[:tracer]
|
|
192
202
|
end
|
|
@@ -208,6 +218,7 @@ module Datadog
|
|
|
208
218
|
return false unless exception
|
|
209
219
|
return true unless matcher
|
|
210
220
|
return true unless exception.respond_to?('status')
|
|
221
|
+
|
|
211
222
|
matcher.include?(exception.status)
|
|
212
223
|
end
|
|
213
224
|
|
|
@@ -22,51 +22,9 @@ module Datadog
|
|
|
22
22
|
# Patch endpoints
|
|
23
23
|
::Grape::Endpoint.send(:include, Instrumentation)
|
|
24
24
|
|
|
25
|
-
add_pin!
|
|
26
|
-
|
|
27
25
|
# Subscribe to ActiveSupport events
|
|
28
26
|
Datadog::Contrib::Grape::Endpoint.subscribe
|
|
29
27
|
end
|
|
30
|
-
|
|
31
|
-
def add_pin!
|
|
32
|
-
# Attach a Pin object globally and set the service once
|
|
33
|
-
pin = DeprecatedPin.new(
|
|
34
|
-
get_option(:service_name),
|
|
35
|
-
app: Ext::APP,
|
|
36
|
-
app_type: Datadog::Ext::AppTypes::WEB,
|
|
37
|
-
tracer: -> { get_option(:tracer) }
|
|
38
|
-
)
|
|
39
|
-
pin.onto(::Grape)
|
|
40
|
-
end
|
|
41
|
-
|
|
42
|
-
def get_option(option)
|
|
43
|
-
Datadog.configuration[:grape].get_option(option)
|
|
44
|
-
end
|
|
45
|
-
|
|
46
|
-
# Implementation of deprecated Pin, which raises warnings when accessed.
|
|
47
|
-
# To be removed when support for Datadog::Pin with Grape is removed.
|
|
48
|
-
class DeprecatedPin < Datadog::Pin
|
|
49
|
-
include Datadog::DeprecatedPin
|
|
50
|
-
|
|
51
|
-
DEPRECATION_WARNING = %(
|
|
52
|
-
Use of Datadog::Pin with Grape is DEPRECATED.
|
|
53
|
-
Upgrade to the configuration API using the migration guide here:
|
|
54
|
-
https://github.com/DataDog/dd-trace-rb/releases/tag/v0.11.0).freeze
|
|
55
|
-
|
|
56
|
-
def tracer=(tracer)
|
|
57
|
-
Datadog.configuration[:grape][:tracer] = tracer
|
|
58
|
-
end
|
|
59
|
-
|
|
60
|
-
def service_name=(service_name)
|
|
61
|
-
Datadog.configuration[:grape][:service_name] = service_name
|
|
62
|
-
end
|
|
63
|
-
|
|
64
|
-
def log_deprecation_warning(method_name)
|
|
65
|
-
do_once(method_name) do
|
|
66
|
-
Datadog.logger.warn("#{method_name}:#{DEPRECATION_WARNING}")
|
|
67
|
-
end
|
|
68
|
-
end
|
|
69
|
-
end
|
|
70
28
|
end
|
|
71
29
|
end
|
|
72
30
|
end
|
|
@@ -15,20 +15,20 @@ module Datadog
|
|
|
15
15
|
add_datadog_pin! { |c| yield(c) if block_given? }
|
|
16
16
|
end
|
|
17
17
|
|
|
18
|
-
def request_response(**keywords)
|
|
19
|
-
trace(keywords)
|
|
18
|
+
def request_response(**keywords, &block)
|
|
19
|
+
trace(keywords, &block)
|
|
20
20
|
end
|
|
21
21
|
|
|
22
|
-
def client_streamer(**keywords)
|
|
23
|
-
trace(keywords)
|
|
22
|
+
def client_streamer(**keywords, &block)
|
|
23
|
+
trace(keywords, &block)
|
|
24
24
|
end
|
|
25
25
|
|
|
26
|
-
def server_streamer(**keywords)
|
|
27
|
-
trace(keywords)
|
|
26
|
+
def server_streamer(**keywords, &block)
|
|
27
|
+
trace(keywords, &block)
|
|
28
28
|
end
|
|
29
29
|
|
|
30
|
-
def bidi_streamer(**keywords)
|
|
31
|
-
trace(keywords)
|
|
30
|
+
def bidi_streamer(**keywords, &block)
|
|
31
|
+
trace(keywords, &block)
|
|
32
32
|
end
|
|
33
33
|
|
|
34
34
|
private
|
|
@@ -19,49 +19,13 @@ module Datadog
|
|
|
19
19
|
require 'ddtrace/contrib/grpc/datadog_interceptor'
|
|
20
20
|
require 'ddtrace/contrib/grpc/intercept_with_datadog'
|
|
21
21
|
|
|
22
|
-
add_pin!
|
|
23
|
-
|
|
24
22
|
prepend_interceptor
|
|
25
23
|
end
|
|
26
24
|
|
|
27
|
-
def add_pin!
|
|
28
|
-
DeprecatedPin.new(
|
|
29
|
-
get_option(:service_name),
|
|
30
|
-
app: Ext::APP,
|
|
31
|
-
app_type: Datadog::Ext::AppTypes::WEB,
|
|
32
|
-
tracer: -> { get_option(:tracer) }
|
|
33
|
-
).onto(::GRPC)
|
|
34
|
-
end
|
|
35
|
-
|
|
36
25
|
def prepend_interceptor
|
|
37
26
|
::GRPC::InterceptionContext
|
|
38
27
|
.send(:prepend, Datadog::Contrib::GRPC::InterceptWithDatadog)
|
|
39
28
|
end
|
|
40
|
-
|
|
41
|
-
def get_option(option)
|
|
42
|
-
Datadog.configuration[:grpc].get_option(option)
|
|
43
|
-
end
|
|
44
|
-
|
|
45
|
-
# Implementation of deprecated Pin, which raises warnings when accessed.
|
|
46
|
-
# To be removed when support for Datadog::Pin with GRPC is removed.
|
|
47
|
-
class DeprecatedPin < Datadog::Pin
|
|
48
|
-
include Datadog::DeprecatedPin
|
|
49
|
-
|
|
50
|
-
DEPRECATION_WARNING = %(
|
|
51
|
-
Use of Datadog::Pin with GRPC is DEPRECATED.
|
|
52
|
-
Upgrade to the configuration API using the migration guide here:
|
|
53
|
-
https://github.com/DataDog/dd-trace-rb/releases/tag/v0.11.0).freeze
|
|
54
|
-
|
|
55
|
-
def service_name=(service_name)
|
|
56
|
-
Datadog.configuration[:grpc][:service_name] = service_name
|
|
57
|
-
end
|
|
58
|
-
|
|
59
|
-
def log_deprecation_warning(method_name)
|
|
60
|
-
do_once(method_name) do
|
|
61
|
-
Datadog.logger.warn("#{method_name}:#{DEPRECATION_WARNING}")
|
|
62
|
-
end
|
|
63
|
-
end
|
|
64
|
-
end
|
|
65
29
|
end
|
|
66
30
|
end
|
|
67
31
|
end
|
|
@@ -27,9 +27,7 @@ module Datadog
|
|
|
27
27
|
end
|
|
28
28
|
|
|
29
29
|
def should_skip_distributed_tracing?(pin)
|
|
30
|
-
if pin.config && pin.config.key?(:distributed_tracing)
|
|
31
|
-
return !pin.config[:distributed_tracing]
|
|
32
|
-
end
|
|
30
|
+
return !pin.config[:distributed_tracing] if pin.config && pin.config.key?(:distributed_tracing)
|
|
33
31
|
|
|
34
32
|
!Datadog.configuration[:http][:distributed_tracing]
|
|
35
33
|
end
|
|
@@ -19,7 +19,7 @@ module Datadog
|
|
|
19
19
|
|
|
20
20
|
# Span hook invoked after request is completed.
|
|
21
21
|
def self.after_request(&block)
|
|
22
|
-
if
|
|
22
|
+
if block
|
|
23
23
|
# Set hook
|
|
24
24
|
@after_request = block
|
|
25
25
|
else
|
|
@@ -32,15 +32,14 @@ module Datadog
|
|
|
32
32
|
module InstanceMethods
|
|
33
33
|
include Datadog::Contrib::HttpAnnotationHelper
|
|
34
34
|
|
|
35
|
-
|
|
35
|
+
# :yield: +response+
|
|
36
|
+
def request(req, body = nil, &block)
|
|
36
37
|
host, = host_and_port(req)
|
|
37
38
|
request_options = datadog_configuration(host)
|
|
38
39
|
pin = datadog_pin(request_options)
|
|
39
40
|
return super(req, body, &block) unless pin && pin.tracer
|
|
40
41
|
|
|
41
|
-
if Datadog::Contrib::HTTP.should_skip_tracing?(req, pin.tracer)
|
|
42
|
-
return super(req, body, &block)
|
|
43
|
-
end
|
|
42
|
+
return super(req, body, &block) if Datadog::Contrib::HTTP.should_skip_tracing?(req, pin.tracer)
|
|
44
43
|
|
|
45
44
|
pin.tracer.trace(Ext::SPAN_REQUEST, on_error: method(:annotate_span_with_error!)) do |span|
|
|
46
45
|
begin
|
|
@@ -108,6 +107,7 @@ module Datadog
|
|
|
108
107
|
|
|
109
108
|
def set_analytics_sample_rate(span, request_options)
|
|
110
109
|
return unless analytics_enabled?(request_options)
|
|
110
|
+
|
|
111
111
|
Contrib::Analytics.set_sample_rate(span, analytics_sample_rate(request_options))
|
|
112
112
|
end
|
|
113
113
|
|