ddtrace 1.21.0 → 1.21.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 223ae0480854efa00a669acefedd34748a08bec69b0a10fdfa3d49112d30ea13
4
- data.tar.gz: e6013cf6647797fbefd898c11760a13140fd1427ec069ce3a797f3367ebc8f4b
3
+ metadata.gz: 88e2b5d32d76e7c167d43a9868aed0903f8b82936bd0faf8eb10e02ae83d5928
4
+ data.tar.gz: 65927b5d7037a853debb4da6cd71dda3dec0dd6b765bd90230ac3fa2904655f4
5
5
  SHA512:
6
- metadata.gz: f868c1ce84455bd994da7b662ce29686238a40d2a31c5828fe21ba33bae4d9756b7e54e2e4a69028f299ad7c2cdd3f49485d690135c9213db83a94d0d044fae1
7
- data.tar.gz: 8cee7869c4f9fe4bb5c07a000d11741199e65b02a8c31bbbe9e1d7f94cb5e46d68adfd43449ebe3645f0ff127094620234eafd1cb84d2bdbfb1534738faaf6aa
6
+ metadata.gz: c467f5c384aeae1fe813df7a2b081e36c665f7a5f550322b9fbfafc402ad70d1d81ba578094bf4064a9d1c8a97f94be8b998ae2d2218c18e0bfaba97b754d5ea
7
+ data.tar.gz: 8510f7f8afa6a89591bb128389ab210e2d6f3049c23a2d2ef3f58c4f0c042abe5cc865b6b5efe5198f116a6c98cea34cbf6e257078477744aa66db66aa3e6f1f
data/CHANGELOG.md CHANGED
@@ -2,6 +2,18 @@
2
2
 
3
3
  ## [Unreleased]
4
4
 
