ddtrace 0.48.0 → 0.51.1
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.circleci/config.yml +250 -68
- data/.circleci/images/primary/Dockerfile-2.1.10 +1 -1
- data/.circleci/images/primary/Dockerfile-2.2.10 +1 -1
- data/.circleci/images/primary/Dockerfile-2.3.8 +4 -2
- data/.circleci/images/primary/{Dockerfile-2.6.4 → Dockerfile-2.4.10} +5 -3
- data/.circleci/images/primary/{Dockerfile-2.4.6 → Dockerfile-2.5.9} +3 -3
- data/.circleci/images/primary/{Dockerfile-2.5.6 → Dockerfile-2.6.7} +3 -3
- data/.circleci/images/primary/{Dockerfile-2.7.0 → Dockerfile-2.7.3} +3 -3
- data/.circleci/images/primary/{Dockerfile-3.0.0 → Dockerfile-3.0.1} +3 -3
- data/.circleci/images/primary/Dockerfile-jruby-9.2-latest +3 -3
- data/.circleci/images/primary/Dockerfile-jruby-9.2.0.0 +1 -1
- data/.circleci/images/primary/{Dockerfile-truffleruby-21.0.0 → Dockerfile-truffleruby-21.1.0} +2 -2
- data/.dd-ci/ci-app-spec.json +31 -0
- data/.dockerignore +0 -1
- data/.gitattributes +1 -0
- data/.github/workflows/test-head.yaml +34 -0
- data/.gitignore +0 -1
- data/.rubocop.yml +13 -9
- data/.rubocop_todo.yml +7 -8
- data/Appraisals +206 -182
- data/CHANGELOG.md +154 -0
- data/Gemfile +6 -3
- data/Rakefile +331 -333
- data/benchmarks/data/profiler-submission-marshal.gz +0 -0
- data/benchmarks/profiler_sample_loop.rb +69 -0
- data/benchmarks/profiler_submission.rb +93 -0
- data/ddtrace.gemspec +2 -2
- data/docker-compose.yml +14 -68
- data/docs/GettingStarted.md +59 -13
- data/gemfiles/jruby_9.2.0.0_contrib.gemfile +82 -0
- data/gemfiles/jruby_9.2.0.0_contrib.gemfile.lock +1571 -0
- data/gemfiles/jruby_9.2.0.0_contrib_old.gemfile +36 -0
- data/gemfiles/jruby_9.2.0.0_contrib_old.gemfile.lock +159 -0
- data/gemfiles/jruby_9.2.0.0_core_old.gemfile +35 -0
- data/gemfiles/jruby_9.2.0.0_core_old.gemfile.lock +155 -0
- data/gemfiles/jruby_9.2.0.0_cucumber3.gemfile +36 -0
- data/gemfiles/jruby_9.2.0.0_cucumber3.gemfile.lock +176 -0
- data/gemfiles/jruby_9.2.0.0_cucumber4.gemfile +36 -0
- data/gemfiles/jruby_9.2.0.0_cucumber4.gemfile.lock +208 -0
- data/gemfiles/jruby_9.2.0.0_cucumber5.gemfile +36 -0
- data/gemfiles/jruby_9.2.0.0_cucumber5.gemfile.lock +208 -0
- data/gemfiles/jruby_9.2.0.0_rails5_mysql2.gemfile +41 -0
- data/gemfiles/jruby_9.2.0.0_rails5_mysql2.gemfile.lock +273 -0
- data/gemfiles/jruby_9.2.0.0_rails5_postgres.gemfile +41 -0
- data/gemfiles/jruby_9.2.0.0_rails5_postgres.gemfile.lock +273 -0
- data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis.gemfile +42 -0
- data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis.gemfile.lock +275 -0
- data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis_activesupport.gemfile +42 -0
- data/gemfiles/jruby_9.2.0.0_rails5_postgres_redis_activesupport.gemfile.lock +275 -0
- data/gemfiles/jruby_9.2.0.0_rails5_postgres_sidekiq.gemfile +43 -0
- data/gemfiles/jruby_9.2.0.0_rails5_postgres_sidekiq.gemfile.lock +281 -0
- data/gemfiles/jruby_9.2.0.0_rails5_semantic_logger.gemfile +41 -0
- data/gemfiles/jruby_9.2.0.0_rails5_semantic_logger.gemfile.lock +272 -0
- data/gemfiles/jruby_9.2.0.0_rails61_mysql2.gemfile +41 -0
- data/gemfiles/jruby_9.2.0.0_rails61_mysql2.gemfile.lock +292 -0
- data/gemfiles/jruby_9.2.0.0_rails61_postgres.gemfile +41 -0
- data/gemfiles/jruby_9.2.0.0_rails61_postgres.gemfile.lock +292 -0
- data/gemfiles/jruby_9.2.0.0_rails61_postgres_redis.gemfile +42 -0
- data/gemfiles/jruby_9.2.0.0_rails61_postgres_redis.gemfile.lock +294 -0
- data/gemfiles/jruby_9.2.0.0_rails61_postgres_sidekiq.gemfile +42 -0
- data/gemfiles/jruby_9.2.0.0_rails61_postgres_sidekiq.gemfile.lock +299 -0
- data/gemfiles/jruby_9.2.0.0_rails61_semantic_logger.gemfile +41 -0
- data/gemfiles/jruby_9.2.0.0_rails61_semantic_logger.gemfile.lock +291 -0
- data/gemfiles/jruby_9.2.0.0_rails6_mysql2.gemfile +41 -0
- data/gemfiles/jruby_9.2.0.0_rails6_mysql2.gemfile.lock +289 -0
- data/gemfiles/jruby_9.2.0.0_rails6_postgres.gemfile +41 -0
- data/gemfiles/jruby_9.2.0.0_rails6_postgres.gemfile.lock +289 -0
- data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis.gemfile +42 -0
- data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis.gemfile.lock +291 -0
- data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis_activesupport.gemfile +42 -0
- data/gemfiles/jruby_9.2.0.0_rails6_postgres_redis_activesupport.gemfile.lock +291 -0
- data/gemfiles/jruby_9.2.0.0_rails6_postgres_sidekiq.gemfile +43 -0
- data/gemfiles/jruby_9.2.0.0_rails6_postgres_sidekiq.gemfile.lock +297 -0
- data/gemfiles/jruby_9.2.0.0_rails6_semantic_logger.gemfile +41 -0
- data/gemfiles/jruby_9.2.0.0_rails6_semantic_logger.gemfile.lock +288 -0
- data/gemfiles/jruby_9.2.0.0_resque2_redis3.gemfile +37 -0
- data/gemfiles/jruby_9.2.0.0_resque2_redis3.gemfile.lock +182 -0
- data/gemfiles/jruby_9.2.0.0_resque2_redis4.gemfile +37 -0
- data/gemfiles/jruby_9.2.0.0_resque2_redis4.gemfile.lock +182 -0
- data/gemfiles/jruby_9.2.18.0_contrib.gemfile +82 -0
- data/gemfiles/jruby_9.2.18.0_contrib.gemfile.lock +1571 -0
- data/gemfiles/jruby_9.2.18.0_contrib_old.gemfile +36 -0
- data/gemfiles/jruby_9.2.18.0_contrib_old.gemfile.lock +159 -0
- data/gemfiles/jruby_9.2.18.0_core_old.gemfile +35 -0
- data/gemfiles/jruby_9.2.18.0_core_old.gemfile.lock +155 -0
- data/gemfiles/jruby_9.2.18.0_cucumber3.gemfile +36 -0
- data/gemfiles/jruby_9.2.18.0_cucumber3.gemfile.lock +176 -0
- data/gemfiles/jruby_9.2.18.0_cucumber4.gemfile +36 -0
- data/gemfiles/jruby_9.2.18.0_cucumber4.gemfile.lock +208 -0
- data/gemfiles/jruby_9.2.18.0_cucumber5.gemfile +36 -0
- data/gemfiles/jruby_9.2.18.0_cucumber5.gemfile.lock +208 -0
- data/gemfiles/jruby_9.2.18.0_rails5_mysql2.gemfile +41 -0
- data/gemfiles/jruby_9.2.18.0_rails5_mysql2.gemfile.lock +273 -0
- data/gemfiles/jruby_9.2.18.0_rails5_postgres.gemfile +41 -0
- data/gemfiles/jruby_9.2.18.0_rails5_postgres.gemfile.lock +273 -0
- data/gemfiles/jruby_9.2.18.0_rails5_postgres_redis.gemfile +42 -0
- data/gemfiles/jruby_9.2.18.0_rails5_postgres_redis.gemfile.lock +275 -0
- data/gemfiles/jruby_9.2.18.0_rails5_postgres_redis_activesupport.gemfile +42 -0
- data/gemfiles/jruby_9.2.18.0_rails5_postgres_redis_activesupport.gemfile.lock +275 -0
- data/gemfiles/jruby_9.2.18.0_rails5_postgres_sidekiq.gemfile +43 -0
- data/gemfiles/jruby_9.2.18.0_rails5_postgres_sidekiq.gemfile.lock +281 -0
- data/gemfiles/jruby_9.2.18.0_rails5_semantic_logger.gemfile +41 -0
- data/gemfiles/jruby_9.2.18.0_rails5_semantic_logger.gemfile.lock +272 -0
- data/gemfiles/jruby_9.2.18.0_rails61_mysql2.gemfile +41 -0
- data/gemfiles/jruby_9.2.18.0_rails61_mysql2.gemfile.lock +292 -0
- data/gemfiles/jruby_9.2.18.0_rails61_postgres.gemfile +41 -0
- data/gemfiles/jruby_9.2.18.0_rails61_postgres.gemfile.lock +292 -0
- data/gemfiles/jruby_9.2.18.0_rails61_postgres_redis.gemfile +42 -0
- data/gemfiles/jruby_9.2.18.0_rails61_postgres_redis.gemfile.lock +294 -0
- data/gemfiles/jruby_9.2.18.0_rails61_postgres_sidekiq.gemfile +42 -0
- data/gemfiles/jruby_9.2.18.0_rails61_postgres_sidekiq.gemfile.lock +299 -0
- data/gemfiles/jruby_9.2.18.0_rails61_semantic_logger.gemfile +41 -0
- data/gemfiles/jruby_9.2.18.0_rails61_semantic_logger.gemfile.lock +291 -0
- data/gemfiles/jruby_9.2.18.0_rails6_mysql2.gemfile +41 -0
- data/gemfiles/jruby_9.2.18.0_rails6_mysql2.gemfile.lock +289 -0
- data/gemfiles/jruby_9.2.18.0_rails6_postgres.gemfile +41 -0
- data/gemfiles/jruby_9.2.18.0_rails6_postgres.gemfile.lock +289 -0
- data/gemfiles/jruby_9.2.18.0_rails6_postgres_redis.gemfile +42 -0
- data/gemfiles/jruby_9.2.18.0_rails6_postgres_redis.gemfile.lock +291 -0
- data/gemfiles/jruby_9.2.18.0_rails6_postgres_redis_activesupport.gemfile +42 -0
- data/gemfiles/jruby_9.2.18.0_rails6_postgres_redis_activesupport.gemfile.lock +291 -0
- data/gemfiles/jruby_9.2.18.0_rails6_postgres_sidekiq.gemfile +43 -0
- data/gemfiles/jruby_9.2.18.0_rails6_postgres_sidekiq.gemfile.lock +297 -0
- data/gemfiles/jruby_9.2.18.0_rails6_semantic_logger.gemfile +41 -0
- data/gemfiles/jruby_9.2.18.0_rails6_semantic_logger.gemfile.lock +288 -0
- data/gemfiles/jruby_9.2.18.0_resque2_redis3.gemfile +37 -0
- data/gemfiles/jruby_9.2.18.0_resque2_redis3.gemfile.lock +182 -0
- data/gemfiles/jruby_9.2.18.0_resque2_redis4.gemfile +37 -0
- data/gemfiles/jruby_9.2.18.0_resque2_redis4.gemfile.lock +182 -0
- data/gemfiles/ruby_2.1.10_contrib_old.gemfile +68 -0
- data/gemfiles/ruby_2.1.10_contrib_old.gemfile.lock +310 -0
- data/gemfiles/ruby_2.1.10_core_old.gemfile +34 -0
- data/gemfiles/ruby_2.1.10_core_old.gemfile.lock +120 -0
- data/gemfiles/ruby_2.1.10_rails30_postgres.gemfile +39 -0
- data/gemfiles/ruby_2.1.10_rails30_postgres.gemfile.lock +193 -0
- data/gemfiles/ruby_2.1.10_rails30_postgres_sidekiq.gemfile +40 -0
- data/gemfiles/ruby_2.1.10_rails30_postgres_sidekiq.gemfile.lock +202 -0
- data/gemfiles/ruby_2.1.10_rails32_mysql2.gemfile +42 -0
- data/gemfiles/ruby_2.1.10_rails32_mysql2.gemfile.lock +212 -0
- data/gemfiles/ruby_2.1.10_rails32_postgres.gemfile +39 -0
- data/gemfiles/ruby_2.1.10_rails32_postgres.gemfile.lock +201 -0
- data/gemfiles/ruby_2.1.10_rails32_postgres_redis.gemfile +41 -0
- data/gemfiles/ruby_2.1.10_rails32_postgres_redis.gemfile.lock +220 -0
- data/gemfiles/ruby_2.1.10_rails32_postgres_sidekiq.gemfile +40 -0
- data/gemfiles/ruby_2.1.10_rails32_postgres_sidekiq.gemfile.lock +210 -0
- data/gemfiles/ruby_2.1.10_rails4_mysql2.gemfile +39 -0
- data/gemfiles/ruby_2.1.10_rails4_mysql2.gemfile.lock +220 -0
- data/gemfiles/ruby_2.1.10_rails4_postgres.gemfile +39 -0
- data/gemfiles/ruby_2.1.10_rails4_postgres.gemfile.lock +220 -0
- data/gemfiles/ruby_2.1.10_rails4_postgres_redis.gemfile +41 -0
- data/gemfiles/ruby_2.1.10_rails4_postgres_redis.gemfile.lock +239 -0
- data/gemfiles/ruby_2.1.10_rails4_semantic_logger.gemfile +39 -0
- data/gemfiles/ruby_2.1.10_rails4_semantic_logger.gemfile.lock +218 -0
- data/gemfiles/ruby_2.2.10_contrib.gemfile +76 -0
- data/gemfiles/ruby_2.2.10_contrib.gemfile.lock +1499 -0
- data/gemfiles/ruby_2.2.10_core_old.gemfile +34 -0
- data/gemfiles/ruby_2.2.10_core_old.gemfile.lock +120 -0
- data/gemfiles/ruby_2.2.10_rails30_postgres.gemfile +39 -0
- data/gemfiles/ruby_2.2.10_rails30_postgres.gemfile.lock +193 -0
- data/gemfiles/ruby_2.2.10_rails30_postgres_sidekiq.gemfile +40 -0
- data/gemfiles/ruby_2.2.10_rails30_postgres_sidekiq.gemfile.lock +202 -0
- data/gemfiles/ruby_2.2.10_rails32_mysql2.gemfile +41 -0
- data/gemfiles/ruby_2.2.10_rails32_mysql2.gemfile.lock +209 -0
- data/gemfiles/ruby_2.2.10_rails32_postgres.gemfile +39 -0
- data/gemfiles/ruby_2.2.10_rails32_postgres.gemfile.lock +201 -0
- data/gemfiles/ruby_2.2.10_rails32_postgres_redis.gemfile +41 -0
- data/gemfiles/ruby_2.2.10_rails32_postgres_redis.gemfile.lock +220 -0
- data/gemfiles/ruby_2.2.10_rails32_postgres_sidekiq.gemfile +40 -0
- data/gemfiles/ruby_2.2.10_rails32_postgres_sidekiq.gemfile.lock +210 -0
- data/gemfiles/ruby_2.2.10_rails4_mysql2.gemfile +39 -0
- data/gemfiles/ruby_2.2.10_rails4_mysql2.gemfile.lock +220 -0
- data/gemfiles/ruby_2.2.10_rails4_postgres.gemfile +39 -0
- data/gemfiles/ruby_2.2.10_rails4_postgres.gemfile.lock +220 -0
- data/gemfiles/ruby_2.2.10_rails4_postgres_redis.gemfile +41 -0
- data/gemfiles/ruby_2.2.10_rails4_postgres_redis.gemfile.lock +239 -0
- data/gemfiles/ruby_2.2.10_rails4_postgres_sidekiq.gemfile +41 -0
- data/gemfiles/ruby_2.2.10_rails4_postgres_sidekiq.gemfile.lock +231 -0
- data/gemfiles/ruby_2.2.10_rails4_semantic_logger.gemfile +39 -0
- data/gemfiles/ruby_2.2.10_rails4_semantic_logger.gemfile.lock +218 -0
- data/gemfiles/ruby_2.2.10_rails5_mysql2.gemfile +39 -0
- data/gemfiles/ruby_2.2.10_rails5_mysql2.gemfile.lock +236 -0
- data/gemfiles/ruby_2.2.10_rails5_postgres.gemfile +39 -0
- data/gemfiles/ruby_2.2.10_rails5_postgres.gemfile.lock +236 -0
- data/gemfiles/ruby_2.2.10_rails5_postgres_redis.gemfile +40 -0
- data/gemfiles/ruby_2.2.10_rails5_postgres_redis.gemfile.lock +238 -0
- data/gemfiles/ruby_2.2.10_rails5_postgres_redis_activesupport.gemfile +40 -0
- data/gemfiles/ruby_2.2.10_rails5_postgres_redis_activesupport.gemfile.lock +238 -0
- data/gemfiles/ruby_2.2.10_rails5_postgres_sidekiq.gemfile +41 -0
- data/gemfiles/ruby_2.2.10_rails5_postgres_sidekiq.gemfile.lock +247 -0
- data/gemfiles/ruby_2.2.10_rails5_semantic_logger.gemfile +39 -0
- data/gemfiles/ruby_2.2.10_rails5_semantic_logger.gemfile.lock +234 -0
- data/gemfiles/ruby_2.3.8_contrib.gemfile +75 -0
- data/gemfiles/ruby_2.3.8_contrib.gemfile.lock +1508 -0
- data/gemfiles/ruby_2.3.8_contrib_old.gemfile +34 -0
- data/gemfiles/ruby_2.3.8_contrib_old.gemfile.lock +123 -0
- data/gemfiles/ruby_2.3.8_core_old.gemfile +33 -0
- data/gemfiles/ruby_2.3.8_core_old.gemfile.lock +119 -0
- data/gemfiles/ruby_2.3.8_cucumber3.gemfile +34 -0
- data/gemfiles/ruby_2.3.8_cucumber3.gemfile.lock +140 -0
- data/gemfiles/ruby_2.3.8_cucumber4.gemfile +34 -0
- data/gemfiles/ruby_2.3.8_cucumber4.gemfile.lock +170 -0
- data/gemfiles/ruby_2.3.8_rails30_postgres.gemfile +38 -0
- data/gemfiles/ruby_2.3.8_rails30_postgres.gemfile.lock +192 -0
- data/gemfiles/ruby_2.3.8_rails30_postgres_sidekiq.gemfile +39 -0
- data/gemfiles/ruby_2.3.8_rails30_postgres_sidekiq.gemfile.lock +201 -0
- data/gemfiles/ruby_2.3.8_rails32_mysql2.gemfile +40 -0
- data/gemfiles/ruby_2.3.8_rails32_mysql2.gemfile.lock +208 -0
- data/gemfiles/ruby_2.3.8_rails32_postgres.gemfile +38 -0
- data/gemfiles/ruby_2.3.8_rails32_postgres.gemfile.lock +200 -0
- data/gemfiles/ruby_2.3.8_rails32_postgres_redis.gemfile +40 -0
- data/gemfiles/ruby_2.3.8_rails32_postgres_redis.gemfile.lock +219 -0
- data/gemfiles/ruby_2.3.8_rails32_postgres_sidekiq.gemfile +39 -0
- data/gemfiles/ruby_2.3.8_rails32_postgres_sidekiq.gemfile.lock +209 -0
- data/gemfiles/ruby_2.3.8_rails4_mysql2.gemfile +38 -0
- data/gemfiles/ruby_2.3.8_rails4_mysql2.gemfile.lock +219 -0
- data/gemfiles/ruby_2.3.8_rails4_postgres.gemfile +38 -0
- data/gemfiles/ruby_2.3.8_rails4_postgres.gemfile.lock +219 -0
- data/gemfiles/ruby_2.3.8_rails4_postgres_redis.gemfile +40 -0
- data/gemfiles/ruby_2.3.8_rails4_postgres_redis.gemfile.lock +238 -0
- data/gemfiles/ruby_2.3.8_rails4_postgres_sidekiq.gemfile +40 -0
- data/gemfiles/ruby_2.3.8_rails4_postgres_sidekiq.gemfile.lock +230 -0
- data/gemfiles/ruby_2.3.8_rails4_semantic_logger.gemfile +38 -0
- data/gemfiles/ruby_2.3.8_rails4_semantic_logger.gemfile.lock +218 -0
- data/gemfiles/ruby_2.3.8_rails5_mysql2.gemfile +37 -0
- data/gemfiles/ruby_2.3.8_rails5_mysql2.gemfile.lock +230 -0
- data/gemfiles/ruby_2.3.8_rails5_postgres.gemfile +37 -0
- data/gemfiles/ruby_2.3.8_rails5_postgres.gemfile.lock +230 -0
- data/gemfiles/ruby_2.3.8_rails5_postgres_redis.gemfile +38 -0
- data/gemfiles/ruby_2.3.8_rails5_postgres_redis.gemfile.lock +232 -0
- data/gemfiles/ruby_2.3.8_rails5_postgres_redis_activesupport.gemfile +38 -0
- data/gemfiles/ruby_2.3.8_rails5_postgres_redis_activesupport.gemfile.lock +232 -0
- data/gemfiles/ruby_2.3.8_rails5_postgres_sidekiq.gemfile +39 -0
- data/gemfiles/ruby_2.3.8_rails5_postgres_sidekiq.gemfile.lock +241 -0
- data/gemfiles/ruby_2.3.8_rails5_semantic_logger.gemfile +37 -0
- data/gemfiles/ruby_2.3.8_rails5_semantic_logger.gemfile.lock +229 -0
- data/gemfiles/ruby_2.3.8_resque2_redis3.gemfile +35 -0
- data/gemfiles/ruby_2.3.8_resque2_redis3.gemfile.lock +146 -0
- data/gemfiles/ruby_2.3.8_resque2_redis4.gemfile +35 -0
- data/gemfiles/ruby_2.3.8_resque2_redis4.gemfile.lock +146 -0
- data/gemfiles/ruby_2.4.10_contrib.gemfile +81 -0
- data/gemfiles/ruby_2.4.10_contrib.gemfile.lock +1596 -0
- data/gemfiles/ruby_2.4.10_contrib_old.gemfile +39 -0
- data/gemfiles/ruby_2.4.10_contrib_old.gemfile.lock +157 -0
- data/gemfiles/ruby_2.4.10_core_old.gemfile +38 -0
- data/gemfiles/ruby_2.4.10_core_old.gemfile.lock +153 -0
- data/gemfiles/ruby_2.4.10_cucumber3.gemfile +39 -0
- data/gemfiles/ruby_2.4.10_cucumber3.gemfile.lock +174 -0
- data/gemfiles/ruby_2.4.10_cucumber4.gemfile +39 -0
- data/gemfiles/ruby_2.4.10_cucumber4.gemfile.lock +204 -0
- data/gemfiles/ruby_2.4.10_rails5_mysql2.gemfile +42 -0
- data/gemfiles/ruby_2.4.10_rails5_mysql2.gemfile.lock +264 -0
- data/gemfiles/ruby_2.4.10_rails5_postgres.gemfile +42 -0
- data/gemfiles/ruby_2.4.10_rails5_postgres.gemfile.lock +264 -0
- data/gemfiles/ruby_2.4.10_rails5_postgres_redis.gemfile +43 -0
- data/gemfiles/ruby_2.4.10_rails5_postgres_redis.gemfile.lock +266 -0
- data/gemfiles/ruby_2.4.10_rails5_postgres_redis_activesupport.gemfile +43 -0
- data/gemfiles/ruby_2.4.10_rails5_postgres_redis_activesupport.gemfile.lock +266 -0
- data/gemfiles/ruby_2.4.10_rails5_postgres_sidekiq.gemfile +44 -0
- data/gemfiles/ruby_2.4.10_rails5_postgres_sidekiq.gemfile.lock +275 -0
- data/gemfiles/ruby_2.4.10_rails5_semantic_logger.gemfile +42 -0
- data/gemfiles/ruby_2.4.10_rails5_semantic_logger.gemfile.lock +263 -0
- data/gemfiles/ruby_2.4.10_resque2_redis3.gemfile +40 -0
- data/gemfiles/ruby_2.4.10_resque2_redis3.gemfile.lock +180 -0
- data/gemfiles/ruby_2.4.10_resque2_redis4.gemfile +40 -0
- data/gemfiles/ruby_2.4.10_resque2_redis4.gemfile.lock +180 -0
- data/gemfiles/ruby_2.5.9_contrib.gemfile +86 -0
- data/gemfiles/ruby_2.5.9_contrib.gemfile.lock +1608 -0
- data/gemfiles/ruby_2.5.9_contrib_old.gemfile +40 -0
- data/gemfiles/ruby_2.5.9_contrib_old.gemfile.lock +167 -0
- data/gemfiles/ruby_2.5.9_core_old.gemfile +39 -0
- data/gemfiles/ruby_2.5.9_core_old.gemfile.lock +163 -0
- data/gemfiles/ruby_2.5.9_cucumber3.gemfile +40 -0
- data/gemfiles/ruby_2.5.9_cucumber3.gemfile.lock +184 -0
- data/gemfiles/ruby_2.5.9_cucumber4.gemfile +40 -0
- data/gemfiles/ruby_2.5.9_cucumber4.gemfile.lock +216 -0
- data/gemfiles/ruby_2.5.9_cucumber5.gemfile +40 -0
- data/gemfiles/ruby_2.5.9_cucumber5.gemfile.lock +216 -0
- data/gemfiles/ruby_2.5.9_rails5_mysql2.gemfile +45 -0
- data/gemfiles/ruby_2.5.9_rails5_mysql2.gemfile.lock +276 -0
- data/gemfiles/ruby_2.5.9_rails5_postgres.gemfile +45 -0
- data/gemfiles/ruby_2.5.9_rails5_postgres.gemfile.lock +276 -0
- data/gemfiles/ruby_2.5.9_rails5_postgres_redis.gemfile +46 -0
- data/gemfiles/ruby_2.5.9_rails5_postgres_redis.gemfile.lock +278 -0
- data/gemfiles/ruby_2.5.9_rails5_postgres_redis_activesupport.gemfile +46 -0
- data/gemfiles/ruby_2.5.9_rails5_postgres_redis_activesupport.gemfile.lock +278 -0
- data/gemfiles/ruby_2.5.9_rails5_postgres_sidekiq.gemfile +47 -0
- data/gemfiles/ruby_2.5.9_rails5_postgres_sidekiq.gemfile.lock +284 -0
- data/gemfiles/ruby_2.5.9_rails5_semantic_logger.gemfile +45 -0
- data/gemfiles/ruby_2.5.9_rails5_semantic_logger.gemfile.lock +275 -0
- data/gemfiles/ruby_2.5.9_rails61_mysql2.gemfile +45 -0
- data/gemfiles/ruby_2.5.9_rails61_mysql2.gemfile.lock +295 -0
- data/gemfiles/ruby_2.5.9_rails61_postgres.gemfile +45 -0
- data/gemfiles/ruby_2.5.9_rails61_postgres.gemfile.lock +295 -0
- data/gemfiles/ruby_2.5.9_rails61_postgres_redis.gemfile +46 -0
- data/gemfiles/ruby_2.5.9_rails61_postgres_redis.gemfile.lock +297 -0
- data/gemfiles/ruby_2.5.9_rails61_postgres_sidekiq.gemfile +46 -0
- data/gemfiles/ruby_2.5.9_rails61_postgres_sidekiq.gemfile.lock +302 -0
- data/gemfiles/ruby_2.5.9_rails61_semantic_logger.gemfile +45 -0
- data/gemfiles/ruby_2.5.9_rails61_semantic_logger.gemfile.lock +294 -0
- data/gemfiles/ruby_2.5.9_rails6_mysql2.gemfile +45 -0
- data/gemfiles/ruby_2.5.9_rails6_mysql2.gemfile.lock +292 -0
- data/gemfiles/ruby_2.5.9_rails6_postgres.gemfile +45 -0
- data/gemfiles/ruby_2.5.9_rails6_postgres.gemfile.lock +292 -0
- data/gemfiles/ruby_2.5.9_rails6_postgres_redis.gemfile +46 -0
- data/gemfiles/ruby_2.5.9_rails6_postgres_redis.gemfile.lock +294 -0
- data/gemfiles/ruby_2.5.9_rails6_postgres_redis_activesupport.gemfile +46 -0
- data/gemfiles/ruby_2.5.9_rails6_postgres_redis_activesupport.gemfile.lock +294 -0
- data/gemfiles/ruby_2.5.9_rails6_postgres_sidekiq.gemfile +47 -0
- data/gemfiles/ruby_2.5.9_rails6_postgres_sidekiq.gemfile.lock +300 -0
- data/gemfiles/ruby_2.5.9_rails6_semantic_logger.gemfile +45 -0
- data/gemfiles/ruby_2.5.9_rails6_semantic_logger.gemfile.lock +291 -0
- data/gemfiles/ruby_2.5.9_resque2_redis3.gemfile +41 -0
- data/gemfiles/ruby_2.5.9_resque2_redis3.gemfile.lock +190 -0
- data/gemfiles/ruby_2.5.9_resque2_redis4.gemfile +41 -0
- data/gemfiles/ruby_2.5.9_resque2_redis4.gemfile.lock +190 -0
- data/gemfiles/ruby_2.6.7_contrib.gemfile +82 -0
- data/gemfiles/ruby_2.6.7_contrib.gemfile.lock +1606 -0
- data/gemfiles/ruby_2.6.7_contrib_old.gemfile +40 -0
- data/gemfiles/ruby_2.6.7_contrib_old.gemfile.lock +169 -0
- data/gemfiles/ruby_2.6.7_core_old.gemfile +39 -0
- data/gemfiles/ruby_2.6.7_core_old.gemfile.lock +165 -0
- data/gemfiles/ruby_2.6.7_cucumber3.gemfile +40 -0
- data/gemfiles/ruby_2.6.7_cucumber3.gemfile.lock +186 -0
- data/gemfiles/ruby_2.6.7_cucumber4.gemfile +40 -0
- data/gemfiles/ruby_2.6.7_cucumber4.gemfile.lock +218 -0
- data/gemfiles/ruby_2.6.7_cucumber5.gemfile +40 -0
- data/gemfiles/ruby_2.6.7_cucumber5.gemfile.lock +218 -0
- data/gemfiles/ruby_2.6.7_rails5_mysql2.gemfile +43 -0
- data/gemfiles/ruby_2.6.7_rails5_mysql2.gemfile.lock +276 -0
- data/gemfiles/ruby_2.6.7_rails5_postgres.gemfile +43 -0
- data/gemfiles/ruby_2.6.7_rails5_postgres.gemfile.lock +276 -0
- data/gemfiles/ruby_2.6.7_rails5_postgres_redis.gemfile +44 -0
- data/gemfiles/ruby_2.6.7_rails5_postgres_redis.gemfile.lock +278 -0
- data/gemfiles/ruby_2.6.7_rails5_postgres_redis_activesupport.gemfile +44 -0
- data/gemfiles/ruby_2.6.7_rails5_postgres_redis_activesupport.gemfile.lock +278 -0
- data/gemfiles/ruby_2.6.7_rails5_postgres_sidekiq.gemfile +45 -0
- data/gemfiles/ruby_2.6.7_rails5_postgres_sidekiq.gemfile.lock +284 -0
- data/gemfiles/ruby_2.6.7_rails5_semantic_logger.gemfile +43 -0
- data/gemfiles/ruby_2.6.7_rails5_semantic_logger.gemfile.lock +275 -0
- data/gemfiles/ruby_2.6.7_rails61_mysql2.gemfile +43 -0
- data/gemfiles/ruby_2.6.7_rails61_mysql2.gemfile.lock +295 -0
- data/gemfiles/ruby_2.6.7_rails61_postgres.gemfile +43 -0
- data/gemfiles/ruby_2.6.7_rails61_postgres.gemfile.lock +295 -0
- data/gemfiles/ruby_2.6.7_rails61_postgres_redis.gemfile +44 -0
- data/gemfiles/ruby_2.6.7_rails61_postgres_redis.gemfile.lock +297 -0
- data/gemfiles/ruby_2.6.7_rails61_postgres_sidekiq.gemfile +44 -0
- data/gemfiles/ruby_2.6.7_rails61_postgres_sidekiq.gemfile.lock +302 -0
- data/gemfiles/ruby_2.6.7_rails61_semantic_logger.gemfile +43 -0
- data/gemfiles/ruby_2.6.7_rails61_semantic_logger.gemfile.lock +294 -0
- data/gemfiles/ruby_2.6.7_rails6_mysql2.gemfile +43 -0
- data/gemfiles/ruby_2.6.7_rails6_mysql2.gemfile.lock +292 -0
- data/gemfiles/ruby_2.6.7_rails6_postgres.gemfile +43 -0
- data/gemfiles/ruby_2.6.7_rails6_postgres.gemfile.lock +292 -0
- data/gemfiles/ruby_2.6.7_rails6_postgres_redis.gemfile +44 -0
- data/gemfiles/ruby_2.6.7_rails6_postgres_redis.gemfile.lock +294 -0
- data/gemfiles/ruby_2.6.7_rails6_postgres_redis_activesupport.gemfile +44 -0
- data/gemfiles/ruby_2.6.7_rails6_postgres_redis_activesupport.gemfile.lock +294 -0
- data/gemfiles/ruby_2.6.7_rails6_postgres_sidekiq.gemfile +45 -0
- data/gemfiles/ruby_2.6.7_rails6_postgres_sidekiq.gemfile.lock +300 -0
- data/gemfiles/ruby_2.6.7_rails6_semantic_logger.gemfile +43 -0
- data/gemfiles/ruby_2.6.7_rails6_semantic_logger.gemfile.lock +291 -0
- data/gemfiles/ruby_2.6.7_resque2_redis3.gemfile +41 -0
- data/gemfiles/ruby_2.6.7_resque2_redis3.gemfile.lock +192 -0
- data/gemfiles/ruby_2.6.7_resque2_redis4.gemfile +41 -0
- data/gemfiles/ruby_2.6.7_resque2_redis4.gemfile.lock +192 -0
- data/gemfiles/ruby_2.7.3_contrib.gemfile +81 -0
- data/gemfiles/ruby_2.7.3_contrib.gemfile.lock +1580 -0
- data/gemfiles/ruby_2.7.3_contrib_old.gemfile +40 -0
- data/gemfiles/ruby_2.7.3_contrib_old.gemfile.lock +169 -0
- data/gemfiles/ruby_2.7.3_core_old.gemfile +39 -0
- data/gemfiles/ruby_2.7.3_core_old.gemfile.lock +165 -0
- data/gemfiles/ruby_2.7.3_cucumber3.gemfile +40 -0
- data/gemfiles/ruby_2.7.3_cucumber3.gemfile.lock +186 -0
- data/gemfiles/ruby_2.7.3_cucumber4.gemfile +40 -0
- data/gemfiles/ruby_2.7.3_cucumber4.gemfile.lock +218 -0
- data/gemfiles/ruby_2.7.3_cucumber5.gemfile +40 -0
- data/gemfiles/ruby_2.7.3_cucumber5.gemfile.lock +218 -0
- data/gemfiles/ruby_2.7.3_rails5_mysql2.gemfile +43 -0
- data/gemfiles/ruby_2.7.3_rails5_mysql2.gemfile.lock +278 -0
- data/gemfiles/ruby_2.7.3_rails5_postgres.gemfile +43 -0
- data/gemfiles/ruby_2.7.3_rails5_postgres.gemfile.lock +278 -0
- data/gemfiles/ruby_2.7.3_rails5_postgres_redis.gemfile +45 -0
- data/gemfiles/ruby_2.7.3_rails5_postgres_redis.gemfile.lock +297 -0
- data/gemfiles/ruby_2.7.3_rails5_postgres_redis_activesupport.gemfile +45 -0
- data/gemfiles/ruby_2.7.3_rails5_postgres_redis_activesupport.gemfile.lock +297 -0
- data/gemfiles/ruby_2.7.3_rails5_postgres_sidekiq.gemfile +45 -0
- data/gemfiles/ruby_2.7.3_rails5_postgres_sidekiq.gemfile.lock +286 -0
- data/gemfiles/ruby_2.7.3_rails5_semantic_logger.gemfile +43 -0
- data/gemfiles/ruby_2.7.3_rails5_semantic_logger.gemfile.lock +277 -0
- data/gemfiles/ruby_2.7.3_rails61_mysql2.gemfile +43 -0
- data/gemfiles/ruby_2.7.3_rails61_mysql2.gemfile.lock +297 -0
- data/gemfiles/ruby_2.7.3_rails61_postgres.gemfile +43 -0
- data/gemfiles/ruby_2.7.3_rails61_postgres.gemfile.lock +297 -0
- data/gemfiles/ruby_2.7.3_rails61_postgres_redis.gemfile +44 -0
- data/gemfiles/ruby_2.7.3_rails61_postgres_redis.gemfile.lock +299 -0
- data/gemfiles/ruby_2.7.3_rails61_postgres_sidekiq.gemfile +44 -0
- data/gemfiles/ruby_2.7.3_rails61_postgres_sidekiq.gemfile.lock +304 -0
- data/gemfiles/ruby_2.7.3_rails61_semantic_logger.gemfile +43 -0
- data/gemfiles/ruby_2.7.3_rails61_semantic_logger.gemfile.lock +296 -0
- data/gemfiles/ruby_2.7.3_rails6_mysql2.gemfile +43 -0
- data/gemfiles/ruby_2.7.3_rails6_mysql2.gemfile.lock +294 -0
- data/gemfiles/ruby_2.7.3_rails6_postgres.gemfile +43 -0
- data/gemfiles/ruby_2.7.3_rails6_postgres.gemfile.lock +294 -0
- data/gemfiles/ruby_2.7.3_rails6_postgres_redis.gemfile +45 -0
- data/gemfiles/ruby_2.7.3_rails6_postgres_redis.gemfile.lock +313 -0
- data/gemfiles/ruby_2.7.3_rails6_postgres_redis_activesupport.gemfile +45 -0
- data/gemfiles/ruby_2.7.3_rails6_postgres_redis_activesupport.gemfile.lock +313 -0
- data/gemfiles/ruby_2.7.3_rails6_postgres_sidekiq.gemfile +45 -0
- data/gemfiles/ruby_2.7.3_rails6_postgres_sidekiq.gemfile.lock +302 -0
- data/gemfiles/ruby_2.7.3_rails6_semantic_logger.gemfile +43 -0
- data/gemfiles/ruby_2.7.3_rails6_semantic_logger.gemfile.lock +293 -0
- data/gemfiles/ruby_2.7.3_resque2_redis3.gemfile +41 -0
- data/gemfiles/ruby_2.7.3_resque2_redis3.gemfile.lock +192 -0
- data/gemfiles/ruby_2.7.3_resque2_redis4.gemfile +41 -0
- data/gemfiles/ruby_2.7.3_resque2_redis4.gemfile.lock +192 -0
- data/gemfiles/ruby_3.0.1_contrib.gemfile +80 -0
- data/gemfiles/ruby_3.0.1_contrib.gemfile.lock +1583 -0
- data/gemfiles/ruby_3.0.1_core_old.gemfile +40 -0
- data/gemfiles/ruby_3.0.1_core_old.gemfile.lock +167 -0
- data/gemfiles/ruby_3.0.1_cucumber3.gemfile +41 -0
- data/gemfiles/ruby_3.0.1_cucumber3.gemfile.lock +188 -0
- data/gemfiles/ruby_3.0.1_cucumber4.gemfile +41 -0
- data/gemfiles/ruby_3.0.1_cucumber4.gemfile.lock +220 -0
- data/gemfiles/ruby_3.0.1_cucumber5.gemfile +41 -0
- data/gemfiles/ruby_3.0.1_cucumber5.gemfile.lock +220 -0
- data/gemfiles/ruby_3.0.1_rails61_mysql2.gemfile +44 -0
- data/gemfiles/ruby_3.0.1_rails61_mysql2.gemfile.lock +297 -0
- data/gemfiles/ruby_3.0.1_rails61_postgres.gemfile +44 -0
- data/gemfiles/ruby_3.0.1_rails61_postgres.gemfile.lock +297 -0
- data/gemfiles/ruby_3.0.1_rails61_postgres_redis.gemfile +45 -0
- data/gemfiles/ruby_3.0.1_rails61_postgres_redis.gemfile.lock +299 -0
- data/gemfiles/ruby_3.0.1_rails61_postgres_sidekiq.gemfile +46 -0
- data/gemfiles/ruby_3.0.1_rails61_postgres_sidekiq.gemfile.lock +311 -0
- data/gemfiles/ruby_3.0.1_rails61_semantic_logger.gemfile +44 -0
- data/gemfiles/ruby_3.0.1_rails61_semantic_logger.gemfile.lock +296 -0
- data/gemfiles/ruby_3.0.1_resque2_redis3.gemfile +42 -0
- data/gemfiles/ruby_3.0.1_resque2_redis3.gemfile.lock +194 -0
- data/gemfiles/ruby_3.0.1_resque2_redis4.gemfile +42 -0
- data/gemfiles/ruby_3.0.1_resque2_redis4.gemfile.lock +194 -0
- data/integration/apps/rack/README.md +2 -2
- data/integration/apps/rack/script/ci +2 -1
- data/integration/apps/rails-five/README.md +2 -2
- data/integration/apps/rails-five/script/ci +2 -1
- data/integration/apps/rspec/.dockerignore +1 -0
- data/integration/apps/rspec/.envrc.sample +1 -0
- data/integration/apps/rspec/.gitignore +2 -0
- data/integration/apps/rspec/.rspec +1 -0
- data/integration/apps/rspec/Dockerfile +25 -0
- data/integration/apps/rspec/Dockerfile-ci +11 -0
- data/integration/apps/rspec/Gemfile +14 -0
- data/integration/apps/rspec/README.md +70 -0
- data/integration/apps/rspec/agent.yaml +3 -0
- data/integration/apps/rspec/app/datadog.rb +13 -0
- data/integration/apps/rspec/app/fibonacci.rb +30 -0
- data/integration/apps/rspec/bin/run +20 -0
- data/integration/apps/rspec/bin/setup +23 -0
- data/integration/apps/rspec/bin/test +21 -0
- data/integration/apps/rspec/docker-compose.ci.yml +51 -0
- data/integration/apps/rspec/docker-compose.yml +64 -0
- data/integration/apps/rspec/script/build-images +37 -0
- data/integration/apps/rspec/script/ci +53 -0
- data/integration/apps/rspec/spec/fibonacci_spec.rb +16 -0
- data/integration/apps/rspec/spec/rspec_spec.rb +58 -0
- data/integration/apps/rspec/spec/spec_helper.rb +24 -0
- data/integration/apps/ruby/README.md +2 -2
- data/integration/apps/ruby/script/ci +2 -1
- data/integration/images/include/datadog/demo_env.rb +15 -14
- data/lib/datadog/ci.rb +16 -0
- data/lib/datadog/ci/configuration/components.rb +30 -0
- data/lib/datadog/ci/configuration/settings.rb +36 -0
- data/lib/datadog/ci/context_flush.rb +28 -0
- data/lib/datadog/ci/contrib/cucumber/configuration/settings.rb +30 -0
- data/lib/datadog/ci/contrib/cucumber/ext.rb +19 -0
- data/lib/datadog/ci/contrib/cucumber/formatter.rb +97 -0
- data/lib/datadog/ci/contrib/cucumber/instrumentation.rb +26 -0
- data/lib/datadog/ci/contrib/cucumber/integration.rb +47 -0
- data/lib/datadog/ci/contrib/cucumber/patcher.rb +25 -0
- data/lib/datadog/ci/contrib/rspec/configuration/settings.rb +30 -0
- data/lib/datadog/ci/contrib/rspec/example.rb +73 -0
- data/lib/datadog/ci/contrib/rspec/ext.rb +18 -0
- data/lib/datadog/ci/contrib/rspec/integration.rb +48 -0
- data/lib/datadog/ci/contrib/rspec/patcher.rb +25 -0
- data/lib/datadog/ci/ext/app_types.rb +9 -0
- data/lib/datadog/ci/ext/environment.rb +438 -0
- data/lib/datadog/ci/ext/settings.rb +10 -0
- data/lib/datadog/ci/ext/test.rb +34 -0
- data/lib/datadog/ci/extensions.rb +17 -0
- data/lib/datadog/ci/test.rb +76 -0
- data/lib/datadog/core/environment/cgroup.rb +49 -0
- data/lib/datadog/core/environment/class_count.rb +19 -0
- data/lib/datadog/core/environment/container.rb +88 -0
- data/lib/datadog/core/environment/ext.rb +26 -0
- data/lib/datadog/core/environment/gc.rb +18 -0
- data/lib/datadog/core/environment/identity.rb +50 -0
- data/lib/datadog/core/environment/object_space.rb +22 -0
- data/lib/datadog/core/environment/socket.rb +16 -0
- data/lib/datadog/core/environment/thread_count.rb +18 -0
- data/lib/datadog/core/environment/variable_helpers.rb +39 -0
- data/lib/ddtrace.rb +2 -2
- data/lib/ddtrace/auto_instrument.rb +1 -0
- data/lib/ddtrace/buffer.rb +2 -2
- data/lib/ddtrace/configuration.rb +1 -23
- data/lib/ddtrace/configuration/agent_settings_resolver.rb +230 -0
- data/lib/ddtrace/configuration/base.rb +7 -10
- data/lib/ddtrace/configuration/components.rb +88 -43
- data/lib/ddtrace/configuration/options.rb +2 -2
- data/lib/ddtrace/configuration/settings.rb +76 -10
- data/lib/ddtrace/context.rb +17 -14
- data/lib/ddtrace/context_flush.rb +14 -2
- data/lib/ddtrace/contrib/action_cable/event.rb +4 -4
- data/lib/ddtrace/contrib/action_pack/action_controller/instrumentation.rb +1 -1
- data/lib/ddtrace/contrib/action_pack/action_controller/patcher.rb +1 -1
- data/lib/ddtrace/contrib/action_pack/utils.rb +1 -1
- data/lib/ddtrace/contrib/action_view/event.rb +2 -2
- data/lib/ddtrace/contrib/action_view/patcher.rb +4 -4
- data/lib/ddtrace/contrib/active_model_serializers/event.rb +2 -2
- data/lib/ddtrace/contrib/active_record/event.rb +2 -2
- data/lib/ddtrace/contrib/active_record/utils.rb +2 -2
- data/lib/ddtrace/contrib/active_support/cache/patcher.rb +7 -7
- data/lib/ddtrace/contrib/active_support/cache/redis.rb +1 -5
- data/lib/ddtrace/contrib/active_support/notifications/event.rb +2 -2
- data/lib/ddtrace/contrib/active_support/notifications/subscriber.rb +1 -1
- data/lib/ddtrace/contrib/auto_instrument.rb +1 -2
- data/lib/ddtrace/contrib/aws/instrumentation.rb +29 -0
- data/lib/ddtrace/contrib/aws/patcher.rb +4 -0
- data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +1 -1
- data/lib/ddtrace/contrib/configurable.rb +1 -1
- data/lib/ddtrace/contrib/dalli/instrumentation.rb +1 -1
- data/lib/ddtrace/contrib/dalli/patcher.rb +1 -1
- data/lib/ddtrace/contrib/ethon/easy_patch.rb +1 -1
- data/lib/ddtrace/contrib/ethon/multi_patch.rb +1 -1
- data/lib/ddtrace/contrib/ethon/patcher.rb +2 -2
- data/lib/ddtrace/contrib/extensions.rb +3 -3
- data/lib/ddtrace/contrib/faraday/patcher.rb +2 -2
- data/lib/ddtrace/contrib/grape/instrumentation.rb +2 -2
- data/lib/ddtrace/contrib/grape/patcher.rb +1 -1
- data/lib/ddtrace/contrib/grpc/patcher.rb +1 -1
- data/lib/ddtrace/contrib/http/instrumentation.rb +1 -1
- data/lib/ddtrace/contrib/http/patcher.rb +1 -1
- data/lib/ddtrace/contrib/httpclient/instrumentation.rb +1 -1
- data/lib/ddtrace/contrib/httpclient/patcher.rb +1 -1
- data/lib/ddtrace/contrib/httprb/instrumentation.rb +1 -1
- data/lib/ddtrace/contrib/httprb/patcher.rb +1 -1
- data/lib/ddtrace/contrib/integration.rb +3 -3
- data/lib/ddtrace/contrib/kafka/event.rb +2 -2
- data/lib/ddtrace/contrib/lograge/configuration/settings.rb +18 -0
- data/lib/ddtrace/contrib/lograge/ext.rb +10 -0
- data/lib/ddtrace/contrib/lograge/instrumentation.rb +38 -0
- data/lib/ddtrace/contrib/lograge/integration.rb +45 -0
- data/lib/ddtrace/contrib/{rspec → lograge}/patcher.rb +6 -4
- data/lib/ddtrace/contrib/mongodb/instrumentation.rb +2 -2
- data/lib/ddtrace/contrib/mongodb/patcher.rb +2 -2
- data/lib/ddtrace/contrib/mysql2/instrumentation.rb +1 -1
- data/lib/ddtrace/contrib/mysql2/patcher.rb +1 -1
- data/lib/ddtrace/contrib/patchable.rb +2 -2
- data/lib/ddtrace/contrib/patcher.rb +2 -2
- data/lib/ddtrace/contrib/presto/instrumentation.rb +1 -1
- data/lib/ddtrace/contrib/presto/patcher.rb +1 -1
- data/lib/ddtrace/contrib/qless/patcher.rb +3 -5
- data/lib/ddtrace/contrib/racecar/event.rb +2 -2
- data/lib/ddtrace/contrib/rack/middlewares.rb +1 -1
- data/lib/ddtrace/contrib/rails/framework.rb +25 -1
- data/lib/ddtrace/contrib/rails/log_injection.rb +0 -40
- data/lib/ddtrace/contrib/rails/patcher.rb +11 -9
- data/lib/ddtrace/contrib/rake/instrumentation.rb +1 -1
- data/lib/ddtrace/contrib/rake/patcher.rb +1 -1
- data/lib/ddtrace/contrib/registerable.rb +2 -2
- data/lib/ddtrace/contrib/resque/patcher.rb +1 -1
- data/lib/ddtrace/contrib/rest_client/patcher.rb +1 -1
- data/lib/ddtrace/contrib/rest_client/request_patch.rb +1 -1
- data/lib/ddtrace/contrib/semantic_logger/configuration/settings.rb +18 -0
- data/lib/ddtrace/contrib/semantic_logger/ext.rb +10 -0
- data/lib/ddtrace/contrib/semantic_logger/instrumentation.rb +42 -0
- data/lib/ddtrace/contrib/semantic_logger/integration.rb +47 -0
- data/lib/ddtrace/contrib/semantic_logger/patcher.rb +25 -0
- data/lib/ddtrace/contrib/sequel/database.rb +1 -1
- data/lib/ddtrace/contrib/sequel/dataset.rb +1 -1
- data/lib/ddtrace/contrib/sequel/patcher.rb +2 -2
- data/lib/ddtrace/contrib/sinatra/patcher.rb +1 -1
- data/lib/ddtrace/contrib/sucker_punch/exception_handler.rb +4 -6
- data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +4 -0
- data/lib/ddtrace/correlation.rb +1 -1
- data/lib/ddtrace/diagnostics/environment_logger.rb +4 -4
- data/lib/ddtrace/error.rb +76 -9
- data/lib/ddtrace/ext/app_types.rb +0 -1
- data/lib/ddtrace/ext/environment.rb +7 -0
- data/lib/ddtrace/ext/git.rb +9 -1
- data/lib/ddtrace/ext/profiling.rb +1 -0
- data/lib/ddtrace/ext/runtime.rb +0 -9
- data/lib/ddtrace/ext/test.rb +2 -18
- data/lib/ddtrace/ext/transport.rb +1 -0
- data/lib/ddtrace/metrics.rb +64 -13
- data/lib/ddtrace/opentelemetry/extensions.rb +1 -1
- data/lib/ddtrace/opentracer.rb +20 -39
- data/lib/ddtrace/patcher.rb +2 -2
- data/lib/ddtrace/profiling.rb +75 -22
- data/lib/ddtrace/profiling/collectors/stack.rb +17 -8
- data/lib/ddtrace/profiling/encoding/profile.rb +6 -0
- data/lib/ddtrace/profiling/ext/cpu.rb +18 -5
- data/lib/ddtrace/profiling/ext/cthread.rb +56 -35
- data/lib/ddtrace/profiling/ext/forking.rb +7 -7
- data/lib/ddtrace/profiling/flush.rb +12 -10
- data/lib/ddtrace/profiling/pprof/builder.rb +26 -28
- data/lib/ddtrace/profiling/pprof/converter.rb +4 -0
- data/lib/ddtrace/profiling/pprof/stack_sample.rb +17 -1
- data/lib/ddtrace/profiling/pprof/template.rb +4 -0
- data/lib/ddtrace/profiling/profiler.rb +2 -0
- data/lib/ddtrace/profiling/recorder.rb +8 -0
- data/lib/ddtrace/profiling/scheduler.rb +44 -12
- data/lib/ddtrace/profiling/tasks/setup.rb +13 -13
- data/lib/ddtrace/profiling/transport/http.rb +58 -62
- data/lib/ddtrace/profiling/transport/http/api/endpoint.rb +12 -2
- data/lib/ddtrace/runtime/metrics.rb +20 -14
- data/lib/ddtrace/span.rb +17 -6
- data/lib/ddtrace/sync_writer.rb +4 -3
- data/lib/ddtrace/tracer.rb +19 -44
- data/lib/ddtrace/transport/http.rb +43 -40
- data/lib/ddtrace/transport/http/statistics.rb +2 -2
- data/lib/ddtrace/transport/http/traces.rb +3 -3
- data/lib/ddtrace/transport/io/traces.rb +1 -1
- data/lib/ddtrace/utils/forking.rb +1 -1
- data/lib/ddtrace/utils/object_set.rb +3 -5
- data/lib/ddtrace/utils/time.rb +1 -3
- data/lib/ddtrace/version.rb +15 -5
- data/lib/ddtrace/workers.rb +1 -1
- data/lib/ddtrace/workers/async.rb +3 -2
- data/lib/ddtrace/workers/loop.rb +14 -2
- data/lib/ddtrace/workers/polling.rb +11 -5
- data/lib/ddtrace/workers/queue.rb +1 -1
- data/lib/ddtrace/workers/trace_writer.rb +3 -6
- data/lib/ddtrace/writer.rb +6 -3
- data/tasks/update_appraisal_gemfiles.rake +36 -0
- metadata +493 -33
- data/.circleci/images/primary/Dockerfile-2.0.0 +0 -83
- data/integration/images/ruby/2.0/Dockerfile +0 -54
- data/lib/ddtrace/contrib/cucumber/configuration/settings.rb +0 -28
- data/lib/ddtrace/contrib/cucumber/ext.rb +0 -17
- data/lib/ddtrace/contrib/cucumber/formatter.rb +0 -98
- data/lib/ddtrace/contrib/cucumber/instrumentation.rb +0 -24
- data/lib/ddtrace/contrib/cucumber/integration.rb +0 -45
- data/lib/ddtrace/contrib/cucumber/patcher.rb +0 -23
- data/lib/ddtrace/contrib/rspec/configuration/settings.rb +0 -28
- data/lib/ddtrace/contrib/rspec/example.rb +0 -75
- data/lib/ddtrace/contrib/rspec/ext.rb +0 -16
- data/lib/ddtrace/contrib/rspec/integration.rb +0 -46
- data/lib/ddtrace/environment.rb +0 -41
- data/lib/ddtrace/ext/ci.rb +0 -297
- data/lib/ddtrace/runtime/cgroup.rb +0 -44
- data/lib/ddtrace/runtime/class_count.rb +0 -17
- data/lib/ddtrace/runtime/container.rb +0 -79
- data/lib/ddtrace/runtime/gc.rb +0 -16
- data/lib/ddtrace/runtime/identity.rb +0 -48
- 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
@@ -1,7 +1,7 @@
|
|
1
|
-
require '
|
1
|
+
require 'datadog/core/environment/ext'
|
2
2
|
require 'ddtrace/ext/transport'
|
3
3
|
|
4
|
-
require '
|
4
|
+
require 'datadog/core/environment/container'
|
5
5
|
|
6
6
|
require 'ddtrace/profiling/transport/http/builder'
|
7
7
|
require 'ddtrace/profiling/transport/http/api'
|
@@ -13,7 +13,6 @@ require 'ddtrace/transport/http/adapters/unix_socket'
|
|
13
13
|
module Datadog
|
14
14
|
module Profiling
|
15
15
|
module Transport
|
16
|
-
# TODO: Consolidate with Dataog::Transport::HTTP
|
17
16
|
# Namespace for HTTP transport components
|
18
17
|
module HTTP
|
19
18
|
module_function
|
@@ -25,97 +24,94 @@ module Datadog
|
|
25
24
|
|
26
25
|
# Builds a new Transport::HTTP::Client with default settings
|
27
26
|
# Pass a block to override any settings.
|
28
|
-
def default(
|
27
|
+
def default(profiling_upload_timeout_seconds:, agent_settings: nil, site: nil, api_key: nil)
|
29
28
|
new do |transport|
|
30
29
|
transport.headers default_headers
|
31
30
|
|
32
31
|
# Configure adapter & API
|
33
|
-
if
|
34
|
-
configure_for_agentless(
|
32
|
+
if site && api_key
|
33
|
+
configure_for_agentless(
|
34
|
+
transport,
|
35
|
+
profiling_upload_timeout_seconds: profiling_upload_timeout_seconds,
|
36
|
+
site: site,
|
37
|
+
api_key: api_key
|
38
|
+
)
|
35
39
|
else
|
36
|
-
|
40
|
+
unless agent_settings
|
41
|
+
raise(
|
42
|
+
ArgumentError,
|
43
|
+
"Missing configuration for #{self}.default: All of `agent_settings`, `site` and `api_key` are nil"
|
44
|
+
)
|
45
|
+
end
|
46
|
+
|
47
|
+
configure_for_agent(
|
48
|
+
transport,
|
49
|
+
profiling_upload_timeout_seconds: profiling_upload_timeout_seconds,
|
50
|
+
agent_settings: agent_settings
|
51
|
+
)
|
37
52
|
end
|
38
|
-
|
39
|
-
# Additional options
|
40
|
-
unless options.empty?
|
41
|
-
# Change default API
|
42
|
-
transport.default_api = options[:api_version] if options.key?(:api_version)
|
43
|
-
|
44
|
-
# Add headers
|
45
|
-
transport.headers options[:headers] if options.key?(:headers)
|
46
|
-
|
47
|
-
# Execute on_build callback
|
48
|
-
options[:on_build].call(transport) if options[:on_build].is_a?(Proc)
|
49
|
-
end
|
50
|
-
|
51
|
-
# Call block to apply any customization, if provided.
|
52
|
-
yield(transport) if block_given?
|
53
53
|
end
|
54
54
|
end
|
55
55
|
|
56
56
|
def default_headers
|
57
57
|
{
|
58
|
-
Datadog::Ext::Transport::HTTP::HEADER_META_LANG =>
|
59
|
-
Datadog::Ext::Transport::HTTP::HEADER_META_LANG_VERSION =>
|
60
|
-
Datadog::Ext::Transport::HTTP::HEADER_META_LANG_INTERPRETER =>
|
61
|
-
Datadog::Ext::Transport::HTTP::HEADER_META_TRACER_VERSION =>
|
58
|
+
Datadog::Ext::Transport::HTTP::HEADER_META_LANG => Core::Environment::Ext::LANG,
|
59
|
+
Datadog::Ext::Transport::HTTP::HEADER_META_LANG_VERSION => Core::Environment::Ext::LANG_VERSION,
|
60
|
+
Datadog::Ext::Transport::HTTP::HEADER_META_LANG_INTERPRETER => Core::Environment::Ext::LANG_INTERPRETER,
|
61
|
+
Datadog::Ext::Transport::HTTP::HEADER_META_TRACER_VERSION => Core::Environment::Ext::TRACER_VERSION
|
62
62
|
}.tap do |headers|
|
63
63
|
# Add container ID, if present.
|
64
|
-
container_id = Datadog::
|
64
|
+
container_id = Datadog::Core::Environment::Container.container_id
|
65
65
|
headers[Datadog::Ext::Transport::HTTP::HEADER_CONTAINER_ID] = container_id unless container_id.nil?
|
66
66
|
end
|
67
67
|
end
|
68
68
|
|
69
|
-
def default_adapter
|
69
|
+
private_class_method def default_adapter
|
70
70
|
:net_http
|
71
71
|
end
|
72
72
|
|
73
|
-
def
|
74
|
-
ENV.fetch(Datadog::Ext::Transport::HTTP::ENV_DEFAULT_HOST, Datadog::Ext::Transport::HTTP::DEFAULT_HOST)
|
75
|
-
end
|
76
|
-
|
77
|
-
def default_port
|
78
|
-
ENV.fetch(Datadog::Ext::Transport::HTTP::ENV_DEFAULT_PORT, Datadog::Ext::Transport::HTTP::DEFAULT_PORT).to_i
|
79
|
-
end
|
80
|
-
|
81
|
-
def configure_for_agent(transport, options = {})
|
73
|
+
private_class_method def configure_for_agent(transport, profiling_upload_timeout_seconds:, agent_settings:)
|
82
74
|
apis = API.agent_defaults
|
83
75
|
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
76
|
+
transport.adapter(
|
77
|
+
default_adapter,
|
78
|
+
agent_settings.hostname,
|
79
|
+
agent_settings.port,
|
80
|
+
# We explictly use profiling_upload_timeout_seconds instead of agent_settings.timeout because profile
|
81
|
+
# uploads are bigger and thus we employ a separate configuration.
|
82
|
+
timeout: profiling_upload_timeout_seconds,
|
83
|
+
ssl: agent_settings.ssl
|
84
|
+
)
|
85
|
+
transport.api(API::V1, apis[API::V1], default: true)
|
86
|
+
|
87
|
+
# NOTE: This proc, when it exists, usually overrides the transport specified above
|
88
|
+
if agent_settings.deprecated_for_removal_transport_configuration_proc
|
89
|
+
agent_settings.deprecated_for_removal_transport_configuration_proc.call(transport)
|
90
|
+
end
|
93
91
|
end
|
94
92
|
|
95
|
-
def configure_for_agentless(transport,
|
93
|
+
private_class_method def configure_for_agentless(transport, profiling_upload_timeout_seconds:, site:, api_key:)
|
96
94
|
apis = API.api_defaults
|
97
95
|
|
98
|
-
site_uri = URI(format(Datadog::Ext::Profiling::Transport::HTTP::URI_TEMPLATE_DD_API,
|
99
|
-
hostname =
|
100
|
-
port =
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
96
|
+
site_uri = URI(format(Datadog::Ext::Profiling::Transport::HTTP::URI_TEMPLATE_DD_API, site))
|
97
|
+
hostname = site_uri.host
|
98
|
+
port = site_uri.port
|
99
|
+
|
100
|
+
transport.adapter(
|
101
|
+
default_adapter,
|
102
|
+
hostname,
|
103
|
+
port,
|
104
|
+
timeout: profiling_upload_timeout_seconds,
|
105
|
+
ssl: site_uri.scheme == 'https'
|
106
|
+
)
|
107
|
+
transport.api(API::V1, apis[API::V1], default: true)
|
108
|
+
transport.headers(Datadog::Ext::Transport::HTTP::HEADER_DD_API_KEY => api_key)
|
109
109
|
end
|
110
110
|
|
111
111
|
# Add adapters to registry
|
112
112
|
Builder::REGISTRY.set(Datadog::Transport::HTTP::Adapters::Net, :net_http)
|
113
113
|
Builder::REGISTRY.set(Datadog::Transport::HTTP::Adapters::Test, :test)
|
114
114
|
Builder::REGISTRY.set(Datadog::Transport::HTTP::Adapters::UnixSocket, :unix)
|
115
|
-
|
116
|
-
private \
|
117
|
-
:configure_for_agent,
|
118
|
-
:configure_for_agentless
|
119
115
|
end
|
120
116
|
end
|
121
117
|
end
|
@@ -14,10 +14,15 @@ module Datadog
|
|
14
14
|
class Endpoint < Datadog::Transport::HTTP::API::Endpoint
|
15
15
|
include Datadog::Ext::Profiling::Transport::HTTP
|
16
16
|
|
17
|
+
# These tags are read from the flush object (see below) directly and so we ignore any extra copies that
|
18
|
+
# may come in the tags hash to avoid duplicates.
|
19
|
+
TAGS_TO_IGNORE_IN_TAGS_HASH = %w[service env version].freeze
|
20
|
+
private_constant :TAGS_TO_IGNORE_IN_TAGS_HASH
|
21
|
+
|
17
22
|
attr_reader \
|
18
23
|
:encoder
|
19
24
|
|
20
|
-
def initialize(path, encoder
|
25
|
+
def initialize(path, encoder)
|
21
26
|
super(:post, path)
|
22
27
|
@encoder = encoder
|
23
28
|
end
|
@@ -48,10 +53,15 @@ module Datadog
|
|
48
53
|
"#{FORM_FIELD_TAG_RUNTIME_ENGINE}:#{flush.runtime_engine}",
|
49
54
|
"#{FORM_FIELD_TAG_RUNTIME_PLATFORM}:#{flush.runtime_platform}",
|
50
55
|
"#{FORM_FIELD_TAG_RUNTIME_VERSION}:#{flush.runtime_version}",
|
56
|
+
"#{FORM_FIELD_TAG_PID}:#{Process.pid}",
|
51
57
|
"#{FORM_FIELD_TAG_PROFILER_VERSION}:#{flush.profiler_version}",
|
52
58
|
# NOTE: Redundant w/ 'runtime'; may want to remove this later.
|
53
59
|
"#{FORM_FIELD_TAG_LANGUAGE}:#{flush.language}",
|
54
|
-
"#{FORM_FIELD_TAG_HOST}:#{flush.host}"
|
60
|
+
"#{FORM_FIELD_TAG_HOST}:#{flush.host}",
|
61
|
+
*flush
|
62
|
+
.tags
|
63
|
+
.reject { |tag_key| TAGS_TO_IGNORE_IN_TAGS_HASH.include?(tag_key) }
|
64
|
+
.map { |tag_key, tag_value| "#{tag_key}:#{tag_value}" }
|
55
65
|
],
|
56
66
|
FORM_FIELD_DATA => pprof_file,
|
57
67
|
FORM_FIELD_RUNTIME => flush.language,
|
@@ -2,16 +2,16 @@ require 'ddtrace/ext/integration'
|
|
2
2
|
require 'ddtrace/ext/runtime'
|
3
3
|
|
4
4
|
require 'ddtrace/metrics'
|
5
|
-
require '
|
6
|
-
require '
|
7
|
-
require '
|
8
|
-
require '
|
5
|
+
require 'datadog/core/environment/class_count'
|
6
|
+
require 'datadog/core/environment/gc'
|
7
|
+
require 'datadog/core/environment/identity'
|
8
|
+
require 'datadog/core/environment/thread_count'
|
9
9
|
|
10
10
|
module Datadog
|
11
11
|
module Runtime
|
12
12
|
# For generating runtime metrics
|
13
13
|
class Metrics < Datadog::Metrics
|
14
|
-
def initialize(options
|
14
|
+
def initialize(**options)
|
15
15
|
super
|
16
16
|
|
17
17
|
# Initialize service list
|
@@ -29,7 +29,7 @@ module Datadog
|
|
29
29
|
# Tag span with language and runtime ID for association with metrics.
|
30
30
|
# We only tag spans that performed internal application work.
|
31
31
|
unless span.get_tag(Datadog::Ext::Integration::TAG_PEER_SERVICE)
|
32
|
-
span.set_tag(Ext::Runtime::TAG_LANG,
|
32
|
+
span.set_tag(Ext::Runtime::TAG_LANG, Core::Environment::Identity.lang)
|
33
33
|
end
|
34
34
|
end
|
35
35
|
|
@@ -52,17 +52,23 @@ module Datadog
|
|
52
52
|
def flush
|
53
53
|
return unless enabled?
|
54
54
|
|
55
|
-
try_flush
|
56
|
-
|
57
|
-
|
55
|
+
try_flush do
|
56
|
+
if Core::Environment::ClassCount.available?
|
57
|
+
gauge(Ext::Runtime::Metrics::METRIC_CLASS_COUNT, Core::Environment::ClassCount.value)
|
58
|
+
end
|
59
|
+
end
|
60
|
+
try_flush do
|
61
|
+
if Core::Environment::ThreadCount.available?
|
62
|
+
gauge(Ext::Runtime::Metrics::METRIC_THREAD_COUNT, Core::Environment::ThreadCount.value)
|
63
|
+
end
|
64
|
+
end
|
65
|
+
try_flush { gc_metrics.each { |metric, value| gauge(metric, value) } if Core::Environment::GC.available? }
|
58
66
|
end
|
59
67
|
|
60
68
|
def gc_metrics
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
end
|
65
|
-
]
|
69
|
+
Core::Environment::GC.stat.flat_map do |k, v|
|
70
|
+
nested_gc_metric(Ext::Runtime::Metrics::METRIC_GC_PREFIX, k, v)
|
71
|
+
end.to_h
|
66
72
|
end
|
67
73
|
|
68
74
|
def try_flush
|
data/lib/ddtrace/span.rb
CHANGED
@@ -2,9 +2,12 @@
|
|
2
2
|
|
3
3
|
require 'time'
|
4
4
|
require 'ddtrace/utils'
|
5
|
+
require 'ddtrace/ext/distributed'
|
6
|
+
require 'ddtrace/ext/environment'
|
5
7
|
require 'ddtrace/ext/errors'
|
8
|
+
require 'ddtrace/ext/http'
|
9
|
+
require 'ddtrace/ext/net'
|
6
10
|
require 'ddtrace/ext/priority'
|
7
|
-
require 'ddtrace/environment'
|
8
11
|
require 'ddtrace/analytics'
|
9
12
|
require 'ddtrace/forced_tracing'
|
10
13
|
require 'ddtrace/diagnostics/health'
|
@@ -38,6 +41,17 @@ module Datadog
|
|
38
41
|
# This limit is for numeric tags because uint64 could end up rounded.
|
39
42
|
NUMERIC_TAG_SIZE_RANGE = (-1 << 53..1 << 53).freeze
|
40
43
|
|
44
|
+
# Some associated values should always be sent as Tags, never as Metrics, regardless
|
45
|
+
# if their value is numeric or not.
|
46
|
+
# The Datadog agent will look for these values only as Tags, not Metrics.
|
47
|
+
# @see https://github.com/DataDog/datadog-agent/blob/2ae2cdd315bcda53166dd8fa0dedcfc448087b9d/pkg/trace/stats/aggregation.go#L13-L17
|
48
|
+
ENSURE_AGENT_TAGS = {
|
49
|
+
Ext::DistributedTracing::ORIGIN_KEY => true,
|
50
|
+
Ext::Environment::TAG_VERSION => true,
|
51
|
+
Ext::HTTP::STATUS_CODE => true,
|
52
|
+
Ext::NET::TAG_HOSTNAME => true
|
53
|
+
}.freeze
|
54
|
+
|
41
55
|
attr_accessor :name, :service, :resource, :span_type,
|
42
56
|
:span_id, :trace_id, :parent_id,
|
43
57
|
:status, :sampled,
|
@@ -101,11 +115,8 @@ module Datadog
|
|
101
115
|
# Keys must be unique between tags and metrics
|
102
116
|
@metrics.delete(key)
|
103
117
|
|
104
|
-
#
|
105
|
-
|
106
|
-
# DEV: This is necessary because the agent looks to `meta['http.status_code']` for
|
107
|
-
# tagging necessary metrics
|
108
|
-
value = value.to_s if key == Ext::HTTP::STATUS_CODE
|
118
|
+
# DEV: This is necessary because the agent looks at `meta[key]`, not `metrics[key]`.
|
119
|
+
value = value.to_s if ENSURE_AGENT_TAGS[key]
|
109
120
|
|
110
121
|
# NOTE: Adding numeric tags as metrics is stop-gap support
|
111
122
|
# for numeric typed tags. Eventually they will become
|
data/lib/ddtrace/sync_writer.rb
CHANGED
@@ -1,5 +1,5 @@
|
|
1
1
|
require 'ddtrace/ext/net'
|
2
|
-
require '
|
2
|
+
require 'datadog/core/environment/socket'
|
3
3
|
require 'ddtrace/runtime/metrics'
|
4
4
|
require 'ddtrace/utils/only_once'
|
5
5
|
|
@@ -20,7 +20,8 @@ module Datadog
|
|
20
20
|
def initialize(options = {})
|
21
21
|
@transport = options.fetch(:transport) do
|
22
22
|
transport_options = options.fetch(:transport_options, {})
|
23
|
-
|
23
|
+
transport_options[:agent_settings] = options[:agent_settings] if options.key?(:agent_settings)
|
24
|
+
Transport::HTTP.default(**transport_options)
|
24
25
|
end
|
25
26
|
|
26
27
|
@priority_sampler = options.fetch(:priority_sampler, nil)
|
@@ -59,7 +60,7 @@ module Datadog
|
|
59
60
|
|
60
61
|
def inject_hostname!(trace)
|
61
62
|
unless trace.first.nil?
|
62
|
-
hostname = Datadog::
|
63
|
+
hostname = Datadog::Core::Environment::Socket.hostname
|
63
64
|
trace.first.set_tag(Ext::NET::TAG_HOSTNAME, hostname) unless hostname.nil? || hostname.empty?
|
64
65
|
end
|
65
66
|
end
|
data/lib/ddtrace/tracer.rb
CHANGED
@@ -1,12 +1,12 @@
|
|
1
1
|
require 'logger'
|
2
2
|
require 'pathname'
|
3
3
|
|
4
|
-
require 'ddtrace/environment'
|
4
|
+
require 'ddtrace/ext/environment'
|
5
5
|
require 'ddtrace/span'
|
6
6
|
require 'ddtrace/context'
|
7
7
|
require 'ddtrace/logger'
|
8
8
|
require 'ddtrace/writer'
|
9
|
-
require '
|
9
|
+
require 'datadog/core/environment/identity'
|
10
10
|
require 'ddtrace/sampler'
|
11
11
|
require 'ddtrace/sampling'
|
12
12
|
require 'ddtrace/correlation'
|
@@ -74,7 +74,9 @@ module Datadog
|
|
74
74
|
# by default.
|
75
75
|
def initialize(options = {})
|
76
76
|
# Configurable options
|
77
|
-
@context_flush = if options[:
|
77
|
+
@context_flush = if options[:context_flush]
|
78
|
+
options[:context_flush]
|
79
|
+
elsif options[:partial_flush]
|
78
80
|
Datadog::ContextFlush::Partial.new(options)
|
79
81
|
else
|
80
82
|
Datadog::ContextFlush::Finished.new
|
@@ -85,7 +87,7 @@ module Datadog
|
|
85
87
|
@provider = options.fetch(:context_provider, Datadog::DefaultContextProvider.new)
|
86
88
|
@sampler = options.fetch(:sampler, Datadog::AllSampler.new)
|
87
89
|
@tags = options.fetch(:tags, {})
|
88
|
-
@writer = options.fetch(:writer
|
90
|
+
@writer = options.fetch(:writer) { Datadog::Writer.new }
|
89
91
|
|
90
92
|
# Instance variables
|
91
93
|
@mutex = Mutex.new
|
@@ -118,8 +120,10 @@ module Datadog
|
|
118
120
|
|
119
121
|
configure_writer(options)
|
120
122
|
|
121
|
-
if options.key?(:partial_flush)
|
122
|
-
@context_flush = if options[:
|
123
|
+
if options.key?(:context_flush) || options.key?(:partial_flush)
|
124
|
+
@context_flush = if options[:context_flush]
|
125
|
+
options[:context_flush]
|
126
|
+
elsif options[:partial_flush]
|
123
127
|
Datadog::ContextFlush::Partial.new(options)
|
124
128
|
else
|
125
129
|
Datadog::ContextFlush::Finished.new
|
@@ -145,15 +149,7 @@ module Datadog
|
|
145
149
|
# for non-root spans which have a parent. However, root spans without
|
146
150
|
# a service would be invalid and rejected.
|
147
151
|
def default_service
|
148
|
-
|
149
|
-
|
150
|
-
begin
|
151
|
-
@default_service = File.basename($PROGRAM_NAME, '.*')
|
152
|
-
rescue StandardError => e
|
153
|
-
Datadog.logger.error("unable to guess default service: #{e}")
|
154
|
-
@default_service = 'ruby'.freeze
|
155
|
-
end
|
156
|
-
@default_service
|
152
|
+
@default_service ||= Datadog::Ext::Environment::FALLBACK_SERVICE_NAME
|
157
153
|
end
|
158
154
|
|
159
155
|
# Set the given key / value tag pair at the tracer level. These tags will be
|
@@ -162,7 +158,7 @@ module Datadog
|
|
162
158
|
#
|
163
159
|
# tracer.set_tags('env' => 'prod', 'component' => 'core')
|
164
160
|
def set_tags(tags)
|
165
|
-
string_tags =
|
161
|
+
string_tags = tags.collect { |k, v| [k.to_s, v] }.to_h
|
166
162
|
@tags = @tags.merge(string_tags)
|
167
163
|
end
|
168
164
|
|
@@ -205,7 +201,7 @@ module Datadog
|
|
205
201
|
# root span
|
206
202
|
@sampler.sample!(span)
|
207
203
|
span.set_tag('system.pid', Process.pid)
|
208
|
-
span.set_tag(Datadog::Ext::Runtime::TAG_ID, Datadog::
|
204
|
+
span.set_tag(Datadog::Ext::Runtime::TAG_ID, Datadog::Core::Environment::Identity.id)
|
209
205
|
|
210
206
|
if ctx && ctx.trace_id
|
211
207
|
span.trace_id = ctx.trace_id
|
@@ -391,20 +387,14 @@ module Datadog
|
|
391
387
|
|
392
388
|
# TODO: Move this kind of configuration building out of the tracer.
|
393
389
|
# Tracer should not have this kind of knowledge of writer.
|
394
|
-
# rubocop:disable Metrics/PerceivedComplexity
|
395
|
-
# rubocop:disable Metrics/CyclomaticComplexity
|
396
|
-
# rubocop:disable Metrics/MethodLength
|
397
390
|
def configure_writer(options = {})
|
398
|
-
hostname = options.fetch(:hostname, nil)
|
399
|
-
port = options.fetch(:port, nil)
|
400
391
|
sampler = options.fetch(:sampler, nil)
|
401
392
|
priority_sampling = options.fetch(:priority_sampling, nil)
|
402
393
|
writer = options.fetch(:writer, nil)
|
403
|
-
|
394
|
+
agent_settings = options.fetch(:agent_settings, nil)
|
404
395
|
|
405
396
|
# Compile writer options
|
406
397
|
writer_options = options.fetch(:writer_options, {}).dup
|
407
|
-
rebuild_writer = !writer_options.empty?
|
408
398
|
|
409
399
|
# Re-build the sampler and writer if priority sampling is enabled,
|
410
400
|
# but neither are configured. Verify the sampler isn't already a
|
@@ -417,35 +407,20 @@ module Datadog
|
|
417
407
|
end
|
418
408
|
elsif priority_sampling != false && !@sampler.is_a?(PrioritySampler)
|
419
409
|
writer_options[:priority_sampler] = activate_priority_sampling!(@sampler)
|
420
|
-
rebuild_writer = true
|
421
410
|
elsif priority_sampling == false
|
422
411
|
deactivate_priority_sampling!(sampler)
|
423
|
-
rebuild_writer = true
|
424
412
|
elsif @sampler.is_a?(PrioritySampler)
|
425
413
|
# Make sure to add sampler to options if transport is rebuilt.
|
426
414
|
writer_options[:priority_sampler] = @sampler
|
427
415
|
end
|
428
416
|
|
429
|
-
|
430
|
-
if transport_options.is_a?(Proc)
|
431
|
-
transport_options = { on_build: transport_options }
|
432
|
-
rebuild_writer = true
|
433
|
-
end
|
434
|
-
|
435
|
-
if hostname || port
|
436
|
-
transport_options[:hostname] = hostname unless hostname.nil?
|
437
|
-
transport_options[:port] = port unless port.nil?
|
438
|
-
rebuild_writer = true
|
439
|
-
end
|
417
|
+
writer_options[:agent_settings] = agent_settings if agent_settings
|
440
418
|
|
441
|
-
|
419
|
+
# Make sure old writer is shut down before throwing away.
|
420
|
+
# Don't want additional threads running...
|
421
|
+
@writer.stop unless writer.nil?
|
442
422
|
|
443
|
-
|
444
|
-
# Make sure old writer is shut down before throwing away.
|
445
|
-
# Don't want additional threads running...
|
446
|
-
@writer.stop unless writer.nil?
|
447
|
-
@writer = writer || Writer.new(writer_options)
|
448
|
-
end
|
423
|
+
@writer = writer || Writer.new(writer_options)
|
449
424
|
end
|
450
425
|
|
451
426
|
def activate_priority_sampling!(base_sampler = nil)
|