ddtrace 0.43.0 → 0.44.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.
Files changed (41) hide show
  1. checksums.yaml +5 -5
  2. data/.circleci/config.yml +100 -129
  3. data/.circleci/images/primary/Dockerfile-3.0.0 +73 -0
  4. data/.github/workflows/add-milestone-to-pull-requests.yml +1 -1
  5. data/.simplecov +4 -1
  6. data/Appraisals +200 -8
  7. data/CHANGELOG.md +1005 -376
  8. data/Gemfile +4 -2
  9. data/Rakefile +121 -4
  10. data/ddtrace.gemspec +5 -8
  11. data/docker-compose.yml +30 -0
  12. data/docs/GettingStarted.md +47 -8
  13. data/lib/ddtrace.rb +1 -0
  14. data/lib/ddtrace/contrib/action_view/event.rb +0 -4
  15. data/lib/ddtrace/contrib/action_view/events/render_partial.rb +1 -0
  16. data/lib/ddtrace/contrib/action_view/events/render_template.rb +1 -0
  17. data/lib/ddtrace/contrib/active_record/utils.rb +11 -1
  18. data/lib/ddtrace/contrib/aws/services.rb +1 -0
  19. data/lib/ddtrace/contrib/configuration/resolvers/pattern_resolver.rb +2 -0
  20. data/lib/ddtrace/contrib/ethon/easy_patch.rb +1 -1
  21. data/lib/ddtrace/contrib/ethon/ext.rb +1 -0
  22. data/lib/ddtrace/contrib/grape/endpoint.rb +29 -11
  23. data/lib/ddtrace/contrib/grape/ext.rb +1 -0
  24. data/lib/ddtrace/contrib/httprb/instrumentation.rb +1 -1
  25. data/lib/ddtrace/contrib/qless/configuration/settings.rb +35 -0
  26. data/lib/ddtrace/contrib/qless/ext.rb +20 -0
  27. data/lib/ddtrace/contrib/qless/integration.rb +38 -0
  28. data/lib/ddtrace/contrib/qless/patcher.rb +35 -0
  29. data/lib/ddtrace/contrib/qless/qless_job.rb +72 -0
  30. data/lib/ddtrace/contrib/qless/tracer_cleaner.rb +32 -0
  31. data/lib/ddtrace/contrib/redis/configuration/resolver.rb +3 -1
  32. data/lib/ddtrace/contrib/redis/configuration/settings.rb +5 -0
  33. data/lib/ddtrace/contrib/redis/ext.rb +1 -0
  34. data/lib/ddtrace/contrib/redis/patcher.rb +20 -3
  35. data/lib/ddtrace/contrib/redis/quantize.rb +27 -0
  36. data/lib/ddtrace/contrib/redis/tags.rb +5 -1
  37. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +2 -2
  38. data/lib/ddtrace/ext/ci.rb +0 -1
  39. data/lib/ddtrace/version.rb +1 -1
  40. data/lib/ddtrace/workers/runtime_metrics.rb +7 -3
  41. metadata +77 -29
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
- SHA1:
3
- metadata.gz: 71b7fdfa16924489a0ab33f4d34753fb4df23e38
4
- data.tar.gz: 122e1f6d2f7ba41a82727052a9b5ea36121c4bff
2
+ SHA256:
3
+ metadata.gz: 9bab61fb7855f2281cbaa808536cc7f7f6fe857657c49f91b532e6780c05187f
4
+ data.tar.gz: 463065e1f917522e19b2ace842cf117bfaf747b2e41e2bae405073080cf6f077
5
5
  SHA512:
6
- metadata.gz: bbb7693da41ddbdedeaf7a6fbe4cbfd296e12636c39e4e1a81a30ed392e4b6ac57a10ab0654400373e3ff7150207d0fd511b95cd4367d811b2f58ed028d75187
7
- data.tar.gz: e2450e8e4f411dcc36ba5548f1d24160571c801fb6ece09b8801e605149695f3f7a44217f8c05b059b82eb3e64c740cf10a9affb80ae39d2e1bb2b5739b4839f
6
+ metadata.gz: 688c0fb395d61cb53609eb872f32eba8337c810d7d83d4751822e31487a34cf5322284f025b512bc3e7251369406b77467754aecf327403dcf0128fcfebbdfc6
7
+ data.tar.gz: a484ea8f729a3736209c8182ea729e7e2f9475eff4742d366f1824b8d50bf78ebd92d0eb4afbf0c6fc01e2bedcb0e553d11c246e2cbcfd299d64819e64902d99
@@ -2,13 +2,41 @@ version: 2.1
2
2
 
3
3
  # Common variables, containers, jobs and steps.
4
4
  job_defaults: &job_defaults
5
+ # TODO: We should move away from using a directory
6
+ # TODO: that requires root permission to be created.
7
+ # TODO: Changing this requires rebuilding all docker images.
5
8
  working_directory: /app
6
9
  shell: /bin/bash --login
7
10
 
8
11
  test_containers:
12
+ - &job_parameters
13
+ parameters:
14
+ ruby_version:
15
+ description: Ruby version
16
+ type: string
17
+ image:
18
+ description: Docker image location
19
+ type: string
20
+ jit:
21
+ description: Jit enabled?
22
+ type: boolean
23
+ default: false
24
+ - &container_base_environment
25
+ BUNDLE_GEMFILE: /app/Gemfile
26
+ - &container_parameters_environment
27
+ - *container_base_environment
28
+ - RUBY_OPT: <<# parameters.jit >>--jit<</ parameters.jit >>
29
+ - TEST_DATADOG_INTEGRATION: 1
30
+ - COVERAGE_BASE_DIR: coverage
9
31
  - &container_base
32
+ image: <<parameters.image>>
10
33
  environment:
11
- - BUNDLE_GEMFILE=/app/Gemfile
34
+ *container_parameters_environment
35
+ - &test_job_default
36
+ <<: *job_defaults
37
+ <<: *job_parameters
38
+ docker:
39
+ - *container_base
12
40
  - &container_postgres
13
41
  image: postgres:9.6
14
42
  environment:
@@ -88,41 +116,13 @@ filters_only_release_tags: &filters_only_release_tags
88
116
  orbs:
89
117
  orb:
90
118
  jobs:
91
- checkout:
92
- <<: *job_defaults
93
- parameters:
94
- ruby_version:
95
- description: Ruby version
96
- type: string
97
- image:
98
- description: Docker image location
99
- type: string
100
- docker:
101
- - <<: *container_base
102
- image: <<parameters.image>>
103
- steps:
104
- - checkout
105
- - save_cache:
106
- key: '{{ .Environment.CIRCLE_CACHE_VERSION }}-repo-<<parameters.ruby_version>>-{{ .Environment.CIRCLE_SHA1 }}'
107
- paths:
108
- - /app
109
119
  build:
110
- <<: *job_defaults
111
- parameters:
112
- ruby_version:
113
- description: Ruby version
114
- type: string
115
- image:
116
- description: Docker image location
117
- type: string
118
- docker:
119
- - <<: *container_base
120
- image: <<parameters.image>>
120
+ <<: *test_job_default
121
121
  steps:
122
+ - checkout
122
123
  - restore_cache:
123
124
  keys:
124
125
  - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-<<parameters.ruby_version>>-{{ .Environment.CIRCLE_SHA1 }}'
125
- - '{{ .Environment.CIRCLE_CACHE_VERSION }}-repo-<<parameters.ruby_version>>-{{ .Environment.CIRCLE_SHA1 }}'
126
126
  - restore_cache:
127
127
  keys:
128
128
  - bundle-{{ .Environment.CIRCLE_CACHE_VERSION }}-<<parameters.ruby_version>>-{{ checksum "lib/ddtrace/version.rb" }}-{{ .Branch }}-{{ checksum "Gemfile" }}-{{ checksum "Appraisals" }}-{{ checksum "ddtrace.gemspec" }}
