ddtrace 0.16.1 → 0.17.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 (156) hide show
  1. checksums.yaml +4 -4
  2. data/Appraisals +3 -3
  3. data/CHANGELOG.md +24 -2
  4. data/Rakefile +14 -28
  5. data/docker-compose.yml +1 -0
  6. data/docs/GettingStarted.md +302 -263
  7. data/lib/ddtrace.rb +22 -21
  8. data/lib/ddtrace/contrib/active_model_serializers/configuration/settings.rb +23 -0
  9. data/lib/ddtrace/contrib/active_model_serializers/event.rb +4 -2
  10. data/lib/ddtrace/contrib/active_model_serializers/events/render.rb +2 -2
  11. data/lib/ddtrace/contrib/active_model_serializers/events/serialize.rb +2 -2
  12. data/lib/ddtrace/contrib/active_model_serializers/ext.rb +17 -0
  13. data/lib/ddtrace/contrib/active_model_serializers/integration.rb +39 -0
  14. data/lib/ddtrace/contrib/active_model_serializers/patcher.rb +24 -43
  15. data/lib/ddtrace/contrib/active_record/configuration/settings.rb +3 -2
  16. data/lib/ddtrace/contrib/active_record/events/instantiation.rb +6 -7
  17. data/lib/ddtrace/contrib/active_record/events/sql.rb +10 -8
  18. data/lib/ddtrace/contrib/active_record/ext.rb +22 -0
  19. data/lib/ddtrace/contrib/aws/configuration/settings.rb +15 -0
  20. data/lib/ddtrace/contrib/aws/ext.rb +21 -0
  21. data/lib/ddtrace/contrib/aws/instrumentation.rb +11 -9
  22. data/lib/ddtrace/contrib/aws/integration.rb +32 -0
  23. data/lib/ddtrace/contrib/aws/patcher.rb +42 -41
  24. data/lib/ddtrace/contrib/concurrent_ruby/configuration/settings.rb +3 -1
  25. data/lib/ddtrace/contrib/concurrent_ruby/ext.rb +11 -0
  26. data/lib/ddtrace/contrib/concurrent_ruby/integration.rb +7 -3
  27. data/lib/ddtrace/contrib/concurrent_ruby/patcher.rb +1 -0
  28. data/lib/ddtrace/contrib/dalli/configuration/settings.rb +15 -0
  29. data/lib/ddtrace/contrib/dalli/ext.rb +15 -0
  30. data/lib/ddtrace/contrib/dalli/instrumentation.rb +3 -3
  31. data/lib/ddtrace/contrib/dalli/integration.rb +36 -0
  32. data/lib/ddtrace/contrib/dalli/patcher.rb +31 -38
  33. data/lib/ddtrace/contrib/dalli/quantize.rb +3 -3
  34. data/lib/ddtrace/contrib/delayed_job/configuration/settings.rb +15 -0
  35. data/lib/ddtrace/contrib/delayed_job/ext.rb +18 -0
  36. data/lib/ddtrace/contrib/delayed_job/integration.rb +32 -0
  37. data/lib/ddtrace/contrib/delayed_job/patcher.rb +20 -27
  38. data/lib/ddtrace/contrib/delayed_job/plugin.rb +7 -6
  39. data/lib/ddtrace/contrib/elasticsearch/configuration/settings.rb +16 -0
  40. data/lib/ddtrace/contrib/elasticsearch/ext.rb +18 -0
  41. data/lib/ddtrace/contrib/elasticsearch/integration.rb +37 -0
  42. data/lib/ddtrace/contrib/elasticsearch/patcher.rb +30 -39
  43. data/lib/ddtrace/contrib/excon/configuration/settings.rb +18 -0
  44. data/lib/ddtrace/contrib/excon/ext.rb +13 -0
  45. data/lib/ddtrace/contrib/excon/integration.rb +32 -0
  46. data/lib/ddtrace/contrib/excon/middleware.rb +10 -10
  47. data/lib/ddtrace/contrib/excon/patcher.rb +14 -30
  48. data/lib/ddtrace/contrib/faraday/configuration/settings.rb +23 -0
  49. data/lib/ddtrace/contrib/faraday/ext.rb +13 -0
  50. data/lib/ddtrace/contrib/faraday/integration.rb +36 -0
  51. data/lib/ddtrace/contrib/faraday/middleware.rb +10 -9
  52. data/lib/ddtrace/contrib/faraday/patcher.rb +39 -54
  53. data/lib/ddtrace/contrib/grape/configuration/settings.rb +16 -0
  54. data/lib/ddtrace/contrib/grape/endpoint.rb +10 -13
  55. data/lib/ddtrace/contrib/grape/ext.rb +19 -0
  56. data/lib/ddtrace/contrib/grape/integration.rb +36 -0
  57. data/lib/ddtrace/contrib/grape/patcher.rb +24 -24
  58. data/lib/ddtrace/contrib/graphql/configuration/settings.rb +20 -0
  59. data/lib/ddtrace/contrib/graphql/ext.rb +11 -0
  60. data/lib/ddtrace/contrib/graphql/integration.rb +38 -0
  61. data/lib/ddtrace/contrib/graphql/patcher.rb +33 -41
  62. data/lib/ddtrace/contrib/grpc/configuration/settings.rb +15 -0
  63. data/lib/ddtrace/contrib/grpc/datadog_interceptor/client.rb +5 -2
  64. data/lib/ddtrace/contrib/grpc/datadog_interceptor/server.rb +5 -2
  65. data/lib/ddtrace/contrib/grpc/ext.rb +14 -0
  66. data/lib/ddtrace/contrib/grpc/integration.rb +38 -0
  67. data/lib/ddtrace/contrib/grpc/patcher.rb +25 -35
  68. data/lib/ddtrace/contrib/http/circuit_breaker.rb +39 -0
  69. data/lib/ddtrace/contrib/http/configuration/settings.rb +16 -0
  70. data/lib/ddtrace/contrib/http/ext.rb +13 -0
  71. data/lib/ddtrace/contrib/http/integration.rb +32 -0
  72. data/lib/ddtrace/contrib/http/patcher.rb +10 -58
  73. data/lib/ddtrace/contrib/mongodb/configuration/settings.rb +18 -0
  74. data/lib/ddtrace/contrib/mongodb/ext.rb +20 -0
  75. data/lib/ddtrace/contrib/mongodb/integration.rb +36 -0
  76. data/lib/ddtrace/contrib/mongodb/patcher.rb +17 -27
  77. data/lib/ddtrace/contrib/mongodb/subscribers.rb +12 -11
  78. data/lib/ddtrace/contrib/mysql2/client.rb +8 -6
  79. data/lib/ddtrace/contrib/mysql2/configuration/settings.rb +15 -0
  80. data/lib/ddtrace/contrib/mysql2/ext.rb +15 -0
  81. data/lib/ddtrace/contrib/mysql2/integration.rb +32 -0
  82. data/lib/ddtrace/contrib/mysql2/patcher.rb +12 -22
  83. data/lib/ddtrace/contrib/racecar/configuration/settings.rb +23 -0
  84. data/lib/ddtrace/contrib/racecar/event.rb +7 -6
  85. data/lib/ddtrace/contrib/racecar/events/batch.rb +2 -2
  86. data/lib/ddtrace/contrib/racecar/events/message.rb +2 -2
  87. data/lib/ddtrace/contrib/racecar/ext.rb +21 -0
  88. data/lib/ddtrace/contrib/racecar/integration.rb +36 -0
  89. data/lib/ddtrace/contrib/racecar/patcher.rb +24 -41
  90. data/lib/ddtrace/contrib/rack/configuration/settings.rb +39 -0
  91. data/lib/ddtrace/contrib/rack/ext.rb +18 -0
  92. data/lib/ddtrace/contrib/rack/integration.rb +32 -0
  93. data/lib/ddtrace/contrib/rack/middlewares.rb +5 -2
  94. data/lib/ddtrace/contrib/rack/patcher.rb +22 -40
  95. data/lib/ddtrace/contrib/rails/action_controller.rb +10 -7
  96. data/lib/ddtrace/contrib/rails/action_controller_patch.rb +1 -0
  97. data/lib/ddtrace/contrib/rails/active_support.rb +9 -9
  98. data/lib/ddtrace/contrib/rails/configuration/settings.rb +26 -0
  99. data/lib/ddtrace/contrib/rails/core_extensions.rb +12 -15
  100. data/lib/ddtrace/contrib/rails/ext.rb +30 -0
  101. data/lib/ddtrace/contrib/rails/framework.rb +3 -2
  102. data/lib/ddtrace/contrib/rails/integration.rb +37 -0
  103. data/lib/ddtrace/contrib/rails/patcher.rb +56 -63
  104. data/lib/ddtrace/contrib/rails/railtie.rb +3 -10
  105. data/lib/ddtrace/contrib/rake/configuration/settings.rb +17 -0
  106. data/lib/ddtrace/contrib/rake/ext.rb +18 -0
  107. data/lib/ddtrace/contrib/rake/instrumentation.rb +7 -8
  108. data/lib/ddtrace/contrib/rake/integration.rb +36 -0
  109. data/lib/ddtrace/contrib/rake/patcher.rb +23 -33
  110. data/lib/ddtrace/contrib/redis/configuration/settings.rb +15 -0
  111. data/lib/ddtrace/contrib/redis/ext.rb +19 -0
  112. data/lib/ddtrace/contrib/redis/integration.rb +36 -0
  113. data/lib/ddtrace/contrib/redis/patcher.rb +21 -29
  114. data/lib/ddtrace/contrib/redis/tags.rb +3 -3
  115. data/lib/ddtrace/contrib/resque/configuration/settings.rb +16 -0
  116. data/lib/ddtrace/contrib/resque/ext.rb +13 -0
  117. data/lib/ddtrace/contrib/resque/integration.rb +37 -0
  118. data/lib/ddtrace/contrib/resque/patcher.rb +30 -36
  119. data/lib/ddtrace/contrib/resque/resque_job.rb +2 -1
  120. data/lib/ddtrace/contrib/rest_client/configuration/settings.rb +5 -8
  121. data/lib/ddtrace/contrib/rest_client/ext.rb +13 -0
  122. data/lib/ddtrace/contrib/rest_client/integration.rb +9 -1
  123. data/lib/ddtrace/contrib/rest_client/patcher.rb +1 -1
  124. data/lib/ddtrace/contrib/rest_client/request_patch.rb +9 -10
  125. data/lib/ddtrace/contrib/sequel/configuration/settings.rb +2 -0
  126. data/lib/ddtrace/contrib/sequel/database.rb +4 -3
  127. data/lib/ddtrace/contrib/sequel/dataset.rb +3 -2
  128. data/lib/ddtrace/contrib/sequel/ext.rb +15 -0
  129. data/lib/ddtrace/contrib/sequel/integration.rb +1 -3
  130. data/lib/ddtrace/contrib/sequel/patcher.rb +0 -1
  131. data/lib/ddtrace/contrib/sidekiq/configuration/settings.rb +15 -0
  132. data/lib/ddtrace/contrib/sidekiq/ext.rb +19 -0
  133. data/lib/ddtrace/contrib/sidekiq/integration.rb +36 -0
  134. data/lib/ddtrace/contrib/sidekiq/patcher.rb +18 -18
  135. data/lib/ddtrace/contrib/sidekiq/tracer.rb +10 -10
  136. data/lib/ddtrace/contrib/sinatra/configuration/settings.rb +27 -0
  137. data/lib/ddtrace/contrib/sinatra/env.rb +3 -4
  138. data/lib/ddtrace/contrib/sinatra/ext.rb +19 -0
  139. data/lib/ddtrace/contrib/sinatra/integration.rb +36 -0
  140. data/lib/ddtrace/contrib/sinatra/patcher.rb +33 -0
  141. data/lib/ddtrace/contrib/sinatra/tracer.rb +4 -34
  142. data/lib/ddtrace/contrib/sinatra/tracer_middleware.rb +2 -3
  143. data/lib/ddtrace/contrib/sucker_punch/configuration/settings.rb +15 -0
  144. data/lib/ddtrace/contrib/sucker_punch/ext.rb +18 -0
  145. data/lib/ddtrace/contrib/sucker_punch/instrumentation.rb +6 -5
  146. data/lib/ddtrace/contrib/sucker_punch/integration.rb +36 -0
  147. data/lib/ddtrace/contrib/sucker_punch/patcher.rb +29 -35
  148. data/lib/ddtrace/encoding.rb +21 -16
  149. data/lib/ddtrace/span.rb +29 -0
  150. data/lib/ddtrace/transport.rb +2 -2
  151. data/lib/ddtrace/version.rb +2 -2
  152. metadata +74 -6
  153. data/lib/ddtrace/ext/cache.rb +0 -8
  154. data/lib/ddtrace/ext/grpc.rb +0 -7
  155. data/lib/ddtrace/ext/mongo.rb +0 -12
  156. data/lib/ddtrace/ext/redis.rb +0 -17
