ddtrace 1.20.0 → 1.21.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 (84) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +61 -2
  3. data/LICENSE-3rdparty.csv +1 -1
  4. data/bin/ddprofrb +15 -0
  5. data/bin/ddtracerb +3 -1
  6. data/ext/{ddtrace_profiling_loader/ddtrace_profiling_loader.c → datadog_profiling_loader/datadog_profiling_loader.c} +2 -2
  7. data/ext/{ddtrace_profiling_loader → datadog_profiling_loader}/extconf.rb +3 -3
  8. data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/collectors_cpu_and_wall_time_worker.c +206 -49
  9. data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/collectors_discrete_dynamic_sampler.c +145 -72
  10. data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/collectors_discrete_dynamic_sampler.h +17 -5
  11. data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/collectors_thread_context.c +92 -2
  12. data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/extconf.rb +2 -2
  13. data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/http_transport.c +10 -14
  14. data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/native_extension_helpers.rb +4 -4
  15. data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/private_vm_api_access.c +14 -0
  16. data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/private_vm_api_access.h +4 -0
  17. data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/profiling.c +1 -1
  18. data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/ruby_helpers.c +10 -0
  19. data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/ruby_helpers.h +2 -0
  20. data/lib/datadog/core/configuration/components.rb +5 -5
  21. data/lib/datadog/core/configuration/option.rb +1 -1
  22. data/lib/datadog/core/configuration/settings.rb +92 -46
  23. data/lib/datadog/core/diagnostics/environment_logger.rb +4 -3
  24. data/lib/datadog/core/environment/git.rb +25 -0
  25. data/lib/datadog/core/environment/identity.rb +18 -48
  26. data/lib/datadog/core/git/ext.rb +2 -23
  27. data/lib/datadog/core/remote/negotiation.rb +2 -2
  28. data/lib/datadog/core/remote/worker.rb +7 -4
  29. data/lib/datadog/core/transport/ext.rb +2 -0
  30. data/lib/datadog/core/utils/url.rb +25 -0
  31. data/lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb +6 -0
  32. data/lib/datadog/profiling/collectors/info.rb +101 -0
  33. data/lib/datadog/profiling/component.rb +12 -14
  34. data/lib/datadog/profiling/exporter.rb +19 -5
  35. data/lib/datadog/profiling/ext.rb +2 -0
  36. data/lib/datadog/profiling/flush.rb +6 -3
  37. data/lib/datadog/profiling/http_transport.rb +5 -1
  38. data/lib/datadog/profiling/load_native_extension.rb +5 -5
  39. data/lib/datadog/profiling/native_extension.rb +1 -1
  40. data/lib/datadog/profiling/tag_builder.rb +5 -0
  41. data/lib/datadog/profiling/tasks/exec.rb +3 -3
  42. data/lib/datadog/profiling/tasks/help.rb +3 -3
  43. data/lib/datadog/profiling.rb +2 -2
  44. data/lib/datadog/tracing/contrib/concurrent_ruby/async_patch.rb +20 -0
  45. data/lib/datadog/tracing/contrib/concurrent_ruby/patcher.rb +11 -1
  46. data/lib/datadog/tracing/contrib/extensions.rb +6 -2
  47. data/lib/datadog/tracing/contrib/grape/endpoint.rb +5 -0
  48. data/lib/datadog/tracing/contrib/pg/instrumentation.rb +11 -4
  49. data/lib/datadog/tracing/contrib/rack/middlewares.rb +28 -4
  50. data/lib/datadog/tracing/contrib/rails/patcher.rb +16 -0
  51. data/lib/datadog/tracing/contrib/sinatra/tracer.rb +6 -3
  52. data/lib/datadog/tracing/metadata/ext.rb +2 -0
  53. data/lib/datadog/tracing/trace_operation.rb +1 -2
  54. data/lib/datadog/tracing/transport/http.rb +1 -0
  55. data/lib/datadog/tracing/transport/trace_formatter.rb +31 -0
  56. data/lib/ddtrace/version.rb +1 -1
  57. metadata +56 -53
  58. data/ext/ddtrace_profiling_native_extension/pid_controller.c +0 -57
  59. data/ext/ddtrace_profiling_native_extension/pid_controller.h +0 -45
  60. data/lib/datadog/profiling/diagnostics/environment_logger.rb +0 -39
  61. /data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/NativeExtensionDesign.md +0 -0
  62. /data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/clock_id.h +0 -0
  63. /data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/clock_id_from_pthread.c +0 -0
  64. /data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/clock_id_noop.c +0 -0
  65. /data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/collectors_dynamic_sampling_rate.c +0 -0
  66. /data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/collectors_dynamic_sampling_rate.h +0 -0
  67. /data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/collectors_gc_profiling_helper.c +0 -0
  68. /data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/collectors_gc_profiling_helper.h +0 -0
  69. /data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/collectors_idle_sampling_helper.c +0 -0
  70. /data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/collectors_idle_sampling_helper.h +0 -0
  71. /data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/collectors_stack.c +0 -0
  72. /data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/collectors_stack.h +0 -0
  73. /data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/collectors_thread_context.h +0 -0
  74. /data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/heap_recorder.c +0 -0
  75. /data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/heap_recorder.h +0 -0
  76. /data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/helpers.h +0 -0
  77. /data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/libdatadog_helpers.c +0 -0
  78. /data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/libdatadog_helpers.h +0 -0
  79. /data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/setup_signal_handler.c +0 -0
  80. /data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/setup_signal_handler.h +0 -0
  81. /data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/stack_recorder.c +0 -0
  82. /data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/stack_recorder.h +0 -0
  83. /data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/time_helpers.c +0 -0
  84. /data/ext/{ddtrace_profiling_native_extension → datadog_profiling_native_extension}/time_helpers.h +0 -0
