datadog 2.16.0 → 2.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 (95) hide show
  1. checksums.yaml +4 -4
  2. data/CHANGELOG.md +29 -1
  3. data/ext/datadog_profiling_native_extension/encoded_profile.c +22 -12
  4. data/ext/datadog_profiling_native_extension/encoded_profile.h +1 -0
  5. data/ext/datadog_profiling_native_extension/http_transport.c +45 -72
  6. data/ext/datadog_profiling_native_extension/stack_recorder.c +4 -5
  7. data/ext/libdatadog_api/crashtracker.c +10 -3
  8. data/ext/libdatadog_api/macos_development.md +3 -3
  9. data/ext/libdatadog_extconf_helpers.rb +1 -1
  10. data/lib/datadog/appsec/api_security/lru_cache.rb +49 -0
  11. data/lib/datadog/appsec/api_security.rb +9 -0
  12. data/lib/datadog/core/buffer/random.rb +18 -2
  13. data/lib/datadog/core/configuration/agent_settings_resolver.rb +5 -5
  14. data/lib/datadog/core/configuration/components.rb +29 -20
  15. data/lib/datadog/core/configuration/components_state.rb +23 -0
  16. data/lib/datadog/core/configuration/option.rb +18 -18
  17. data/lib/datadog/core/configuration/option_definition.rb +4 -4
  18. data/lib/datadog/core/configuration/options.rb +1 -1
  19. data/lib/datadog/core/configuration/settings.rb +10 -10
  20. data/lib/datadog/core/configuration.rb +16 -16
  21. data/lib/datadog/core/crashtracking/component.rb +2 -1
  22. data/lib/datadog/core/encoding.rb +1 -1
  23. data/lib/datadog/core/environment/cgroup.rb +10 -12
  24. data/lib/datadog/core/environment/container.rb +38 -40
  25. data/lib/datadog/core/environment/ext.rb +6 -6
  26. data/lib/datadog/core/environment/identity.rb +3 -3
  27. data/lib/datadog/core/environment/platform.rb +3 -3
  28. data/lib/datadog/core/error.rb +11 -9
  29. data/lib/datadog/core/logger.rb +2 -2
  30. data/lib/datadog/core/metrics/client.rb +12 -14
  31. data/lib/datadog/core/metrics/logging.rb +5 -5
  32. data/lib/datadog/core/rate_limiter.rb +4 -2
  33. data/lib/datadog/core/remote/client.rb +32 -31
  34. data/lib/datadog/core/remote/component.rb +3 -3
  35. data/lib/datadog/core/remote/configuration/digest.rb +7 -7
  36. data/lib/datadog/core/remote/configuration/path.rb +1 -1
  37. data/lib/datadog/core/remote/transport/http/client.rb +1 -1
  38. data/lib/datadog/core/remote/transport/http/config.rb +21 -5
  39. data/lib/datadog/core/remote/transport/http/negotiation.rb +1 -1
  40. data/lib/datadog/core/runtime/metrics.rb +3 -3
  41. data/lib/datadog/core/telemetry/component.rb +39 -24
  42. data/lib/datadog/core/telemetry/emitter.rb +7 -1
  43. data/lib/datadog/core/telemetry/event/app_client_configuration_change.rb +65 -0
  44. data/lib/datadog/core/telemetry/event/app_closing.rb +18 -0
  45. data/lib/datadog/core/telemetry/event/app_dependencies_loaded.rb +33 -0
  46. data/lib/datadog/core/telemetry/event/app_heartbeat.rb +18 -0
  47. data/lib/datadog/core/telemetry/event/app_integrations_change.rb +58 -0
  48. data/lib/datadog/core/telemetry/event/app_started.rb +179 -0
  49. data/lib/datadog/core/telemetry/event/base.rb +40 -0
  50. data/lib/datadog/core/telemetry/event/distributions.rb +18 -0
  51. data/lib/datadog/core/telemetry/event/generate_metrics.rb +43 -0
  52. data/lib/datadog/core/telemetry/event/log.rb +76 -0
  53. data/lib/datadog/core/telemetry/event/message_batch.rb +42 -0
  54. data/lib/datadog/core/telemetry/event/synth_app_client_configuration_change.rb +43 -0
  55. data/lib/datadog/core/telemetry/event.rb +17 -475
  56. data/lib/datadog/core/telemetry/logger.rb +1 -1
  57. data/lib/datadog/core/telemetry/metric.rb +3 -3
  58. data/lib/datadog/core/telemetry/transport/http/telemetry.rb +2 -2
  59. data/lib/datadog/core/telemetry/transport/telemetry.rb +0 -1
  60. data/lib/datadog/core/telemetry/worker.rb +48 -27
  61. data/lib/datadog/core/transport/http/adapters/test.rb +2 -1
  62. data/lib/datadog/core/transport/http/builder.rb +13 -13
  63. data/lib/datadog/core/utils/at_fork_monkey_patch.rb +6 -6
  64. data/lib/datadog/core/utils/duration.rb +32 -32
  65. data/lib/datadog/core/utils/forking.rb +2 -2
  66. data/lib/datadog/core/utils/network.rb +6 -6
  67. data/lib/datadog/core/utils/only_once_successful.rb +16 -5
  68. data/lib/datadog/core/utils/time.rb +10 -2
  69. data/lib/datadog/core/utils/truncation.rb +21 -0
  70. data/lib/datadog/core/vendor/multipart-post/multipart/post/composite_read_io.rb +1 -1
  71. data/lib/datadog/core/vendor/multipart-post/multipart/post/multipartable.rb +8 -8
  72. data/lib/datadog/core/vendor/multipart-post/multipart/post/parts.rb +7 -7
  73. data/lib/datadog/core/worker.rb +1 -1
  74. data/lib/datadog/core/workers/async.rb +9 -10
  75. data/lib/datadog/error_tracking/component.rb +2 -2
  76. data/lib/datadog/profiling/collectors/code_provenance.rb +1 -1
  77. data/lib/datadog/profiling/ext.rb +0 -1
  78. data/lib/datadog/profiling/flush.rb +1 -1
  79. data/lib/datadog/profiling/http_transport.rb +1 -6
  80. data/lib/datadog/profiling/scheduler.rb +8 -1
  81. data/lib/datadog/profiling/tag_builder.rb +1 -5
  82. data/lib/datadog/tracing/contrib/active_support/cache/events/cache.rb +4 -1
  83. data/lib/datadog/tracing/contrib/active_support/cache/instrumentation.rb +33 -0
  84. data/lib/datadog/tracing/contrib/active_support/cache/patcher.rb +4 -0
  85. data/lib/datadog/tracing/contrib/active_support/cache/redis.rb +2 -4
  86. data/lib/datadog/tracing/contrib/aws/instrumentation.rb +10 -0
  87. data/lib/datadog/tracing/contrib/aws/parsed_context.rb +5 -1
  88. data/lib/datadog/tracing/contrib/http/instrumentation.rb +1 -5
  89. data/lib/datadog/tracing/contrib/httpclient/instrumentation.rb +1 -5
  90. data/lib/datadog/tracing/contrib/httprb/instrumentation.rb +1 -5
  91. data/lib/datadog/tracing/contrib/patcher.rb +5 -2
  92. data/lib/datadog/tracing/contrib/support.rb +28 -0
  93. data/lib/datadog/tracing/metadata/errors.rb +4 -4
  94. data/lib/datadog/version.rb +1 -1
  95. metadata +23 -6