@@ -148,21 +148,9 @@ orbs:
148
148
  paths:
149
149
  - /usr/local/bundle
150
150
  test:
151
- <<: *job_defaults
152
- parameters:
153
- ruby_version:
154
- description: Ruby version
155
- type: string
156
- image:
157
- description: Docker image location
158
- type: string
151
+ <<: *test_job_default
159
152
  docker:
160
153
  - <<: *container_base
161
- image: <<parameters.image>>
162
- environment:
163
- - BUNDLE_GEMFILE: /app/Gemfile
164
- - TEST_DATADOG_INTEGRATION: 1
165
- - COVERAGE_BASE_DIR: coverage
166
154
  - *container_postgres
167
155
  - *container_presto
168
156
  - *container_mysql
@@ -190,20 +178,9 @@ orbs:
190
178
  paths:
191
179
  - coverage
192
180
  benchmark:
193
- <<: *job_defaults
194
- parameters:
195
- ruby_version:
196
- description: Ruby version
197
- type: string
198
- image:
199
- description: Docker image location
200
- type: string
181
+ <<: *test_job_default
201
182
  docker:
202
183
  - <<: *container_base
203
- image: <<parameters.image>>
204
- environment:
205
- - BUNDLE_GEMFILE: /app/Gemfile
206
- - TEST_DATADOG_INTEGRATION: 1
207
184
  - *container_postgres
208
185
  - *container_redis
209
186
  - *container_agent
@@ -221,19 +198,7 @@ orbs:
221
198
  name: Run Benchmark without ddtracer
222
199
  command: rm -f lib/ddtrace.rb && bundle exec appraisal rails5-postgres-sidekiq ruby benchmarks/sidekiq_test.rb 2>&1 1> /dev/null | tee benchmark_results.csv
223
200
  lint:
224
- <<: *job_defaults
225
- parameters:
226
- ruby_version:
227
- description: Ruby version
228
- type: string
229
- image:
230
- description: Docker image location
231
- type: string
232
- docker:
233
- - <<: *container_base
234
- image: <<parameters.image>>
235
- environment:
236
- - BUNDLE_GEMFILE: /app/Gemfile
201
+ <<: *test_job_default
237
202
  steps:
238
203
  - restore_cache:
239
204
  keys:
@@ -243,19 +208,7 @@ orbs:
243
208
  - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-<<parameters.ruby_version>>-{{ checksum ".circleci/bundle_checksum" }}'
244
209
  - *step_rubocop
245
210
  coverage:
246
- <<: *job_defaults
247
- parameters:
248
- ruby_version:
249
- description: Ruby version
250
- type: string
251
- image:
252
- description: Docker image location
253
- type: string
254
- docker:
255
- - <<: *container_base
256
- image: <<parameters.image>>
257
- environment:
258
- - BUNDLE_GEMFILE: /app/Gemfile
211
+ <<: *test_job_default
259
212
  steps:
260
213
  - restore_cache:
261
214
  keys:
@@ -265,6 +218,9 @@ orbs:
265
218
  - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-<<parameters.ruby_version>>-{{ checksum ".circleci/bundle_checksum" }}'
266
219
  - attach_workspace:
267
220
  at: /tmp/workspace
221
+ - run:
222
+ name: Install codecov
223
+ command: bundle add codecov
268
224
  - run:
269
225
  name: Generate coverage report artifact "coverage/index.html"
270
226
  command: COVERAGE_DIR=/tmp/workspace/coverage bundle exec rake coverage:report
@@ -274,6 +230,26 @@ orbs:
274
230
  - store_artifacts:
275
231
  path: /tmp/workspace/coverage/report/
276
232
  destination: coverage