@@ -5,11 +5,24 @@ require_relative 'log_injection'
5
5
  require_relative 'middlewares'
6
6
  require_relative 'utils'
7
7
  require_relative '../semantic_logger/patcher'
8
+ require_relative 'ext'
8
9
 
9
10
  module Datadog
10
11
  module Tracing
11
12
  module Contrib
12
13
  module Rails
14
+ # Patcher to trace rails routing done by JourneyRouter
15
+ module JourneyRouterPatch
16
+ def find_routes(*args)
17
+ result = super
18
+ integration_route = result.first[2].path.spec.to_s.gsub(/\(\.:format\)/, '') if result.any?
19
+ request_trace = Tracing.active_trace || TraceOperation.new
20
+ request_trace.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, integration_route)
21
+ request_trace.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE_PATH, args.first.env['SCRIPT_NAME'])
22
+ result
23
+ end
24
+ end
25
+
13
26
  # Patcher enables patching of 'rails' module.
14
27
  module Patcher
15
28
  include Contrib::Patcher
@@ -41,6 +54,9 @@ module Datadog
41
54
  # Sometimes we don't want to activate middleware e.g. OpenTracing, etc.
42
55
  add_middleware(app) if Datadog.configuration.tracing[:rails][:middleware]
43
56
 
57
+ # ActionDispatch::Journey is not available or incompatible in Rails < 4.2.
58
+ ActionDispatch::Journey::Router.prepend(JourneyRouterPatch) if Integration.version >= Gem::Version.new('4.2')
59
+
44
60
  Rails::LogInjection.configure_log_tags(app.config)
45
61
  end
46
62
  end
@@ -47,16 +47,16 @@ module Datadog
47
47
  configuration = Datadog.configuration.tracing[:sinatra]
48
48
  return super unless Tracing.enabled?
49
49
 
50
- datadog_route = Sinatra::Env.route_path(env)
50
+ integration_route = Sinatra::Env.route_path(env)
51
51
 