@@ -19,12 +19,9 @@ module Datadog
19
19
  host: Core::Environment::Socket.hostname,
20
20
  language: Core::Environment::Identity.lang,
21
21
  pid: Process.pid.to_s,
22
- # TODO: If profiling is extracted and its version diverges from the datadog gem, this is inaccurate.
23
- # Update if this ever occurs.
24
22
  profiler_version: Core::Environment::Identity.gem_datadog_version,
25
23
  runtime_engine: Core::Environment::Identity.lang_engine,
26
24
  runtime_id: Core::Environment::Identity.id,
27
- runtime_platform: Core::Environment::Identity.lang_platform,
28
25
  runtime_version: Core::Environment::Identity.lang_version,
29
26
  git_repository_url: Core::Environment::Git.git_repository_url,
30
27
  git_commit_sha: Core::Environment::Git.git_commit_sha,
@@ -41,7 +38,6 @@ module Datadog
41
38
  FORM_FIELD_TAG_RUNTIME => language, # This is known to be repeated from language, above
42
39
  FORM_FIELD_TAG_RUNTIME_ENGINE => runtime_engine,
43
40
  FORM_FIELD_TAG_RUNTIME_ID => runtime_id,
44
- FORM_FIELD_TAG_RUNTIME_PLATFORM => runtime_platform,
45
41
  FORM_FIELD_TAG_RUNTIME_VERSION => runtime_version,