@@ -6,19 +6,12 @@ module Datadog
6
6
  # Railtie class initializes
7
7
  class Railtie < Rails::Railtie
8
8
  # Add the trace middleware to the application stack
9
- initializer 'datadog.add_middleware' do |app|
10
- app.middleware.insert_before(0, Datadog::Contrib::Rack::TraceMiddleware)
11
- # Insert right after Rails exception handling middleware, because if it's before,
12
- # it catches and swallows the error. If it's too far after, custom middleware can find itself
13
- # between, and raise exceptions that don't end up getting tagged on the request properly (e.g lost stack trace.)
14
- app.middleware.insert_after(ActionDispatch::ShowExceptions, Datadog::Contrib::Rails::ExceptionMiddleware)
9
+ initializer 'datadog.before_intialize' do |app|
10
+ Datadog::Contrib::Rails::Patcher.before_intialize(app)
15
11
  end
16
12
 
17
13
  config.after_initialize do
18
- Datadog::Contrib::Rails::Framework.setup
19
- Datadog::Contrib::Rails::ActionController.instrument
20
- Datadog::Contrib::Rails::ActionView.instrument
21
- Datadog::Contrib::Rails::ActiveSupport.instrument
14
+ Datadog::Contrib::Rails::Patcher.after_intialize(self)
22
15
  end