52
52
  Tracing.trace(
53
53
  Ext::SPAN_ROUTE,
54
54
  service: configuration[:service_name],
55
55
  span_type: Tracing::Metadata::Ext::HTTP::TYPE_INBOUND,
56
- resource: "#{request.request_method} #{datadog_route}",
56
+ resource: "#{request.request_method} #{integration_route}",
57
57
  ) do |span, trace|
58
58
  span.set_tag(Ext::TAG_APP_NAME, settings.name || settings.superclass.name)
59
- span.set_tag(Ext::TAG_ROUTE_PATH, datadog_route)
59
+ span.set_tag(Ext::TAG_ROUTE_PATH, integration_route)
60
60
 
61
61
  if request.script_name && !request.script_name.empty?
62
62
  span.set_tag(Ext::TAG_SCRIPT_NAME, request.script_name)
@@ -73,6 +73,9 @@ module Datadog
73
73
 
74
74
  Contrib::Analytics.set_measured(span)
75
75
 
76
+ _, path = env['sinatra.route'].split(' ', 2)
77
+ trace.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, path)
78
+ trace.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE_PATH, env['SCRIPT_NAME'])
76
79
  super
77
80
  end
78
81
  end
@@ -86,6 +86,8 @@ module Datadog
86
86
  TYPE_TEMPLATE = 'template'
87
87
  TAG_CLIENT_IP = 'http.client_ip'
88
88
  HEADER_USER_AGENT = 'User-Agent'
89
+ TAG_ROUTE = 'http.route'
90
+ TAG_ROUTE_PATH = 'http.route.path'
89
91
 
90
92
  # General header functionality
91
93
  module Headers
@@ -137,13 +137,12 @@ module Datadog
137
137
  end
138
138
 
139
139
  def keep!
140
- self.sampled = true
141
140
  self.sampling_priority = Sampling::Ext::Priority::USER_KEEP
142
141
  set_tag(Tracing::Metadata::Ext::Distributed::TAG_DECISION_MAKER, Tracing::Sampling::Ext::Decision::MANUAL)
142
+ self.sampled = true # Just in case the in-app sampler had decided to drop this span, we revert that decision.
143
143
  end
144
144
 
145
145
  def reject!
146
- self.sampled = false
147
146
  self.sampling_priority = Sampling::Ext::Priority::USER_REJECT
148
147
  set_tag(Tracing::Metadata::Ext::Distributed::TAG_DECISION_MAKER, Tracing::Sampling::Ext::Decision::MANUAL)
149
148
  end
@@ -71,6 +71,7 @@ module Datadog
71
71
  Datadog::Core::Transport::Ext::HTTP::HEADER_META_LANG_VERSION => Datadog::Core::Environment::Ext::LANG_VERSION,
72
72
  Datadog::Core::Transport::Ext::HTTP::HEADER_META_LANG_INTERPRETER =>
73
73
  Datadog::Core::Environment::Ext::LANG_INTERPRETER,
74
+ Datadog::Core::Transport::Ext::HTTP::HEADER_META_LANG_INTERPRETER_VENDOR => Core::Environment::Ext::LANG_ENGINE,
74
75
  Datadog::Core::Transport::Ext::HTTP::HEADER_META_TRACER_VERSION =>
75
76
  Datadog::Core::Environment::Ext::TRACER_VERSION
76
77
  }.tap do |headers|
@@ -2,6 +2,8 @@
2
2
 
3
3
  require_relative '../../core/environment/identity'
4
4
  require_relative '../../core/environment/socket'
5
+ require_relative '../../core/environment/git'
6
+ require_relative '../../core/git/ext'
5
7
  require_relative '../../core/runtime/ext'
6
8
  require_relative '../metadata/ext'
7
9
  require_relative '../trace_segment'
@@ -13,6 +15,7 @@ module Datadog
13
15
  class TraceFormatter
14
16
  attr_reader \
15
17
  :root_span,
18
+ :first_span,
16
19
  :trace
17
20
 
18
21
  def self.format!(trace)
@@ -22,6 +25,9 @@ module Datadog
22
25
  def initialize(trace)
23
26
  @trace = trace
24
27
  @root_span = find_root_span(trace)
28
+ # source code integration uses the "first span in trace chunk" concept instead of root span
29
+ # see: https://github.com/DataDog/dd-trace-rb/pull/3424
30
+ @first_span = trace.spans.first
25
31
  end
26
32
 
27
33
  # Modifies a trace so suitable for transport
@@ -54,6 +60,11 @@ module Datadog
54
60
  tag_sampling_priority!
55
61
  tag_profiling_enabled!
56
62
 
63
+ if first_span
64
+ tag_git_repository_url!
65
+ tag_git_commit_sha!
66
+ end
67
+
57
68
  trace
58
69
  end
59
70
 
@@ -185,6 +196,18 @@ module Datadog
185
196
  )
186
197
  end
187
198
 
199
+ def tag_git_repository_url!
200
+ return if git_repository_url.nil?
201
+
202
+ first_span.set_tag(Core::Git::Ext::TAG_REPOSITORY_URL, git_repository_url)
203
+ end
204
+
205
+ def tag_git_commit_sha!
206
+ return if git_commit_sha.nil?
207
+
208
+ first_span.set_tag(Core::Git::Ext::TAG_COMMIT_SHA, git_commit_sha)
209
+ end
210
+
188
211
  private
189
212
 
190
213
  def partial?
@@ -203,6 +226,14 @@ module Datadog
203
226
  # when root span is not found, fall back to last span (partial flush)
204
227
  root_span || trace.spans.last
205
228
  end
229
+
230
+ def git_repository_url
231
+ Core::Environment::Git.git_repository_url
232
+ end
233
+
234
+ def git_commit_sha
235
+ Core::Environment::Git.git_commit_sha
236
+ end
206
237
  end
207
238
  end
208
239
  end
@@ -3,7 +3,7 @@
3
3
  module DDTrace
4
4
  module VERSION
5
5
  MAJOR = 1
6
- MINOR = 20
6
+ MINOR = 21
7
7
  PATCH = 0
8
8
  PRE = nil
9
9
  BUILD = nil
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: 1.20.0
4
+ version: 1.21.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Datadog, Inc.
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-02-05 00:00:00.000000000 Z
11
+ date: 2024-03-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
@@ -58,28 +58,28 @@ dependencies:
58
58
  requirements:
59
59
  - - "~>"
60
60
  - !ruby/object:Gem::Version
61
- version: 5.0.0.1.0
61
+ version: 6.0.0.2.0
62
62
  type: :runtime
63
63
  prerelease: false
64
64
  version_requirements: !ruby/object:Gem::Requirement
65
65
  requirements:
66
66
  - - "~>"
67
67
  - !ruby/object:Gem::Version
68
- version: 5.0.0.1.0
68
+ version: 6.0.0.2.0
69
69
  - !ruby/object:Gem::Dependency
70
70
  name: datadog-ci
71
71
  requirement: !ruby/object:Gem::Requirement
72
72
  requirements:
73
73
  - - "~>"
74
74
  - !ruby/object:Gem::Version
75
- version: 0.7.0
75
+ version: 0.8.1
76
76
  type: :runtime
77
77
  prerelease: false
78
78
  version_requirements: !ruby/object:Gem::Requirement
79
79
  requirements:
80
80
  - - "~>"
81
81
  - !ruby/object:Gem::Version
82
- version: 0.7.0
82
+ version: 0.8.1
83
83
  description: |
84
84
  ddtrace is Datadog's tracing client for Ruby. It is used to trace requests
85
85
  as they flow across web servers, databases and microservices so that developers
@@ -88,9 +88,10 @@ email:
88
88
  - dev@datadoghq.com
89
89
  executables:
90
90
  - ddtracerb
91
+ - ddprofrb
91
92
  extensions:
92
- - ext/ddtrace_profiling_native_extension/extconf.rb
93
- - ext/ddtrace_profiling_loader/extconf.rb
93
+ - ext/datadog_profiling_native_extension/extconf.rb
94
+ - ext/datadog_profiling_loader/extconf.rb
94
95
  extra_rdoc_files: []
95
96
  files:
96
97
  - CHANGELOG.md
@@ -100,47 +101,46 @@ files:
100
101
  - LICENSE.BSD3
101
102
  - NOTICE
102
103
  - README.md
104
+ - bin/ddprofrb
103
105
  - bin/ddtracerb
104
- - ext/ddtrace_profiling_loader/ddtrace_profiling_loader.c
105
- - ext/ddtrace_profiling_loader/extconf.rb
106
- - ext/ddtrace_profiling_native_extension/NativeExtensionDesign.md
107
- - ext/ddtrace_profiling_native_extension/clock_id.h
108
- - ext/ddtrace_profiling_native_extension/clock_id_from_pthread.c
109
- - ext/ddtrace_profiling_native_extension/clock_id_noop.c
110
- - ext/ddtrace_profiling_native_extension/collectors_cpu_and_wall_time_worker.c
111
- - ext/ddtrace_profiling_native_extension/collectors_discrete_dynamic_sampler.c
112
- - ext/ddtrace_profiling_native_extension/collectors_discrete_dynamic_sampler.h
113
- - ext/ddtrace_profiling_native_extension/collectors_dynamic_sampling_rate.c
114
- - ext/ddtrace_profiling_native_extension/collectors_dynamic_sampling_rate.h
115
- - ext/ddtrace_profiling_native_extension/collectors_gc_profiling_helper.c
116
- - ext/ddtrace_profiling_native_extension/collectors_gc_profiling_helper.h
117
- - ext/ddtrace_profiling_native_extension/collectors_idle_sampling_helper.c
118
- - ext/ddtrace_profiling_native_extension/collectors_idle_sampling_helper.h
119
- - ext/ddtrace_profiling_native_extension/collectors_stack.c
120
- - ext/ddtrace_profiling_native_extension/collectors_stack.h
121
- - ext/ddtrace_profiling_native_extension/collectors_thread_context.c
122
- - ext/ddtrace_profiling_native_extension/collectors_thread_context.h
123
- - ext/ddtrace_profiling_native_extension/extconf.rb
124
- - ext/ddtrace_profiling_native_extension/heap_recorder.c
125
- - ext/ddtrace_profiling_native_extension/heap_recorder.h
126
- - ext/ddtrace_profiling_native_extension/helpers.h
127
- - ext/ddtrace_profiling_native_extension/http_transport.c
128
- - ext/ddtrace_profiling_native_extension/libdatadog_helpers.c
129
- - ext/ddtrace_profiling_native_extension/libdatadog_helpers.h
130
- - ext/ddtrace_profiling_native_extension/native_extension_helpers.rb
131
- - ext/ddtrace_profiling_native_extension/pid_controller.c
132
- - ext/ddtrace_profiling_native_extension/pid_controller.h
133
- - ext/ddtrace_profiling_native_extension/private_vm_api_access.c
134
- - ext/ddtrace_profiling_native_extension/private_vm_api_access.h
135
- - ext/ddtrace_profiling_native_extension/profiling.c
136
- - ext/ddtrace_profiling_native_extension/ruby_helpers.c
137
- - ext/ddtrace_profiling_native_extension/ruby_helpers.h
138
- - ext/ddtrace_profiling_native_extension/setup_signal_handler.c
139
- - ext/ddtrace_profiling_native_extension/setup_signal_handler.h
140
- - ext/ddtrace_profiling_native_extension/stack_recorder.c
141
- - ext/ddtrace_profiling_native_extension/stack_recorder.h
142
- - ext/ddtrace_profiling_native_extension/time_helpers.c
143
- - ext/ddtrace_profiling_native_extension/time_helpers.h
106
+ - ext/datadog_profiling_loader/datadog_profiling_loader.c
107
+ - ext/datadog_profiling_loader/extconf.rb
108
+ - ext/datadog_profiling_native_extension/NativeExtensionDesign.md
109
+ - ext/datadog_profiling_native_extension/clock_id.h
110
+ - ext/datadog_profiling_native_extension/clock_id_from_pthread.c
111
+ - ext/datadog_profiling_native_extension/clock_id_noop.c
112
+ - ext/datadog_profiling_native_extension/collectors_cpu_and_wall_time_worker.c
113
+ - ext/datadog_profiling_native_extension/collectors_discrete_dynamic_sampler.c
114
+ - ext/datadog_profiling_native_extension/collectors_discrete_dynamic_sampler.h
115
+ - ext/datadog_profiling_native_extension/collectors_dynamic_sampling_rate.c
116
+ - ext/datadog_profiling_native_extension/collectors_dynamic_sampling_rate.h
117
+ - ext/datadog_profiling_native_extension/collectors_gc_profiling_helper.c
118
+ - ext/datadog_profiling_native_extension/collectors_gc_profiling_helper.h
119
+ - ext/datadog_profiling_native_extension/collectors_idle_sampling_helper.c
120
+ - ext/datadog_profiling_native_extension/collectors_idle_sampling_helper.h
121
+ - ext/datadog_profiling_native_extension/collectors_stack.c
122
+ - ext/datadog_profiling_native_extension/collectors_stack.h
123
+ - ext/datadog_profiling_native_extension/collectors_thread_context.c
124
+ - ext/datadog_profiling_native_extension/collectors_thread_context.h
125
+ - ext/datadog_profiling_native_extension/extconf.rb
126
+ - ext/datadog_profiling_native_extension/heap_recorder.c
127
+ - ext/datadog_profiling_native_extension/heap_recorder.h
128
+ - ext/datadog_profiling_native_extension/helpers.h
129
+ - ext/datadog_profiling_native_extension/http_transport.c
130
+ - ext/datadog_profiling_native_extension/libdatadog_helpers.c
131
+ - ext/datadog_profiling_native_extension/libdatadog_helpers.h
132
+ - ext/datadog_profiling_native_extension/native_extension_helpers.rb
133
+ - ext/datadog_profiling_native_extension/private_vm_api_access.c
134
+ - ext/datadog_profiling_native_extension/private_vm_api_access.h
135
+ - ext/datadog_profiling_native_extension/profiling.c
136
+ - ext/datadog_profiling_native_extension/ruby_helpers.c
137
+ - ext/datadog_profiling_native_extension/ruby_helpers.h
138
+ - ext/datadog_profiling_native_extension/setup_signal_handler.c
139
+ - ext/datadog_profiling_native_extension/setup_signal_handler.h
140
+ - ext/datadog_profiling_native_extension/stack_recorder.c
141
+ - ext/datadog_profiling_native_extension/stack_recorder.h
142
+ - ext/datadog_profiling_native_extension/time_helpers.c
143
+ - ext/datadog_profiling_native_extension/time_helpers.h
144
144
  - lib/datadog/appsec.rb
