ddtrace 0.35.2 → 0.36.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.rubocop.yml +4 -0
- data/Appraisals +8 -6
- data/CHANGELOG.md +21 -1
- data/docker-compose.yml +35 -0
- data/lib/ddtrace/contrib/extensions.rb +29 -5
- data/lib/ddtrace/contrib/rails/configuration/settings.rb +1 -0
- data/lib/ddtrace/contrib/rails/framework.rb +54 -41
- data/lib/ddtrace/contrib/rails/integration.rb +1 -1
- data/lib/ddtrace/pin.rb +17 -16
- data/lib/ddtrace/version.rb +2 -2
- metadata +3 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: d7736a0630cef1812e8e2a69fa420a97913cf9c1c47e1c173e0039c6e12558f0
|
4
|
+
data.tar.gz: 4eb212df3b7c240a3d8ddf83555fe862cffad98208c037d2cab4120c9a6a7217
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 8fc864b6eb9180e82c5362f45b3ffe05d4d5e4a845372a158293c8514e9b574d59930f84fdea86f534f50faf9cca15167ad25a2b8985699143d2f3b78578b919
|
7
|
+
data.tar.gz: e1cd1855fcf6b31579b84c93a2477a47c87d8a9fdbd0361de59be09969825eb5afd0daa79802036d03c04a3b747a7cff214e74b5053d3108b0fd8b86dd97efff
|
data/.rubocop.yml
CHANGED
@@ -67,6 +67,10 @@ Metrics/PerceivedComplexity:
|
|
67
67
|
Lint/UnusedMethodArgument:
|
68
68
|
Enabled: false
|
69
69
|
|
70
|
+
# alias and alias_method are not equivalent
|
71
|
+
Style/Alias:
|
72
|
+
Enabled: false
|
73
|
+
|
70
74
|
# Disabling advices that would lead to incompatible Ruby 1.9 code
|
71
75
|
Style/SymbolArray:
|
72
76
|
Enabled: false
|
data/Appraisals
CHANGED
@@ -292,33 +292,33 @@ elsif Gem::Version.new('2.2.0') <= Gem::Version.new(RUBY_VERSION) \
|
|
292
292
|
end
|
293
293
|
|
294
294
|
appraise 'rails5-mysql2' do
|
295
|
-
gem 'rails', '
|
295
|
+
gem 'rails', '5.2.3'
|
296
296
|
gem 'mysql2', '< 1', platform: :ruby
|
297
297
|
gem 'sprockets', '< 4'
|
298
298
|
end
|
299
299
|
|
300
300
|
appraise 'rails5-postgres' do
|
301
|
-
gem 'rails', '
|
301
|
+
gem 'rails', '5.2.3'
|
302
302
|
gem 'pg', '< 1.0', platform: :ruby
|
303
303
|
gem 'sprockets', '< 4'
|
304
304
|
end
|
305
305
|
|
306
306
|
appraise 'rails5-postgres-redis' do
|
307
|
-
gem 'rails', '
|
307
|
+
gem 'rails', '5.2.3'
|
308
308
|
gem 'pg', '< 1.0', platform: :ruby
|
309
309
|
gem 'redis', '>= 4.0.1'
|
310
310
|
gem 'sprockets', '< 4'
|
311
311
|
end
|
312
312
|
|
313
313
|
appraise 'rails5-postgres-redis-activesupport' do
|
314
|
-
gem 'rails', '
|
314
|
+
gem 'rails', '5.2.3'
|
315
315
|
gem 'pg', '< 1.0', platform: :ruby
|
316
316
|
gem 'redis', '>= 4.0.1'
|
317
317
|
gem 'sprockets', '< 4'
|
318
318
|
end
|
319
319
|
|
320
320
|
appraise 'rails5-postgres-sidekiq' do
|
321
|
-
gem 'rails', '
|
321
|
+
gem 'rails', '5.2.3'
|
322
322
|
gem 'pg', '< 1.0', platform: :ruby
|
323
323
|
gem 'sidekiq'
|
324
324
|
gem 'activejob'
|
@@ -342,7 +342,7 @@ elsif Gem::Version.new('2.2.0') <= Gem::Version.new(RUBY_VERSION) \
|
|
342
342
|
gem 'faraday'
|
343
343
|
gem 'grape'
|
344
344
|
gem 'graphql', '< 1.9.4'
|
345
|
-
gem 'grpc'
|
345
|
+
gem 'grpc', '~> 1.21.0' # Last version to support Ruby < 2.3
|
346
346
|
gem 'hiredis'
|
347
347
|
gem 'mongo', '>= 2.8.0'
|
348
348
|
gem 'mysql2', '< 0.5', platform: :ruby
|
@@ -501,6 +501,7 @@ elsif Gem::Version.new('2.3.0') <= Gem::Version.new(RUBY_VERSION) \
|
|
501
501
|
gem 'grape'
|
502
502
|
gem 'graphql'
|
503
503
|
gem 'grpc'
|
504
|
+
gem 'google-protobuf', '~> 3.11.0' # Last version to support Ruby < 2.5
|
504
505
|
gem 'hiredis'
|
505
506
|
gem 'mongo', '>= 2.8.0'
|
506
507
|
gem 'mysql2', '< 0.5', platform: :ruby
|
@@ -579,6 +580,7 @@ elsif Gem::Version.new('2.4.0') <= Gem::Version.new(RUBY_VERSION) \
|
|
579
580
|
gem 'grape'
|
580
581
|
gem 'graphql'
|
581
582
|
gem 'grpc'
|
583
|
+
gem 'google-protobuf', '~> 3.11.0' # Last version to support Ruby < 2.5
|
582
584
|
gem 'hiredis'
|
583
585
|
gem 'mongo', '>= 2.8.0'
|
584
586
|
gem 'mysql2', '< 0.5', platform: :ruby
|
data/CHANGELOG.md
CHANGED
@@ -2,6 +2,25 @@
|
|
2
2
|
|
3
3
|
## [Unreleased]
|
4
4
|
|
5
|
+
## [0.36.0] - 2020-05-27
|
6
|
+
|
7
|
+
Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.36.0
|
8
|
+
|
9
|
+
Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.35.2...v0.36.0
|
10
|
+
|
11
|
+
### Changed
|
12
|
+
|
13
|
+
- Prevent trace components from being re-initialized multiple times during setup (#1037)
|
14
|
+
|
15
|
+
### Fixed
|
16
|
+
|
17
|
+
- Allow Rails patching if Railties are loaded (#993, #1054) (@mustela, @bheemreddy181, @vramaiah)
|
18
|
+
- Pin delegates to default tracer unless configured (#1041)
|
19
|
+
|
20
|
+
### Refactored
|
21
|
+
|
22
|
+
- Improvements to test suite (#1027, #1031, #1045, #1046, #1047)
|
23
|
+
|
5
24
|
## [0.35.2] - 2020-05-08
|
6
25
|
|
7
26
|
Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.35.2
|
@@ -1216,7 +1235,8 @@ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.3.1
|
|
1216
1235
|
|
1217
1236
|
Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
|
1218
1237
|
|
1219
|
-
[Unreleased]: https://github.com/DataDog/dd-trace-rb/compare/v0.
|
1238
|
+
[Unreleased]: https://github.com/DataDog/dd-trace-rb/compare/v0.36.0...master
|
1239
|
+
[0.36.0]: https://github.com/DataDog/dd-trace-rb/compare/v0.35.2...v0.36.0
|
1220
1240
|
[0.35.2]: https://github.com/DataDog/dd-trace-rb/compare/v0.35.1...v0.35.2
|
1221
1241
|
[0.35.1]: https://github.com/DataDog/dd-trace-rb/compare/v0.35.0...v0.35.1
|
1222
1242
|
[0.35.0]: https://github.com/DataDog/dd-trace-rb/compare/v0.34.2...v0.35.0
|
data/docker-compose.yml
CHANGED
@@ -1,5 +1,6 @@
|
|
1
1
|
version: '3.2'
|
2
2
|
services:
|
3
|
+
# MRI
|
3
4
|
tracer-2.0:
|
4
5
|
image: palazzem/docker-library:ddtrace_rb_2_0_0
|
5
6
|
command: /bin/bash
|
@@ -247,6 +248,38 @@ services:
|
|
247
248
|
- .:/app
|
248
249
|
- bundle-2.7:/usr/local/bundle
|
249
250
|
- gemfiles-2.7:/app/gemfiles
|
251
|
+
# JRuby
|
252
|
+
tracer-jruby-9.2:
|
253
|
+
image: marcotc/docker-library:ddtrace_rb_jruby_9_2
|
254
|
+
command: /bin/bash
|
255
|
+
depends_on:
|
256
|
+
- ddagent
|
257
|
+
- elasticsearch
|
258
|
+
- memcached
|
259
|
+
- mongodb
|
260
|
+
- mysql
|
261
|
+
- postgres
|
262
|
+
- presto
|
263
|
+
- redis
|
264
|
+
env_file: ./.env
|
265
|
+
environment:
|
266
|
+
- BUNDLE_GEMFILE=/app/Gemfile
|
267
|
+
- DD_AGENT_HOST=ddagent
|
268
|
+
- TEST_DATADOG_INTEGRATION=1
|
269
|
+
- TEST_ELASTICSEARCH_HOST=elasticsearch
|
270
|
+
- TEST_MEMCACHED_HOST=memcached
|
271
|
+
- TEST_MONGODB_HOST=mongodb
|
272
|
+
- TEST_MYSQL_HOST=mysql
|
273
|
+
- TEST_POSTGRES_HOST=postgres
|
274
|
+
- TEST_PRESTO_HOST=presto
|
275
|
+
- TEST_PRESTO_PORT=8080
|
276
|
+
- TEST_REDIS_HOST=redis
|
277
|
+
stdin_open: true
|
278
|
+
tty: true
|
279
|
+
volumes:
|
280
|
+
- .:/app
|
281
|
+
- bundle-jruby-9.2:/usr/local/bundle
|
282
|
+
- gemfiles-jruby-9.2:/app/gemfiles
|
250
283
|
ddagent:
|
251
284
|
image: datadog/docker-dd-agent
|
252
285
|
environment:
|
@@ -325,6 +358,7 @@ volumes:
|
|
325
358
|
bundle-2.5:
|
326
359
|
bundle-2.6:
|
327
360
|
bundle-2.7:
|
361
|
+
bundle-jruby-9.2:
|
328
362
|
gemfiles-2.0:
|
329
363
|
gemfiles-2.1:
|
330
364
|
gemfiles-2.2:
|
@@ -333,3 +367,4 @@ volumes:
|
|
333
367
|
gemfiles-2.5:
|
334
368
|
gemfiles-2.6:
|
335
369
|
gemfiles-2.7:
|
370
|
+
gemfiles-jruby-9.2:
|
@@ -1,3 +1,4 @@
|
|
1
|
+
require 'set'
|
1
2
|
require 'ddtrace/contrib/registry'
|
2
3
|
|
3
4
|
module Datadog
|
@@ -7,6 +8,7 @@ module Datadog
|
|
7
8
|
module Extensions
|
8
9
|
def self.extended(base)
|
9
10
|
Datadog.send(:extend, Helpers)
|
11
|
+
Datadog.send(:extend, Configuration)
|
10
12
|
Datadog::Configuration::Settings.send(:include, Configuration::Settings)
|
11
13
|
end
|
12
14
|
|
@@ -17,7 +19,24 @@ module Datadog
|
|
17
19
|
end
|
18
20
|
end
|
19
21
|
|
22
|
+
# Configuration methods for Datadog module.
|
20
23
|
module Configuration
|
24
|
+
def configure(target = configuration, opts = {})
|
25
|
+
# Reconfigure core settings
|
26
|
+
super
|
27
|
+
|
28
|
+
# Activate integrations
|
29
|
+
if target.respond_to?(:integrations_pending_activation)
|
30
|
+
target.integrations_pending_activation.each do |integration|
|
31
|
+
integration.patch if integration.respond_to?(:patch)
|
32
|
+
end
|
33
|
+
|
34
|
+
target.integrations_pending_activation.clear
|
35
|
+
end
|
36
|
+
|
37
|
+
target
|
38
|
+
end
|
39
|
+
|
21
40
|
# Extensions for Datadog::Configuration::Settings
|
22
41
|
module Settings
|
23
42
|
InvalidIntegrationError = Class.new(StandardError)
|
@@ -34,22 +53,27 @@ module Datadog
|
|
34
53
|
integration.configuration(configuration_name) unless integration.nil?
|
35
54
|
end
|
36
55
|
|
37
|
-
def
|
56
|
+
def instrument(integration_name, options = {}, &block)
|
38
57
|
integration = fetch_integration(integration_name)
|
39
58
|
|
40
59
|
unless integration.nil?
|
41
60
|
configuration_name = options[:describes] || :default
|
42
61
|
filtered_options = options.reject { |k, _v| k == :describes }
|
43
62
|
integration.configure(configuration_name, filtered_options, &block)
|
44
|
-
end
|
45
63
|
|
46
|
-
|
64
|
+
# Add to activation list
|
65
|
+
integrations_pending_activation << integration
|
66
|
+
end
|
47
67
|
end
|
48
68
|
|
49
|
-
|
69
|
+
alias_method :use, :instrument
|
70
|
+
|
71
|
+
def integrations_pending_activation
|
72
|
+
@integrations_pending_activation ||= Set.new
|
73
|
+
end
|
50
74
|
|
51
75
|
def fetch_integration(name)
|
52
|
-
|
76
|
+
registry[name] ||
|
53
77
|
raise(InvalidIntegrationError, "'#{name}' is not a valid integration.")
|
54
78
|
end
|
55
79
|
end
|
@@ -21,23 +21,32 @@ module Datadog
|
|
21
21
|
module Framework
|
22
22
|
# configure Datadog settings
|
23
23
|
def self.setup
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
24
|
+
rails_config = config_with_defaults
|
25
|
+
|
26
|
+
# NOTE: #configure has the side effect of rebuilding trace components.
|
27
|
+
# During a typical Rails application lifecycle, we will see trace
|
28
|
+
# components initialized twice because of this. This is necessary
|
29
|
+
# because key configuration is not available until after the Rails
|
30
|
+
# application has fully loaded, and some of this configuration is
|
31
|
+
# used to reconfigure tracer components with Rails-sourced defaults.
|
32
|
+
# This is a trade-off we take to get nice defaults.
|
33
|
+
Datadog.configure do |datadog_config|
|
34
|
+
# By default, default service would be guessed from the script
|
35
|
+
# being executed, but here we know better, get it from Rails config.
|
36
|
+
# Don't set this if service has been explicitly provided by the user.
|
37
|
+
datadog_config.service ||= rails_config[:service_name]
|
38
|
+
|
39
|
+
activate_rack!(datadog_config, rails_config)
|
40
|
+
activate_action_cable!(datadog_config, rails_config)
|
41
|
+
activate_active_support!(datadog_config, rails_config)
|
42
|
+
activate_action_pack!(datadog_config, rails_config)
|
43
|
+
activate_action_view!(datadog_config, rails_config)
|
44
|
+
activate_active_record!(datadog_config, rails_config)
|
45
|
+
end
|
37
46
|
|
38
47
|
# Update the tracer if its not the default tracer.
|
39
|
-
if
|
40
|
-
|
48
|
+
if rails_config[:tracer] != Datadog.configuration.tracer
|
49
|
+
rails_config[:tracer].default_service = rails_config[:service_name]
|
41
50
|
end
|
42
51
|
end
|
43
52
|
|
@@ -52,64 +61,68 @@ module Datadog
|
|
52
61
|
end
|
53
62
|
end
|
54
63
|
|
55
|
-
def self.activate_rack!(
|
56
|
-
|
64
|
+
def self.activate_rack!(datadog_config, rails_config)
|
65
|
+
datadog_config.use(
|
57
66
|
:rack,
|
58
|
-
tracer:
|
67
|
+
tracer: rails_config[:tracer],
|
59
68
|
application: ::Rails.application,
|
60
|
-
service_name:
|
61
|
-
middleware_names:
|
62
|
-
distributed_tracing:
|
69
|
+
service_name: rails_config[:service_name],
|
70
|
+
middleware_names: rails_config[:middleware_names],
|
71
|
+
distributed_tracing: rails_config[:distributed_tracing]
|
63
72
|
)
|
64
73
|
end
|
65
74
|
|
66
|
-
def self.activate_active_support!(
|
75
|
+
def self.activate_active_support!(datadog_config, rails_config)
|
67
76
|
return unless defined?(::ActiveSupport)
|
68
77
|
|
69
|
-
|
78
|
+
datadog_config.use(
|
70
79
|
:active_support,
|
71
|
-
cache_service:
|
72
|
-
tracer:
|
80
|
+
cache_service: rails_config[:cache_service],
|
81
|
+
tracer: rails_config[:tracer]
|
73
82
|
)
|
74
83
|
end
|
75
84
|
|
76
|
-
def self.activate_action_cable!(
|
85
|
+
def self.activate_action_cable!(datadog_config, rails_config)
|
77
86
|
return unless defined?(::ActionCable)
|
78
87
|
|
79
|
-
|
88
|
+
datadog_config.use(
|
80
89
|
:action_cable,
|
81
|
-
service_name: "#{
|
82
|
-
tracer:
|
90
|
+
service_name: "#{rails_config[:service_name]}-#{Contrib::ActionCable::Ext::SERVICE_NAME}",
|
91
|
+
tracer: rails_config[:tracer]
|
83
92
|
)
|
84
93
|
end
|
85
94
|
|
86
|
-
def self.activate_action_pack!(
|
95
|
+
def self.activate_action_pack!(datadog_config, rails_config)
|
87
96
|
return unless defined?(::ActionPack)
|
88
97
|
|
89
|
-
|
98
|
+
# TODO: This is configuring ActionPack but not patching. It will queue ActionPack
|
99
|
+
# for patching, but patching won't take place until Datadog.configure completes.
|
100
|
+
# Should we manually patch here?
|
101
|
+
|
102
|
+
datadog_config.use(
|
90
103
|
:action_pack,
|
91
|
-
service_name:
|
92
|
-
tracer:
|
104
|
+
service_name: rails_config[:service_name],
|
105
|
+
tracer: rails_config[:tracer]
|
93
106
|
)
|
94
107
|
end
|
95
108
|
|
96
|
-
def self.activate_action_view!(
|
109
|
+
def self.activate_action_view!(datadog_config, rails_config)
|
97
110
|
return unless defined?(::ActionView)
|
98
111
|
|
99
|
-
|
112
|
+
datadog_config.use(
|
100
113
|
:action_view,
|
101
|
-
service_name:
|
102
|
-
tracer:
|
114
|
+
service_name: rails_config[:service_name],
|
115
|
+
tracer: rails_config[:tracer]
|
103
116
|
)
|
104
117
|
end
|
105
118
|
|
106
|
-
def self.activate_active_record!(
|
119
|
+
def self.activate_active_record!(datadog_config, rails_config)
|
107
120
|
return unless defined?(::ActiveRecord)
|
108
121
|
|
109
|
-
|
122
|
+
datadog_config.use(
|
110
123
|
:active_record,
|
111
|
-
service_name:
|
112
|
-
tracer:
|
124
|
+
service_name: rails_config[:database_service],
|
125
|
+
tracer: rails_config[:tracer]
|
113
126
|
)
|
114
127
|
end
|
115
128
|
end
|
data/lib/ddtrace/pin.rb
CHANGED
@@ -12,26 +12,34 @@ module Datadog
|
|
12
12
|
obj.datadog_pin
|
13
13
|
end
|
14
14
|
|
15
|
-
attr_reader :service_name
|
16
15
|
attr_accessor :app
|
17
|
-
attr_accessor :tags
|
18
16
|
attr_accessor :app_type
|
19
|
-
attr_accessor :name
|
20
|
-
attr_accessor :tracer
|
21
17
|
attr_accessor :config
|
18
|
+
attr_accessor :name
|
19
|
+
attr_accessor :service_name
|
20
|
+
attr_accessor :tags
|
21
|
+
attr_writer :tracer
|
22
|
+
attr_accessor :writer
|
23
|
+
|
24
|
+
alias service= service_name=
|
25
|
+
alias service service_name
|
22
26
|
|
23
27
|
def initialize(service_name, options = {})
|
24
28
|
@app = options[:app]
|
25
|
-
@tags = options[:tags]
|
26
29
|
@app_type = options[:app_type]
|
27
|
-
@name = nil # this would rarely be overriden as it's really span-specific
|
28
|
-
@tracer = options[:tracer] || Datadog.tracer
|
29
30
|
@config = options[:config]
|
30
|
-
|
31
|
+
@name = nil # this would rarely be overriden as it's really span-specific
|
32
|
+
@service_name = service_name
|
33
|
+
@tags = options[:tags]
|
34
|
+
@tracer = options[:tracer]
|
35
|
+
end
|
36
|
+
|
37
|
+
def tracer
|
38
|
+
@tracer || Datadog.tracer
|
31
39
|
end
|
32
40
|
|
33
41
|
def enabled?
|
34
|
-
return
|
42
|
+
return tracer.enabled if tracer
|
35
43
|
false
|
36
44
|
end
|
37
45
|
|
@@ -56,13 +64,6 @@ module Datadog
|
|
56
64
|
obj.datadog_pin = self
|
57
65
|
end
|
58
66
|
|
59
|
-
def service_name=(name)
|
60
|
-
@service_name = name
|
61
|
-
end
|
62
|
-
|
63
|
-
alias service= service_name=
|
64
|
-
alias service service_name
|
65
|
-
|
66
67
|
def to_s
|
67
68
|
"Pin(service:#{service},app:#{app},app_type:#{app_type},name:#{name})"
|
68
69
|
end
|
data/lib/ddtrace/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: ddtrace
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.36.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Datadog, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-05-
|
11
|
+
date: 2020-05-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: msgpack
|
@@ -713,8 +713,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
713
713
|
- !ruby/object:Gem::Version
|
714
714
|
version: 2.0.0
|
715
715
|
requirements: []
|
716
|
-
|
717
|
-
rubygems_version: 2.7.6.2
|
716
|
+
rubygems_version: 3.0.3
|
718
717
|
signing_key:
|
719
718
|
specification_version: 4
|
720
719
|
summary: Datadog tracing code for your Ruby applications
|