233
+ changelog:
234
+ <<: *test_job_default
235
+ steps:
236
+ - restore_cache:
237
+ keys:
238
+ - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundled-repo-<<parameters.ruby_version>>-{{ .Environment.CIRCLE_SHA1 }}'
239
+ - restore_cache:
240
+ keys:
241
+ - '{{ .Environment.CIRCLE_CACHE_VERSION }}-bundle-<<parameters.ruby_version>>-{{ checksum ".circleci/bundle_checksum" }}'
242
+ - attach_workspace:
243
+ at: /tmp/workspace
244
+ - run:
245
+ name: Format changelog
246
+ command: bundle exec rake changelog:format
247
+ - run:
248
+ name: Check if changelog was unformatted
249
+ command: |
250
+ if ! git diff-files --quiet; then
251
+ echo "Please run 'bundle exec rake changelog:format' and commit the results."
252
+ fi
277
253
  commands:
278
254
  executors:
279
255
 
@@ -281,7 +257,8 @@ jobs:
281
257
  "deploy release":
282
258
  <<: *job_defaults
283
259
  docker:
284
- - <<: *container_base
260
+ - environment:
261
+ *container_base_environment
285
262
  image: marcotc/docker-library:ddtrace_rb_2_5_6
286
263
  steps:
287
264
  - checkout
@@ -301,7 +278,8 @@ jobs:
301
278
  "deploy prerelease Gem":
302
279
  <<: *job_defaults
303
280
  docker:
304
- - <<: *container_base
281
+ - environment:
282
+ *container_base_environment
305
283
  image: marcotc/docker-library:ddtrace_rb_2_5_6
306
284
  steps:
307
285
  - run:
@@ -367,6 +345,15 @@ job_configuration:
367
345
  <<: *filters_all_branches_and_tags
368
346
  ruby_version: '2.7'
369
347
  image: marcotc/docker-library:ddtrace_rb_2_7_0
348
+ - &config-3_0
349
+ <<: *filters_all_branches_and_tags
350
+ ruby_version: '3.0'
351
+ image: marcotc/docker-library:ddtrace_rb_3.0.0
352
+ - &config-3_0-jit
353
+ <<: *filters_all_branches_and_tags
354
+ ruby_version: '3.0'
355
+ image: marcotc/docker-library:ddtrace_rb_3.0.0
356
+ jit: true
370
357
  # JRuby
371
358
  - &config-jruby-9_2
372
359
  <<: *filters_all_branches_and_tags
@@ -394,55 +381,44 @@ workflows:
394
381
  - test-2.5
395
382
  - test-2.6
396
383
  - test-2.7
384
+ - test-3.0
397
385
  - test-jruby-9.2
386
+ - orb/changelog:
387
+ <<: *config-2_7
388
+ name: changelog
389
+ requires:
390
+ - build-2.7
391
+ filters:
392
+ branches:
393
+ only: /bump_to_version_.*/
398
394
  # MRI
399
- - orb/checkout:
400
- <<: *config-2_0
401
- name: checkout-2.0
402
395
  - orb/build:
403
396
  <<: *config-2_0
404
397
  name: build-2.0
405
- requires:
406
- - checkout-2.0
407
398
  - orb/test:
408
399
  <<: *config-2_0
409
400
  name: test-2.0
410
401
  requires:
411
402
  - build-2.0
412
- - orb/checkout:
413
- <<: *config-2_1
414
- name: checkout-2.1
415
403
  - orb/build:
416
404
  <<: *config-2_1
417
405
  name: build-2.1
418
- requires:
419
- - checkout-2.1
420
406
  - orb/test:
421
407
  <<: *config-2_1
422
408
  name: test-2.1
423
409
  requires:
424
410
  - build-2.1
425
- - orb/checkout:
426
- <<: *config-2_2
427
- name: checkout-2.2
428
411
  - orb/build:
429
412
  <<: *config-2_2
430
413
  name: build-2.2
431
- requires:
432
- - checkout-2.2
433
414
  - orb/test:
434
415
  <<: *config-2_2
435
416
  name: test-2.2
436
417
  requires:
437
418
  - build-2.2
438
- - orb/checkout:
439
- <<: *config-2_3
440
- name: checkout-2.3
441
419
  - orb/build:
442
420
  <<: *config-2_3
443
421
  name: build-2.3
444
- requires:
445
- - checkout-2.3
446
422
  - orb/test:
447
423
  <<: *config-2_3
448
424
  name: test-2.3
@@ -453,67 +429,58 @@ workflows:
453
429
  name: benchmark-2.3
454
430
  requires:
455
431
  - build-2.3
456
- - orb/checkout:
457
- <<: *config-2_4
458
- name: checkout-2.4
459
432
  - orb/build:
460
433
  <<: *config-2_4
461
434
  name: build-2.4
462
- requires:
463
- - checkout-2.4
464
435
  - orb/test:
465
436
  <<: *config-2_4
466
437
  name: test-2.4
467
438
  requires:
468
439
  - build-2.4
469
- - orb/checkout:
470
- <<: *config-2_5
471
- name: checkout-2.5
472
440
  - orb/build:
473
441
  <<: *config-2_5
474
442
  name: build-2.5
475
- requires:
476
- - checkout-2.5
477
443
  - orb/test:
478
444
  <<: *config-2_5
479
445
  name: test-2.5
480
446
  requires:
481
447
  - build-2.5
482
- - orb/checkout:
483
- <<: *config-2_6
484
- name: checkout-2.6
485
448
  - orb/build:
486
449
  <<: *config-2_6
487
450
  name: build-2.6
488
- requires:
489
- - checkout-2.6
490
451
  - orb/test:
491
452
  <<: *config-2_6
492
453
  name: test-2.6
493
454
  requires:
494
455
  - build-2.6
495
- - orb/checkout:
496
- <<: *config-2_7
497
- name: checkout-2.7
498
456
  - orb/build:
499
457
  <<: *config-2_7
500
458
  name: build-2.7
501
- requires:
502
- - checkout-2.7
503
459
  - orb/test:
504
460
  <<: *config-2_7
505
461
  name: test-2.7
506
462
  requires:
507
463
  - build-2.7
464
+ - orb/build:
465
+ <<: *config-3_0
466
+ name: build-3.0
467
+ - orb/test:
468
+ <<: *config-3_0
469
+ name: test-3.0
470
+ requires:
471
+ - build-3.0
472
+ - orb/build:
473
+ <<: *config-3_0-jit
474
+ name: build-3.0-jit
475
+ - orb/test:
476
+ <<: *config-3_0-jit
477
+ name: test-3.0-jit
478
+ requires:
479
+ - build-3.0-jit
508
480
  # JRuby
509
- - orb/checkout:
510
- <<: *config-jruby-9_2
511
- name: checkout-jruby-9.2
512
481
  - orb/build:
513
482
  <<: *config-jruby-9_2
514
483
  name: build-jruby-9.2
515
- requires:
516
- - checkout-jruby-9.2
517
484
  - orb/test:
518
485
  <<: *config-jruby-9_2
519
486
  name: test-jruby-9.2
@@ -532,6 +499,8 @@ workflows:
532
499
  - test-2.5
533
500
  - test-2.6
534
501
  - test-2.7
502
+ - test-3.0
503
+ - test-3.0-jit
535
504
  - test-jruby-9.2
536
505
  - "deploy release":
537
506
  <<: *filters_only_release_tags
@@ -545,4 +514,6 @@ workflows:
545
514
  - test-2.5
546
515
  - test-2.6
547
516
  - test-2.7
517
+ - test-3.0
518
+ - test-3.0-jit
548
519
  - test-jruby-9.2
@@ -0,0 +1,73 @@
1
+ # https://hub.docker.com/layers/ruby/library/ruby/3.0.0/images/sha256-9719b7df964602b114a5e9319bd0a3ce2d4d44ccb7ea4d1702fa1ef9742a8f84
2
+ FROM ruby@sha256:9719b7df964602b114a5e9319bd0a3ce2d4d44ccb7ea4d1702fa1ef9742a8f84
3
+
4
+ # Make apt non-interactive
5
+ RUN echo 'APT::Get::Assume-Yes "true";' > /etc/apt/apt.conf.d/90circleci \
6
+ && echo 'DPkg::Options "--force-confnew";' >> /etc/apt/apt.conf.d/90circleci
7
+
8
+ ENV DEBIAN_FRONTEND=noninteractive
9
+
10
+ # Install required packages
11
+ RUN set -ex; \
12
+ apt-get update; \
13
+ mkdir -p /usr/share/man/man1; \
14
+ apt-get install -y --no-install-recommends \
15
+ git mercurial xvfb \
16
+ locales sudo openssh-client ca-certificates tar gzip parallel \
17
+ net-tools netcat unzip zip bzip2 gnupg curl wget \
18
+ tzdata rsync vim; \
19
+ rm -rf /var/lib/apt/lists/*;
20
+
21
+ # Set timezone to UTC by default
22
+ RUN ln -sf /usr/share/zoneinfo/Etc/UTC /etc/localtime
23
+
24
+ # Set language
25
+ RUN locale-gen en_US.UTF-8
26
+ ENV LANG en_US.UTF-8
27
+ ENV LANGUAGE en_US:en
28
+
29
+ # Install jq
30
+ RUN JQ_URL="https://circle-downloads.s3.amazonaws.com/circleci-images/cache/linux-amd64/jq-latest" \
31
+ && curl --silent --show-error --location --fail --retry 3 --output /usr/bin/jq $JQ_URL \
32
+ && chmod +x /usr/bin/jq \
33
+ && jq --version
34
+
35
+ # Install Docker
36
+ RUN set -ex \
37
+ && export DOCKER_VERSION=$(curl --silent --fail --retry 3 https://download.docker.com/linux/static/stable/x86_64/ | grep -o -e 'docker-[.0-9]*-ce\.tgz' | sort -r | head -n 1) \
38
+ && DOCKER_URL="https://download.docker.com/linux/static/stable/x86_64/${DOCKER_VERSION}" \
39
+ && echo Docker URL: $DOCKER_URL \
40
+ && curl --silent --show-error --location --fail --retry 3 --output /tmp/docker.tgz "${DOCKER_URL}" \
41
+ && ls -lha /tmp/docker.tgz \
42
+ && tar -xz -C /tmp -f /tmp/docker.tgz \
43
+ && mv /tmp/docker/* /usr/bin \
44
+ && rm -rf /tmp/docker /tmp/docker.tgz \
45
+ && which docker \
46
+ && (docker version || true)
47
+
48
+ # Install Docker Compose
49
+ RUN COMPOSE_URL="https://circle-downloads.s3.amazonaws.com/circleci-images/cache/linux-amd64/docker-compose-latest" \
50
+ && curl --silent --show-error --location --fail --retry 3 --output /usr/bin/docker-compose $COMPOSE_URL \
51
+ && chmod +x /usr/bin/docker-compose \
52
+ && docker-compose version
53
+
54
+ # Install Dockerize
55
+ RUN DOCKERIZE_URL="https://circle-downloads.s3.amazonaws.com/circleci-images/cache/linux-amd64/dockerize-latest.tar.gz" \
56
+ && curl --silent --show-error --location --fail --retry 3 --output /tmp/dockerize-linux-amd64.tar.gz $DOCKERIZE_URL \
57
+ && tar -C /usr/local/bin -xzvf /tmp/dockerize-linux-amd64.tar.gz \
58
+ && rm -rf /tmp/dockerize-linux-amd64.tar.gz \
59
+ && dockerize --version
60
+
61
+ # Install RubyGems
62
+ RUN gem update --system
63
+ RUN mkdir -p "$GEM_HOME" && chmod -R 777 "$GEM_HOME"
64
+
65
+ # Upgrade RubyGems and Bundler
66
+ RUN gem update --system
67
+ RUN gem install bundler
68
+ ENV BUNDLE_SILENCE_ROOT_WARNING 1
69
+
70
+ RUN mkdir /app
71
+ WORKDIR /app
72
+
73
+ CMD ["/bin/sh"]