46
42
  }
47
43
  tags[FORM_FIELD_TAG_ENV] = env if env
@@ -50,7 +46,7 @@ module Datadog
50
46
  tags[TAG_GIT_REPOSITORY_URL] = git_repository_url if git_repository_url
51
47
  tags[TAG_GIT_COMMIT_SHA] = git_commit_sha if git_commit_sha
52
48
 
53
- # Make sure everything is an utf-8 string, to avoid encoding issues in native code/libddprof/further downstream
49
+ # Make sure everything is an utf-8 string, to avoid encoding issues in native code/further downstream
54
50
  user_tags.merge(tags).map do |key, value|
55
51
  [Datadog::Core::Utils.utf8_encode(key), Datadog::Core::Utils.utf8_encode(value)]
56
52
  end.to_h
@@ -62,7 +62,10 @@ module Datadog
62
62
  end
63
63
 
64
64
  def on_start(span, event, _id, payload)
65
- key = payload[:key]
65
+ # Since Rails 8, `dd_original_keys` contains the denormalized key provided by the user.
66
+ # In previous versions, the denormalized key is stored in the official `key` attribute.
67
+ # We fall back to `key`, even in Rails 8, as a defensive measure.
68
+ key = payload[:dd_original_keys] || payload[:key]
66
69
  store = payload[:store]
67
70
 
68
71
  mapping = MAPPING.fetch(event)
@@ -184,6 +184,39 @@ module Datadog
184
184
  super(operation, key, polyfill_options)
185
185
  end
186
186
  end
187
+
188
+ # Save the original, user-supplied cache key, before it gets normalized.
189
+ #
190
+ # Normalized keys can include internal implementation detail,
191
+ # for example FileStore keys include temp directory names, which
192
+ # changes on every run, making it impossible to group by the cache key afterward.
193
+ # Also, the user is never exposed to the normalized key, and only sets/gets using the
194
+ # original key.
195
+ module PreserveOriginalKey
196
+ # Stores the original keys in the options hash, as an array of keys.
197
+ # It's important to keep all the keys for multi-key operations.
198
+ # For single-key operations, the key is stored as an array of a single element.
199
+ def normalize_key(key, options)
200
+ orig_keys = options[:dd_original_keys] || []
201
+ orig_keys << key
202
+ options[:dd_original_keys] = orig_keys
203
+
204
+ super
205
+ end
206
+
207
+ # Ensure we don't pollute the default Store instance `options` in {PreserveOriginalKey#normalize_key}.
208
+ # In most cases, `merged_options` returns a new hash,
209
+ # but we check for cases where it reuses the instance hash.
210
+ def merged_options(call_options)
211
+ ret = super
212
+
213
+ if ret.equal?(options)
214
+ ret.dup
215
+ else
216
+ ret
217
+ end
218
+ end
219
+ end
187
220
  end
188
221
  end
189
222
  end
@@ -22,6 +22,10 @@ module Datadog
22
22
  def patch
23
23
  Events.subscribe!
24
24
 
25
+ if Integration.version >= Gem::Version.new('8.0.0')
26
+ ::ActiveSupport::Cache::Store.prepend(Cache::Instrumentation::PreserveOriginalKey)
27
+ end
28
+
25
29
  # Backfill the `:store` key in the ActiveSupport event payload for older Rails.
26
30
  if Integration.version < Gem::Version.new('6.1.0')
27
31
  ::ActiveSupport::Cache::Store.prepend(Cache::Instrumentation::Store)
@@ -1,5 +1,6 @@
1
1
  # frozen_string_literal: true
2
2
 
3
+ require_relative '../../support'
3
4
  require_relative 'patcher'
4
5
 
5
6
  module Datadog
@@ -34,10 +35,7 @@ module Datadog
34
35
  # @see https://github.com/rails/rails/blob/d0dcb8fa6073a0c4d42600c15e82e3bb386b27d3/activesupport/lib/active_support/cache/redis_cache_store.rb#L4