5
+ ## [1.21.1] - 2024-03-20
6
+
7
+ ### Added
8
+
9
+ * Backports auto instrument shim with `datadog/auto_instrument` ([#3535][])
10
+
11
+ ### Fixed
12
+
13
+ * Fix ActiveRecord resolving invalid string ([#3523][])
14
+ * Revert `http.route` tagging to fix instrumentation failure for Rails 7.1 apps ([#3539][])
15
+ * Fix wrong permissions on released gem files ([#3531][])
16
+
5
17
  ## [1.21.0] - 2024-03-14
6
18
 
7
19
  ### Highlights
@@ -2764,7 +2776,8 @@ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.3.1
2764
2776
  Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
2765
2777
 
2766
2778
 
2767
- [Unreleased]: https://github.com/DataDog/dd-trace-rb/compare/v1.21.0...master
2779
+ [Unreleased]: https://github.com/DataDog/dd-trace-rb/compare/v1.21.1...master
2780
+ [1.21.1]: https://github.com/DataDog/dd-trace-rb/compare/v1.21.0...v1.21.1
2768
2781
  [1.21.0]: https://github.com/DataDog/dd-trace-rb/compare/v1.20.0...v1.21.0
2769
2782
  [1.20.0]: https://github.com/DataDog/dd-trace-rb/compare/v1.19.0...v1.20.0
2770
2783
  [1.19.0]: https://github.com/DataDog/dd-trace-rb/compare/v1.18.0...v1.19.0
@@ -4056,6 +4069,10 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
4056
4069
  [#3518]: https://github.com/DataDog/dd-trace-rb/issues/3518
4057
4070
  [#3519]: https://github.com/DataDog/dd-trace-rb/issues/3519
4058
4071
  [#3520]: https://github.com/DataDog/dd-trace-rb/issues/3520
4072
+ [#3523]: https://github.com/DataDog/dd-trace-rb/issues/3523
4073
+ [#3531]: https://github.com/DataDog/dd-trace-rb/issues/3531
4074
+ [#3535]: https://github.com/DataDog/dd-trace-rb/issues/3535
4075
+ [#3539]: https://github.com/DataDog/dd-trace-rb/issues/3539
4059
4076
  [@AdrianLC]: https://github.com/AdrianLC
4060
4077
  [@Azure7111]: https://github.com/Azure7111
4061
4078
  [@BabyGroot]: https://github.com/BabyGroot
@@ -4207,4 +4224,4 @@ Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
4207
4224
  [@y-yagi]: https://github.com/y-yagi
4208
4225
  [@yujideveloper]: https://github.com/yujideveloper
4209
4226
  [@yukimurasawa]: https://github.com/yukimurasawa
4210
- [@zachmccormick]: https://github.com/zachmccormick
4227
+ [@zachmccormick]: https://github.com/zachmccormick
@@ -0,0 +1,3 @@
1
+ # frozen_string_literal: true
2
+
3
+ require_relative '../ddtrace/auto_instrument'
@@ -37,7 +37,7 @@ module Datadog
37
37
 
38
38
  span.set_tag(Tracing::Metadata::Ext::TAG_OPERATION, Ext::TAG_OPERATION_DELIVER)
39
39
 
40
- # Since email date can contain PII we disable by default
40
+ # Since email data can contain PII we disable by default
41
41
  # Some of these fields can be either strings or arrays, so we try to normalize
42
42
  # https://github.com/rails/rails/blob/18707ab17fa492eb25ad2e8f9818a320dc20b823/actionmailer/lib/action_mailer/base.rb#L742-L754
43
43
  if configuration[:email_data] == true
@@ -65,9 +65,14 @@ module Datadog
65
65
 
66
66
  config
67
67
  rescue => e
68
+ # Resolving a valid database configuration should not raise an exception,
69
+ # but if it does, it can be due to adding a broken pattern match prior to this call.
70
+ #
71
+ # `db_config` input may contain sensitive information such as passwords,
72
+ # hence provide a succinct summary for the error logging.
68
73
  Datadog.logger.error(
69
- "Failed to resolve ActiveRecord configuration key #{db_config.inspect}. " \
70
- "Cause: #{e.class.name} #{e.message} Source: #{Array(e.backtrace).first}"
74
+ 'Failed to resolve ActiveRecord database configuration. '\
75
+ "Cause: #{e.class.name} Source: #{Array(e.backtrace).first}"
71
76
  )
72
77
 
73
78
  nil
@@ -85,9 +90,11 @@ module Datadog
85
90
  normalized
86
91
  rescue => e
87
92
  Datadog.logger.error(
88
- "Failed to resolve ActiveRecord configuration key #{matcher.inspect}. " \
89
- "Cause: #{e.class.name} #{e.message} Source: #{Array(e.backtrace).first}"
93
+ "Failed to resolve key #{matcher.inspect}. " \
94
+ "Cause: #{e.class.name} Source: #{Array(e.backtrace).first}"
90
95
  )
96
+
97
+ nil
91
98
  end
92
99
 
93
100
  #
@@ -50,7 +50,7 @@ module Datadog
50
50
  end
51
51
 
52
52
  # Apply the settings
53
- config.configure(options, &block)
53
+ config.configure(options, &block) if config
54
54
  config
55
55
  end
56
56
 
@@ -94,8 +94,6 @@ module Datadog
94
94
 
95
95
  span.set_error(payload[:exception_object]) if exception_is_error?(payload[:exception_object])
96
96
 
97
- integration_route = endpoint.env['grape.routing_args'][:route_info].pattern.origin
98
-
99
97
  # override the current span with this notification values
100
98
  span.set_tag(Ext::TAG_ROUTE_ENDPOINT, api_view) unless api_view.nil?
101
99
  span.set_tag(Ext::TAG_ROUTE_PATH, path)
@@ -103,9 +101,6 @@ module Datadog
103
101
 
104
102
  span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_METHOD, request_method)
105
103
  span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_URL, path)
106
-
107
- trace.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, integration_route)
108
- trace.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE_PATH, endpoint.env['SCRIPT_NAME'])
109
104
  ensure
110
105
  span.start(start)
111
106
  span.finish(finish)
@@ -66,10 +66,6 @@ module Datadog
66
66
  end
67
67
  end
68
68
 
69
- # rubocop:disable Metrics/CyclomaticComplexity
70
- # rubocop:disable Metrics/PerceivedComplexity
71
- # rubocop:disable Metrics/MethodLength
72
- # rubocop:disable Metrics/AbcSize
73
69
  def call(env)
74
70
  # Find out if this is rack within rack
75
71
  previous_request_span = env[Ext::RACK_ENV_REQUEST_SPAN]
@@ -111,30 +107,6 @@ module Datadog
111
107
 
112
108
  # call the rest of the stack
113
109
  status, headers, response = @app.call(env)
114
-
115
- if status != 404 && (last_route = request_trace.get_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE))
116
- last_script_name = request_trace.get_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE_PATH)
117
-
118
- # If the last_script_name is empty but the env['SCRIPT_NAME'] is NOT empty
119
- # then the current rack request was not routed and must be accounted for
120
- # which only happens in pure nested rack requests i.e /rack/rack/hello/world
121
- #
122
- # To account for the unaccounted nested rack requests of /rack/hello/world,
123
- # we use 'PATH_INFO knowing that rack cannot have named parameters
124
- if last_script_name == '' && env['SCRIPT_NAME'] != ''
125
- last_script_name = last_route
126
- last_route = env['PATH_INFO']
127
- end
128
-
129
- # Clear the route and route path tags from the request trace to avoid possibility of misplacement
130
- request_trace.clear_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE)
131
- request_trace.clear_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE_PATH)
132
-
133
- # Ensure tags are placed in rack.request span as desired
134
- request_span.set_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE, last_script_name + last_route)
135
- request_span.clear_tag(Tracing::Metadata::Ext::HTTP::TAG_ROUTE_PATH)
136
- end
137
-
138
110
  [status, headers, response]
139
111
 
140
112
  # rubocop:disable Lint/RescueException
@@ -170,6 +142,10 @@ module Datadog
170
142
  end
171
143
  # rubocop:enable Lint/RescueException
172
144
 
145
+ # rubocop:disable Metrics/AbcSize
146
+ # rubocop:disable Metrics/CyclomaticComplexity
147
+ # rubocop:disable Metrics/PerceivedComplexity
148
+ # rubocop:disable Metrics/MethodLength
173
149
  def set_request_tags!(trace, request_span, env, status, headers, response, original_env)
174
150
  request_header_collection = Header::RequestHeaderCollection.new(env)
175
151
 
@@ -5,24 +5,11 @@ 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'
9
8
 
10
9
  module Datadog
11
10
  module Tracing
12
11
  module Contrib
13
12
  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
-
26
13
  # Patcher enables patching of 'rails' module.
27
14
  module Patcher
28
15
  include Contrib::Patcher
@@ -54,9 +41,6 @@ module Datadog
54
41
  # Sometimes we don't want to activate middleware e.g. OpenTracing, etc.
55
42
  add_middleware(app) if Datadog.configuration.tracing[:rails][:middleware]
56
43
 
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
-
60
44
  Rails::LogInjection.configure_log_tags(app.config)
61
45
  end
62
46
  end
@@ -47,16 +47,16 @@ module Datadog
47
47
  configuration = Datadog.configuration.tracing[:sinatra]
48
48
  return super unless Tracing.enabled?
49
49
 
50
- integration_route = Sinatra::Env.route_path(env)
50
+ datadog_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} #{integration_route}",
56
+ resource: "#{request.request_method} #{datadog_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, integration_route)
59
+ span.set_tag(Ext::TAG_ROUTE_PATH, datadog_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,9 +73,6 @@ 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'])
79
76
  super
80
77
  end
81
78
  end
@@ -86,8 +86,6 @@ 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'
91
89
 
92
90
  # General header functionality
93
91
  module Headers
@@ -4,7 +4,7 @@ module DDTrace
4
4
  module VERSION
5
5
  MAJOR = 1
6
6
  MINOR = 21
7
- PATCH = 0
7
+ PATCH = 1
8
8
  PRE = nil
9
9
  BUILD = nil
10
10
  # PRE and BUILD above are modified for dev gems during gem build GHA workflow
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.21.0
4
+ version: 1.21.1
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-03-14 00:00:00.000000000 Z
11
+ date: 2024-03-20 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: msgpack
@@ -221,6 +221,7 @@ files:
221
221
  - lib/datadog/appsec/utils/http.rb
222
222
  - lib/datadog/appsec/utils/http/media_range.rb
223
223
  - lib/datadog/appsec/utils/http/media_type.rb
224
+ - lib/datadog/auto_instrument.rb
224
225
  - lib/datadog/core.rb
225
226
  - lib/datadog/core/backport.rb
226
227
  - lib/datadog/core/buffer/cruby.rb
@@ -889,7 +890,7 @@ licenses:
889
890
  metadata:
890
891
  allowed_push_host: https://rubygems.org
891
892
  changelog_uri: https://github.com/DataDog/dd-trace-rb/blob/master/CHANGELOG.md
892
- post_install_message:
893
+ post_install_message:
893
894
  rdoc_options: []
894
895
  require_paths:
895
896
  - lib
@@ -907,8 +908,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
907
908
  - !ruby/object:Gem::Version
908
909
  version: 2.0.0
909
910
  requirements: []
910
- rubygems_version: 3.4.10
911
- signing_key:
911
+ rubygems_version: 3.4.21
912
+ signing_key:
912
913
  specification_version: 4
913
914
  summary: Datadog tracing code for your Ruby applications
914
915
  test_files: []