145
145
  - lib/datadog/appsec/assets.rb
146
146
  - lib/datadog/appsec/assets/blocked.html
@@ -245,6 +245,7 @@ files:
245
245
  - lib/datadog/core/environment/execution.rb
246
246
  - lib/datadog/core/environment/ext.rb
247
247
  - lib/datadog/core/environment/gc.rb
248
+ - lib/datadog/core/environment/git.rb
248
249
  - lib/datadog/core/environment/identity.rb
249
250
  - lib/datadog/core/environment/platform.rb
250
251
  - lib/datadog/core/environment/socket.rb
@@ -338,6 +339,7 @@ files:
338
339
  - lib/datadog/core/utils/safe_dup.rb
339
340
  - lib/datadog/core/utils/sequence.rb
340
341
  - lib/datadog/core/utils/time.rb
342
+ - lib/datadog/core/utils/url.rb
341
343
  - lib/datadog/core/vendor/ipaddr.rb
342
344
  - lib/datadog/core/vendor/multipart-post/LICENSE
343
345
  - lib/datadog/core/vendor/multipart-post/multipart.rb
@@ -387,10 +389,10 @@ files:
387
389
  - lib/datadog/profiling/collectors/cpu_and_wall_time_worker.rb
388
390
  - lib/datadog/profiling/collectors/dynamic_sampling_rate.rb