35
36
  def patch_redis_cache_store?(meth)
36
37
  Gem.loaded_specs['redis'] &&
37
- # Autoload constants return `constant` for `defined?`, but that doesn't mean they are loaded...
38
- defined?(::ActiveSupport::Cache::RedisCacheStore) &&
39
- # ... to check that we need to call `autoload?` and check if it returns `nil`, meaning it's loaded.
40
- ::ActiveSupport::Cache.autoload?(:RedisCacheStore).nil? &&
38
+ Support.fully_loaded?(::ActiveSupport::Cache, :RedisCacheStore) &&
41
39
  ::ActiveSupport::Cache::RedisCacheStore.instance_methods(false).include?(meth)
42
40
  end
43
41
 
@@ -35,6 +35,16 @@ module Datadog
35
35
  span.type = Tracing::Metadata::Ext::HTTP::TYPE_OUTBOUND
36
36
  span.name = Ext::SPAN_COMMAND
37
37
  span.resource = context.safely(:resource)
38
+
39
+ # Set error on the span if the Response Status Code is in error range
40
+ if Tracing::Metadata::Ext::HTTP::ERROR_RANGE.cover?(context.safely(:status_code))
41
+ # At this point we do not have any additional diagnostics
42
+ # besides the HTTP status code which is recorded in the span tags
43
+ # later in this method.
44
+ # Just set the span as errored.
45
+ span.set_error(nil)
46
+ end
47
+
38
48
  aws_service = span.resource.split('.')[0]
39
49
  span.set_tag(Ext::TAG_AWS_SERVICE, aws_service)
40
50
  params = context.safely(:params)
@@ -26,8 +26,12 @@ module Datadog
26
26
  context.params
27
27
  end
28
28
 
29
+ def http_response
30
+ context.http_response
31
+ end
32
+
29
33
  def status_code
30
- context.http_response.status_code
34
+ http_response.status_code
31
35
  end
32
36
 
33
37
  def http_method
@@ -30,7 +30,7 @@ module Datadog
30
30
 
31
31
  return super(req, body, &block) if Contrib::HTTP.should_skip_tracing?(req)
32
32
 
33
- Tracing.trace(Ext::SPAN_REQUEST, on_error: method(:annotate_span_with_error!)) do |span, trace|
33
+ Tracing.trace(Ext::SPAN_REQUEST) do |span, trace|
34
34
  span.service = service_name(host, request_options, client_config)
35
35
  span.type = Tracing::Metadata::Ext::HTTP::TYPE_OUTBOUND
36
36
  span.resource = req.method
@@ -112,10 +112,6 @@ module Datadog
112
112
  Datadog::Core::Telemetry::Logger.report(e)
113
113
  end
114
114
 
115
- def annotate_span_with_error!(span, error)
116
- span.set_error(error)
117
- end
118
-
119
115
  def set_analytics_sample_rate(span, request_options)
120
116
  return unless analytics_enabled?(request_options)
121
117
 
@@ -25,7 +25,7 @@ module Datadog
25
25
  request_options = datadog_configuration(host)
26
26
  client_config = Datadog.configuration_for(self)
27
27
 
28
- Tracing.trace(Ext::SPAN_REQUEST, on_error: method(:annotate_span_with_error!)) do |span, trace|
28
+ Tracing.trace(Ext::SPAN_REQUEST) do |span, trace|
29
29
  begin
30
30
  span.service = service_name(host, request_options, client_config)
31
31
  span.type = Tracing::Metadata::Ext::HTTP::TYPE_OUTBOUND
@@ -111,10 +111,6 @@ module Datadog
111
111
  Datadog::Core::Telemetry::Logger.report(e)
112
112
  end
113
113
 
114
- def annotate_span_with_error!(span, error)
115
- span.set_error(error)
116
- end
117
-
118
114
  def datadog_configuration(host = :default)
119
115
  Datadog.configuration.tracing[:httpclient, host]
120
116
  end
@@ -25,7 +25,7 @@ module Datadog
25
25
  request_options = datadog_configuration(host)
26
26
  client_config = Datadog.configuration_for(self)
27
27
 