23
16
  end
24
17
  end
@@ -0,0 +1,17 @@
1
+ require 'ddtrace/contrib/configuration/settings'
2
+ require 'ddtrace/contrib/rake/ext'
3
+
4
+ module Datadog
5
+ module Contrib
6
+ module Rake
7
+ module Configuration
8
+ # Custom settings for the Rake integration
9
+ class Settings < Contrib::Configuration::Settings
10
+ option :enabled, default: true
11
+ option :quantize, default: {}
12
+ option :service_name, default: Ext::SERVICE_NAME
13
+ end
14
+ end
15
+ end
16
+ end
17
+ end
@@ -0,0 +1,18 @@
1
+ module Datadog
2
+ module Contrib
3
+ module Rake
4
+ # Rake integration constants
5
+ module Ext
6
+ APP = 'rake'.freeze
7
+ SERVICE_NAME = 'rake'.freeze
8
+
9
+ SPAN_INVOKE = 'rake.invoke'.freeze
10
+ SPAN_EXECUTE = 'rake.execute'.freeze
11
+
12
+ TAG_EXECUTE_ARGS = 'rake.execute.args'.freeze
13
+ TAG_INVOKE_ARGS = 'rake.invoke.args'.freeze
14
+ TAG_TASK_ARG_NAMES = 'rake.task.arg_names'.freeze
15
+ end
16
+ end
17
+ end
18
+ end
@@ -1,11 +1,10 @@
1
+ require 'ddtrace/contrib/rake/ext'
2
+
1
3
  module Datadog
2
4
  module Contrib
3
5
  module Rake
4
6
  # Instrumentation for Rake tasks
5
7
  module Instrumentation
6
- SPAN_NAME_INVOKE = 'rake.invoke'.freeze
7
- SPAN_NAME_EXECUTE = 'rake.execute'.freeze
8
-
9
8
  def self.included(base)
10
9
  base.send(:prepend, InstanceMethods)
11
10
  end
@@ -15,7 +14,7 @@ module Datadog
15
14
  def invoke(*args)
16
15
  return super unless enabled?
17
16
 
18
- tracer.trace(SPAN_NAME_INVOKE, span_options) do |span|
17
+ tracer.trace(Ext::SPAN_INVOKE, span_options) do |span|
19
18
  super
20
19
  annotate_invoke!(span, args)
21
20
  end
@@ -26,7 +25,7 @@ module Datadog
26
25
  def execute(args = nil)
27
26
  return super unless enabled?
28
27
 
29
- tracer.trace(SPAN_NAME_EXECUTE, span_options) do |span|
28
+ tracer.trace(Ext::SPAN_EXECUTE, span_options) do |span|
30
29
  super
31
30
  annotate_execute!(span, args)
32
31
  end
@@ -42,15 +41,15 @@ module Datadog
42
41
 
43
42
  def annotate_invoke!(span, args)
44
43
  span.resource = name
45
- span.set_tag('rake.task.arg_names', arg_names)
46
- span.set_tag('rake.invoke.args', quantize_args(args)) unless args.nil?
44
+ span.set_tag(Ext::TAG_TASK_ARG_NAMES, arg_names)
45
+ span.set_tag(Ext::TAG_INVOKE_ARGS, quantize_args(args)) unless args.nil?
47
46
  rescue StandardError => e
48
47
  Datadog::Tracer.log.debug("Error while tracing Rake invoke: #{e.message}")
49
48
  end
50
49
 
51
50
  def annotate_execute!(span, args)
52
51
  span.resource = name
53
- span.set_tag('rake.execute.args', quantize_args(args.to_hash)) unless args.nil?
52
+ span.set_tag(Ext::TAG_EXECUTE_ARGS, quantize_args(args.to_hash)) unless args.nil?
54
53
  rescue StandardError => e
55
54
  Datadog::Tracer.log.debug("Error while tracing Rake execute: #{e.message}")
56
55
  end
@@ -0,0 +1,36 @@
1
+ require 'ddtrace/contrib/integration'
2
+ require 'ddtrace/contrib/rake/configuration/settings'
3
+ require 'ddtrace/contrib/rake/patcher'
4
+
5
+ module Datadog
6
+ module Contrib
7
+ module Rake
8
+ # Description of Rake integration
9
+ class Integration
10
+ include Contrib::Integration
11
+
12
+ register_as :rake
13
+
14
+ def self.version
15
+ Gem.loaded_specs['rake'] && Gem.loaded_specs['rake'].version
16
+ end
17
+
18
+ def self.present?
19
+ super && defined?(::Rake)
20
+ end
21
+
22
+ def self.compatible?
23
+ super && RUBY_VERSION >= '2.0.0'
24
+ end
25
+
26
+ def default_configuration
27
+ Configuration::Settings.new
28
+ end
29
+
30
+ def patcher
31
+ Patcher
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -1,51 +1,41 @@
1
+ require 'ddtrace/contrib/patcher'
1
2
  require 'ddtrace/ext/app_types'
3
+ require 'ddtrace/contrib/rake/ext'
2
4
  require 'ddtrace/contrib/rake/instrumentation'
3
5
 
4
6
  module Datadog
5
7
  module Contrib
6
8
  module Rake
7
- # Patcher for Rake instrumentation
9
+ # Patcher enables patching of 'rake' module.
8
10
  module Patcher
9
- include Base
10
-
11
- register_as :rake
12
- option :service_name, default: 'rake'
13
- option :tracer, default: Datadog.tracer
14
- option :enabled, default: true
15
- option :quantize, default: {}
11
+ include Contrib::Patcher
16
12
 
17
13
  module_function
18
14
 
19
- def patch
20
- return patched? if patched? || !compatible?
21
-
22
- patch_rake
23
-
24
- # Set service info
25
- configuration[:tracer].set_service_info(
26
- configuration[:service_name],
27
- 'rake',
28
- Ext::AppTypes::WORKER
29
- )
30
-
31
- @patched = true
32
- end
33
-
34
15
  def patched?
35
- return @patched if defined?(@patched)
36
- @patched = false
16
+ done?(:rake)
37
17
  end
38
18
 
39
- def patch_rake
40
- ::Rake::Task.send(:include, Instrumentation)
41
- end
42
-
43
- def compatible?
44
- RUBY_VERSION >= '2.0.0' && defined?(::Rake)
19
+ def patch
20
+ do_once(:rake) do
21
+ begin
22
+ # Add instrumentation patch to Rake task
23
+ ::Rake::Task.send(:include, Instrumentation)
24
+
25
+ # Set service info
26
+ get_option(:tracer).set_service_info(
27
+ get_option(:service_name),
28
+ Ext::APP,
29
+ Datadog::Ext::AppTypes::WORKER
30
+ )
31
+ rescue StandardError => e
32
+ Datadog::Tracer.log.error("Unable to apply Rake integration: #{e}")
33
+ end
34
+ end
45
35
  end
46
36
 
47
- def configuration
48
- Datadog.configuration[:rake]
37
+ def get_option(option)
38
+ Datadog.configuration[:rake].get_option(option)
49
39
  end
50
40
  end
51
41
  end
@@ -0,0 +1,15 @@
1
+ require 'ddtrace/contrib/configuration/settings'
2
+ require 'ddtrace/contrib/redis/ext'
3
+
4
+ module Datadog
5
+ module Contrib
6
+ module Redis
7
+ module Configuration
8
+ # Custom settings for the Redis integration
9
+ class Settings < Contrib::Configuration::Settings
10
+ option :service_name, default: Ext::SERVICE_NAME
11
+ end
12
+ end
13
+ end
14
+ end
15
+ end
@@ -0,0 +1,19 @@
1
+ module Datadog
2
+ module Contrib
3
+ module Redis
4
+ # Redis integration constants
5
+ module Ext
6
+ APP = 'redis'.freeze
7
+ SERVICE_NAME = 'redis'.freeze
8
+ TYPE = 'redis'.freeze
9
+
10
+ METRIC_PIPELINE_LEN = 'redis.pipeline_length'.freeze
11
+
12
+ SPAN_COMMAND = 'redis.command'.freeze
13
+
14
+ TAG_DB = 'out.redis_db'.freeze
15
+ TAG_RAW_COMMAND = 'redis.raw_command'.freeze
16
+ end
17
+ end
18
+ end
19
+ end
@@ -0,0 +1,36 @@
1
+ require 'ddtrace/contrib/integration'
2
+ require 'ddtrace/contrib/redis/configuration/settings'
3
+ require 'ddtrace/contrib/redis/patcher'
4
+
5
+ module Datadog
6
+ module Contrib
7
+ module Redis
8
+ # Description of Redis integration
9
+ class Integration
10
+ include Contrib::Integration
11
+
12
+ register_as :redis, auto_patch: true
13
+
14
+ def self.version
15
+ Gem.loaded_specs['redis'] && Gem.loaded_specs['redis'].version
16
+ end
17
+
18
+ def self.present?
19
+ super && defined?(::Redis)
20
+ end
21
+
22
+ def self.compatible?
23
+ !version.nil? && version >= Gem::Version.new('3.0.0')
24
+ end
25
+
26
+ def default_configuration
27
+ Configuration::Settings.new
28
+ end
29
+
30
+ def patcher
31
+ Patcher
32
+ end
33
+ end
34
+ end
35
+ end
36
+ end
@@ -1,43 +1,35 @@
1
- # requirements should be kept minimal as Patcher is a shared requirement.
1
+ require 'ddtrace/contrib/patcher'
2
+ require 'ddtrace/contrib/redis/ext'
2
3
 
3
4
  module Datadog
4
5
  module Contrib
5
6
  module Redis
6
- SERVICE = 'redis'.freeze
7
- DRIVER = 'redis.driver'.freeze
8
-
9
7
  # Patcher enables patching of 'redis' module.
10
8
  module Patcher
11
- include Base
12
- register_as :redis, auto_patch: true
13
- option :service_name, default: SERVICE
14
- option :tracer, default: Datadog.tracer
15
-
16
- @patched = false
9
+ include Contrib::Patcher
17
10
 
18
11
  module_function
19
12
 
13
+ def patched?
14
+ done?(:redis)
15
+ end
16
+
20
17
  # patch applies our patch if needed
21
18
  def patch
22
- if !@patched && compatible?
19
+ do_once(:redis) do
23
20
  begin
24
21
  # do not require these by default, but only when actually patching
22
+ require 'redis'
25
23
  require 'ddtrace/ext/app_types'
26
24
  require 'ddtrace/contrib/redis/tags'
27
25
  require 'ddtrace/contrib/redis/quantize'
28
26
 
29
27
  patch_redis_client
30
- @patched = true
31
- RailsCachePatcher.reload_cache_store if Datadog.registry[:rails].patched?
28
+ RailsCachePatcher.reload_cache_store if Datadog.registry[:rails].patcher.patched?
32
29
  rescue StandardError => e
33
30
  Datadog::Tracer.log.error("Unable to apply Redis integration: #{e}")
34
31
  end
35
32
  end
36
- @patched
37
- end
38
-
39
- def compatible?
40
- defined?(::Redis::VERSION) && Gem::Version.new(::Redis::VERSION) >= Gem::Version.new('3.0.0')
41
33
  end
42
34
 
43
35
  # rubocop:disable Metrics/MethodLength
@@ -52,7 +44,12 @@ module Datadog
52
44
  def initialize(*args)
53
45
  service = Datadog.configuration[:redis][:service_name]
54
46
  tracer = Datadog.configuration[:redis][:tracer]
55
- pin = Datadog::Pin.new(service, app: 'redis', app_type: Datadog::Ext::AppTypes::DB, tracer: tracer)
47
+ pin = Datadog::Pin.new(
48
+ service,
49
+ app: Ext::APP,
50
+ app_type: Datadog::Ext::AppTypes::DB,
51
+ tracer: tracer
52
+ )
56
53
  pin.onto(self)
57
54
  initialize_without_datadog(*args)
58
55
  end
@@ -64,9 +61,9 @@ module Datadog
64
61
  return call_without_datadog(*args, &block) unless pin && pin.tracer
65
62
 
66
63
  response = nil
67
- pin.tracer.trace('redis.command') do |span|
64
+ pin.tracer.trace(Datadog::Contrib::Redis::Ext::SPAN_COMMAND) do |span|
68
65
  span.service = pin.service
69
- span.span_type = Datadog::Ext::Redis::TYPE
66
+ span.span_type = Datadog::Contrib::Redis::Ext::TYPE
70
67
  span.resource = Datadog::Contrib::Redis::Quantize.format_command_args(*args)
71
68
  Datadog::Contrib::Redis::Tags.set_common_tags(self, span)
72
69
 
@@ -83,13 +80,13 @@ module Datadog
83
80
  return call_pipeline_without_datadog(*args, &block) unless pin && pin.tracer
84
81
 
85
82
  response = nil
86
- pin.tracer.trace('redis.command') do |span|
83
+ pin.tracer.trace(Datadog::Contrib::Redis::Ext::SPAN_COMMAND) do |span|
87
84
  span.service = pin.service
88
- span.span_type = Datadog::Ext::Redis::TYPE
85
+ span.span_type = Datadog::Contrib::Redis::Ext::TYPE
89
86
  commands = args[0].commands.map { |c| Datadog::Contrib::Redis::Quantize.format_command_args(c) }
90
87
  span.resource = commands.join("\n")
91
88
  Datadog::Contrib::Redis::Tags.set_common_tags(self, span)
92
- span.set_metric Datadog::Ext::Redis::PIPELINE_LEN, commands.length
89
+ span.set_metric Datadog::Contrib::Redis::Ext::METRIC_PIPELINE_LEN, commands.length
93
90
 
94
91
  response = call_pipeline_without_datadog(*args, &block)
95
92
  end
@@ -98,11 +95,6 @@ module Datadog
98
95
  end
99
96
  end
100
97
  end
101
-
102
- # patched? tells wether patch has been successfully applied
103
- def patched?
104
- @patched
105
- end
106
98
  end
107
99
  end
108
100
  end
@@ -1,5 +1,5 @@
1
1
  require 'ddtrace/ext/net'
2
- require 'ddtrace/ext/redis'
2
+ require 'ddtrace/contrib/redis/ext'
3
3
 
4
4
  module Datadog
5
5
  module Contrib
@@ -11,8 +11,8 @@ module Datadog
11
11
  def set_common_tags(client, span)
12
12
  span.set_tag Datadog::Ext::NET::TARGET_HOST, client.host
13
13
  span.set_tag Datadog::Ext::NET::TARGET_PORT, client.port
14
- span.set_tag Datadog::Ext::Redis::DB, client.db
15
- span.set_tag Datadog::Ext::Redis::RAW_COMMAND, span.resource
14
+ span.set_tag Ext::TAG_DB, client.db
15
+ span.set_tag Ext::TAG_RAW_COMMAND, span.resource
16
16
  end
17
17
  end
18
18
  end
@@ -0,0 +1,16 @@
1
+ require 'ddtrace/contrib/configuration/settings'
2
+ require 'ddtrace/contrib/resque/ext'
3
+
4
+ module Datadog
5
+ module Contrib
6
+ module Resque
7
+ module Configuration
8
+ # Custom settings for the Resque integration
9
+ class Settings < Contrib::Configuration::Settings
10
+ option :service_name, default: Ext::SERVICE_NAME
11
+ option :workers, default: []
12
+ end
13
+ end
14
+ end
15
+ end
16
+ end
@@ -0,0 +1,13 @@
1
+ module Datadog
2
+ module Contrib
3
+ module Resque
4
+ # Resque integration constants
5
+ module Ext
6
+ APP = 'resque'.freeze
7
+ SERVICE_NAME = 'resque'.freeze
8
+
9
+ SPAN_JOB = 'resque.job'.freeze
10
+ end
11
+ end
12
+ end
13
+ end