389
391
  - lib/datadog/profiling/collectors/idle_sampling_helper.rb
392
+ - lib/datadog/profiling/collectors/info.rb
390
393
  - lib/datadog/profiling/collectors/stack.rb
391
394
  - lib/datadog/profiling/collectors/thread_context.rb
392
395
  - lib/datadog/profiling/component.rb
393
- - lib/datadog/profiling/diagnostics/environment_logger.rb
394
396
  - lib/datadog/profiling/exporter.rb
395
397
  - lib/datadog/profiling/ext.rb
396
398
  - lib/datadog/profiling/ext/forking.rb
@@ -517,6 +519,7 @@ files:
517
519
  - lib/datadog/tracing/contrib/aws/service/sqs.rb
518
520
  - lib/datadog/tracing/contrib/aws/service/states.rb
519
521
  - lib/datadog/tracing/contrib/aws/services.rb
522
+ - lib/datadog/tracing/contrib/concurrent_ruby/async_patch.rb
520
523
  - lib/datadog/tracing/contrib/concurrent_ruby/configuration/settings.rb
521
524
  - lib/datadog/tracing/contrib/concurrent_ruby/context_composite_executor_service.rb
522
525
  - lib/datadog/tracing/contrib/concurrent_ruby/ext.rb
@@ -886,7 +889,7 @@ licenses:
886
889
  metadata:
887
890
  allowed_push_host: https://rubygems.org
888
891
  changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/master/CHANGELOG.md
889
- post_install_message:
892
+ post_install_message:
890
893
  rdoc_options: []
891
894
  require_paths:
892
895
  - lib
@@ -904,8 +907,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
904
907
  - !ruby/object:Gem::Version
905
908
  version: 2.0.0
906
909
  requirements: []
907
- rubygems_version: 3.4.21
908
- signing_key:
910
+ rubygems_version: 3.4.10
911
+ signing_key:
909
912
  specification_version: 4
910
913
  summary: Datadog tracing code for your Ruby applications
911
914
  test_files: []
@@ -1,57 +0,0 @@
1
- /*
2
- * Copyright 2023 Datadog, Inc
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
-
17
- // Originally imported from https://github.com/DataDog/java-profiler/blob/11fe6206c31a14c6e5134e8401eaec8b22c618d7/ddprof-lib/src/main/cpp/pidController.cpp
18
-
19
- #include "pid_controller.h"
20
-
21
- #include <math.h>
22
-
23
- inline static double computeAlpha(float cutoff) {
24
- if (cutoff <= 0)
25
- return 1;
26
- // α(fₙ) = cos(2πfₙ) - 1 + √( cos(2πfₙ)² - 4 cos(2πfₙ) + 3 )
27
- const double c = cos(2 * ((double) M_PI) * cutoff);
28
- return c - 1 + sqrt(c * c - 4 * c + 3);
29
- }
30
-
31
- void pid_controller_init(pid_controller *controller, u64 target_per_second, double proportional_gain, double integral_gain, double derivative_gain, int sampling_window, double cutoff_secs) {
32
- controller->_target = target_per_second * sampling_window;
33
- controller->_proportional_gain = proportional_gain;
34
- controller->_integral_gain = integral_gain * sampling_window;
35
- controller->_derivative_gain = derivative_gain / sampling_window;
36
- controller->_alpha = computeAlpha(sampling_window / cutoff_secs);
37
- controller->_avg_error= 0;
38
- controller->_integral_value = 0;
39
- }
40
-
41
- double pid_controller_compute(pid_controller *controller, u64 input, double time_delta_coefficient) {
42
- // time_delta_coefficient allows variable sampling window
43
- // the values are linearly scaled using that coefficient to reinterpret the given value within the expected sampling window
44
- double absolute_error = (((double) controller->_target) - ((double) input)) * time_delta_coefficient;
45
-
46
- double avg_error = (controller->_alpha * absolute_error) + ((1 - controller->_alpha) * controller->_avg_error);
47
- double derivative = avg_error - controller->_avg_error;
48
-
49
- // PID formula:
50
- // u[k] = Kp e[k] + Ki e_i[k] + Kd e_d[k], control signal
51
- double signal = controller->_proportional_gain * absolute_error + controller->_integral_gain * controller->_integral_value + controller->_derivative_gain * derivative;
52
-
53
- controller->_integral_value += absolute_error;
54
- controller->_avg_error = avg_error;
55
-
56
- return signal;
57
- }
@@ -1,45 +0,0 @@
1
- /*
2
- * Copyright 2023 Datadog, Inc
3
- *
4
- * Licensed under the Apache License, Version 2.0 (the "License");
5
- * you may not use this file except in compliance with the License.
6
- * You may obtain a copy of the License at
7
- *
8
- * http://www.apache.org/licenses/LICENSE-2.0
9
- *
10
- * Unless required by applicable law or agreed to in writing, software
11
- * distributed under the License is distributed on an "AS IS" BASIS,
12
- * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
13
- * See the License for the specific language governing permissions and
14
- * limitations under the License.
15
- */
16
-
17
- // Originally imported from https://github.com/DataDog/java-profiler/blob/11fe6206c31a14c6e5134e8401eaec8b22c618d7/ddprof-lib/src/main/cpp/pidController.h
18
-
19
- #ifndef _PIDCONTROLLER_H
20
- #define _PIDCONTROLLER_H
21
-
22
- // From arch.h in java-profiler
23
- typedef unsigned long long u64;
24
-
25
- /*
26
- * A simple implementation of a PID controller.
27
- * Heavily influenced by https://tttapa.github.io/Pages/Arduino/Control-Theory/Motor-Fader/PID-Cpp-Implementation.html
28
- */
29
-
30
- typedef struct {
31
- u64 _target;
32
- double _proportional_gain;
33
- double _derivative_gain;
34
- double _integral_gain;
35
- double _alpha;
36
-
37
- double _avg_error;
38
- long long _integral_value;
39
- } pid_controller;
40
-
41
- void pid_controller_init(pid_controller *controller, u64 target_per_second, double proportional_gain, double integral_gain, double derivative_gain, int sampling_window, double cutoff_secs);
42
-
43
- double pid_controller_compute(pid_controller *controller, u64 input, double time_delta_seconds);
44
-
45
- #endif
@@ -1,39 +0,0 @@
1
- # frozen_string_literal: true
2
-
3
- require 'date'
4
- require 'json'
5
- require 'rbconfig'
6
- require_relative '../../core/diagnostics/environment_logger'
7
-
8
- module Datadog
9
- module Profiling
10
- module Diagnostics
11
- # Collects and logs Profiling diagnostic information
12
- module EnvironmentLogger
13
- extend Core::Diagnostics::EnvironmentLogging
14
-
15
- def self.collect_and_log!
16
- log_once! do
17
- data = EnvironmentCollector.collect_config!
18
- log_configuration!('PROFILING', data.to_json)
19
- end
20
- rescue => e
21
- logger.warn("Failed to collect profiling environment information: #{e} Location: #{Array(e.backtrace).first}")
22
- end
23
- end
24
-
25
- # Collects environment information for Profiling diagnostic logging
26
- module EnvironmentCollector
27
- def self.collect_config!(*args)
28
- {
29
- profiling_enabled: profiling_enabled
30
- }
31
- end
32
-
33
- def self.profiling_enabled
34
- !!Datadog.configuration.profiling.enabled
35
- end
36
- end
37
- end
38
- end
39
- end