28
- Tracing.trace(Ext::SPAN_REQUEST, on_error: method(:annotate_span_with_error!)) do |span, trace|
28
+ Tracing.trace(Ext::SPAN_REQUEST) do |span, trace|
29
29
  begin
30
30
  span.service = service_name(host, request_options, client_config)
31
31
  span.type = Tracing::Metadata::Ext::HTTP::TYPE_OUTBOUND
@@ -121,10 +121,6 @@ module Datadog
121
121
  Datadog::Core::Telemetry::Logger.report(e)
122
122
  end
123
123
 
124
- def annotate_span_with_error!(span, error)
125
- span.set_error(error)
126
- end
127
-
128
124
  def datadog_configuration(host = :default)
129
125
  Datadog.configuration.tracing[:httprb, host]
130
126
  end
@@ -20,8 +20,11 @@ module Datadog
20
20
  # @public_api
21
21
  module CommonMethods
22
22
  attr_accessor \
23
- :patch_error_result,
24
- :patch_successful
23
+ :patch_error_result
24
+
25
+ def patch_successful
26
+ !!@patch_successful
27
+ end
25
28
 
26
29
  def patch_name
27
30
  self.class != Class && self.class != Module ? self.class.name : name
@@ -0,0 +1,28 @@
1
+ # frozen_string_literal: true
2
+
3
+ module Datadog
4
+ module Tracing
5
+ module Contrib
6
+ # Miscellaneous support methods to aid in the creation of integrations.
7
+ module Support
8
+ module_function
9
+
10
+ # Checks if a constant is loaded in a module, handling autoloaded constants correctly.
11
+ #
12
+ # This method is particularly useful when you need to check if a constant is fully loaded,
13
+ # not just defined. It handles the special case of autoloaded constants, which return
14
+ # non-nil for `defined?` even when they haven't been loaded yet.
15
+ #
16
+ # @param base_module [Module] the module to check for the constant
17
+ # @param constant [Symbol] the name of the constant to check
18
+ # @return [Boolean] true if the constant has been loaded, false otherwise
19
+ def fully_loaded?(base_module, constant)
20
+ # Autoload constants return `constant` for `defined?`, but that doesn't mean they are loaded...
21
+ base_module.const_defined?(constant) &&
22
+ # ... to check that we need to call `autoload?`. If it returns `nil`, it's loaded.
23
+ base_module.autoload?(constant).nil?
24
+ end
25
+ end
26
+ end
27
+ end
28
+ end
@@ -10,17 +10,17 @@ module Datadog
10
10
  # Adds error tagging behavior
11
11
  # @public_api
12
12
  module Errors
13
- def set_error(e)
13
+ def set_error(error)
14
14
  Datadog::Core.log_deprecation do
15
15
  'Errors.set_error(..) is deprecated. ' \
16
16
  'Use Errors.set_error_tags(..) instead.'
17
17
  end
18
- set_error_tags(e)
18
+ set_error_tags(error)
19
19
  end
20
20
 
21
21
  # Mark the span with the given error.
22
- def set_error_tags(e)
23
- e = Core::Error.build_from(e)
22
+ def set_error_tags(error)
23
+ e = Core::Error.build_from(error)
24
24
 
25
25
  set_tag(Ext::Errors::TAG_TYPE, e.type) unless e.type.empty?
26
26
  set_tag(Ext::Errors::TAG_MSG, e.message) unless e.message.empty?
@@ -3,7 +3,7 @@
3
3
  module Datadog
4
4
  module VERSION
5
5
  MAJOR = 2
6
- MINOR = 16
6
+ MINOR = 17
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: datadog
3
3
  version: !ruby/object:Gem::Version
4
- version: 2.16.0
4
+ version: 2.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Datadog, Inc.
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2025-05-19 00:00:00.000000000 Z
11
+ date: 2025-06-02 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
@@ -64,14 +64,14 @@ dependencies:
64
64
  requirements:
65
65
  - - "~>"
66
66
  - !ruby/object:Gem::Version
67
- version: 16.0.1.1.0
67
+ version: 18.1.0.1.0
68
68
  type: :runtime
69
69
  prerelease: false
70
70
  version_requirements: !ruby/object:Gem::Requirement
71
71
  requirements:
72
72
  - - "~>"
73
73
  - !ruby/object:Gem::Version
74
- version: 16.0.1.1.0
74
+ version: 18.1.0.1.0
75
75
  - !ruby/object:Gem::Dependency
76
76
  name: logger
77
77
  requirement: !ruby/object:Gem::Requirement
@@ -168,6 +168,8 @@ files:
168
168
  - lib/datadog/appsec/actions_handler.rb
169
169
  - lib/datadog/appsec/actions_handler/serializable_backtrace.rb
170
170
  - lib/datadog/appsec/anonymizer.rb
171
+ - lib/datadog/appsec/api_security.rb
172
+ - lib/datadog/appsec/api_security/lru_cache.rb
171
173
  - lib/datadog/appsec/assets.rb
172
174
  - lib/datadog/appsec/assets/blocked.html
173
175
  - lib/datadog/appsec/assets/blocked.json
@@ -276,6 +278,7 @@ files:
276
278
  - lib/datadog/core/configuration/agentless_settings_resolver.rb
277
279
  - lib/datadog/core/configuration/base.rb
278
280
  - lib/datadog/core/configuration/components.rb
281
+ - lib/datadog/core/configuration/components_state.rb
279
282
  - lib/datadog/core/configuration/ext.rb
280
283
  - lib/datadog/core/configuration/option.rb
281
284
  - lib/datadog/core/configuration/option_definition.rb
@@ -348,6 +351,18 @@ files:
348
351
  - lib/datadog/core/telemetry/component.rb
349
352
  - lib/datadog/core/telemetry/emitter.rb
350
353
  - lib/datadog/core/telemetry/event.rb
354
+ - lib/datadog/core/telemetry/event/app_client_configuration_change.rb
355
+ - lib/datadog/core/telemetry/event/app_closing.rb
356
+ - lib/datadog/core/telemetry/event/app_dependencies_loaded.rb
357
+ - lib/datadog/core/telemetry/event/app_heartbeat.rb
358
+ - lib/datadog/core/telemetry/event/app_integrations_change.rb
359
+ - lib/datadog/core/telemetry/event/app_started.rb
360
+ - lib/datadog/core/telemetry/event/base.rb
361
+ - lib/datadog/core/telemetry/event/distributions.rb
362
+ - lib/datadog/core/telemetry/event/generate_metrics.rb
363
+ - lib/datadog/core/telemetry/event/log.rb
364
+ - lib/datadog/core/telemetry/event/message_batch.rb
365
+ - lib/datadog/core/telemetry/event/synth_app_client_configuration_change.rb
351
366
  - lib/datadog/core/telemetry/ext.rb
352
367
  - lib/datadog/core/telemetry/http/adapters/net.rb
353
368
  - lib/datadog/core/telemetry/logger.rb
@@ -391,6 +406,7 @@ files:
391
406
  - lib/datadog/core/utils/safe_dup.rb
392
407
  - lib/datadog/core/utils/sequence.rb
393
408
  - lib/datadog/core/utils/time.rb
409
+ - lib/datadog/core/utils/truncation.rb
394
410
  - lib/datadog/core/utils/url.rb
395
411
  - lib/datadog/core/vendor/multipart-post/LICENSE
396
412
  - lib/datadog/core/vendor/multipart-post/multipart.rb
@@ -889,6 +905,7 @@ files:
889
905
  - lib/datadog/tracing/contrib/sucker_punch/instrumentation.rb
890
906
  - lib/datadog/tracing/contrib/sucker_punch/integration.rb
891
907
  - lib/datadog/tracing/contrib/sucker_punch/patcher.rb
908
+ - lib/datadog/tracing/contrib/support.rb
892
909
  - lib/datadog/tracing/contrib/trilogy/configuration/settings.rb
893
910
  - lib/datadog/tracing/contrib/trilogy/ext.rb
894
911
  - lib/datadog/tracing/contrib/trilogy/instrumentation.rb
@@ -974,8 +991,8 @@ licenses:
974
991
  - Apache-2.0
975
992
  metadata:
976
993
  allowed_push_host: https://rubygems.org
977
- changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.16.0/CHANGELOG.md
978
- source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.16.0
994
+ changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/v2.17.0/CHANGELOG.md
995
+ source_code_uri: https://github.com/DataDog/dd-trace-rb/tree/v2.17.0
979
996
  post_install_message:
980
997
  rdoc_options: []
981
998
  require_paths: