ddtrace 0.17.2 → 0.17.3
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/CHANGELOG.md +16 -2
- data/lib/ddtrace/contrib/grape/endpoint.rb +11 -2
- data/lib/ddtrace/contrib/rails/patcher.rb +12 -8
- data/lib/ddtrace/contrib/rest_client/request_patch.rb +7 -4
- data/lib/ddtrace/patcher.rb +8 -6
- data/lib/ddtrace/version.rb +1 -1
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA1:
|
3
|
+
metadata.gz: da8890d2a4acda28dea666623f0b497fceedea7c
|
4
|
+
data.tar.gz: 4bda7e12410130c575411289d8400ad281099b5d
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f6ef938aedbe689cded02861e70a5a791ddff979c6ae78bc1bfbfb74d095592f17f0125ede4a06f76a2549d18afc9ab43d6fcf9a2ee6da24d4de0b9acdb6e97f
|
7
|
+
data.tar.gz: b41dcf5846930f2edbfd0fd8a5accf52c5d282569a4bc083924d56336d598c246fad8d5d12223ff8417ccec7dfbecaf8bd50dec53f1d4bc4caed9df8a26f7055
|
data/CHANGELOG.md
CHANGED
@@ -4,6 +4,18 @@
|
|
4
4
|
|
5
5
|
## [Unreleased (beta)]
|
6
6
|
|
7
|
+
## [0.17.3] - 2018-11-29
|
8
|
+
|
9
|
+
Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.17.3
|
10
|
+
|
11
|
+
Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.17.2...v0.17.3
|
12
|
+
|
13
|
+
### Fixed
|
14
|
+
|
15
|
+
- Bad resource names for Grape::API objects in Grape 1.2.0 (#639)
|
16
|
+
- RestClient raising NoMethodError when response is `nil` (#636, #642) (@frsantos)
|
17
|
+
- Rack middleware inserted twice in some Rails applications (#641)
|
18
|
+
|
7
19
|
## [0.17.2] - 2018-11-23
|
8
20
|
|
9
21
|
Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.17.2
|
@@ -564,8 +576,10 @@ Release notes: https://github.com/DataDog/dd-trace-rb/releases/tag/v0.3.1
|
|
564
576
|
|
565
577
|
Git diff: https://github.com/DataDog/dd-trace-rb/compare/v0.3.0...v0.3.1
|
566
578
|
|
567
|
-
[Unreleased (stable)]: https://github.com/DataDog/dd-trace-rb/compare/v0.17.
|
568
|
-
[Unreleased (beta)]: https://github.com/DataDog/dd-trace-rb/compare/v0.17.
|
579
|
+
[Unreleased (stable)]: https://github.com/DataDog/dd-trace-rb/compare/v0.17.3...master
|
580
|
+
[Unreleased (beta)]: https://github.com/DataDog/dd-trace-rb/compare/v0.17.3...0.18-dev
|
581
|
+
[0.17.3]: https://github.com/DataDog/dd-trace-rb/compare/v0.17.2...v0.17.3
|
582
|
+
[0.17.2]: https://github.com/DataDog/dd-trace-rb/compare/v0.17.1...v0.17.2
|
569
583
|
[0.17.1]: https://github.com/DataDog/dd-trace-rb/compare/v0.17.0...v0.17.1
|
570
584
|
[0.17.0]: https://github.com/DataDog/dd-trace-rb/compare/v0.16.1...v0.17.0
|
571
585
|
[0.16.1]: https://github.com/DataDog/dd-trace-rb/compare/v0.16.0...v0.16.1
|
@@ -63,7 +63,16 @@ module Datadog
|
|
63
63
|
|
64
64
|
begin
|
65
65
|
# collect endpoint details
|
66
|
-
|
66
|
+
api = payload[:endpoint].options[:for]
|
67
|
+
# If the API inherits from Grape::API in version >= 1.2.0
|
68
|
+
# then the API will be an instance and the name must be derived from the base.
|
69
|
+
# See https://github.com/ruby-grape/grape/issues/1825
|
70
|
+
api_view = if defined?(::Grape::API::Instance) && api <= ::Grape::API::Instance
|
71
|
+
api.base.to_s
|
72
|
+
else
|
73
|
+
api.to_s
|
74
|
+
end
|
75
|
+
|
67
76
|
path = payload[:endpoint].options[:path].join('/')
|
68
77
|
resource = "#{api_view}##{path}"
|
69
78
|
span.resource = resource
|
@@ -78,7 +87,7 @@ module Datadog
|
|
78
87
|
span.set_error(payload[:exception_object]) unless payload[:exception_object].nil?
|
79
88
|
|
80
89
|
# override the current span with this notification values
|
81
|
-
span.set_tag(Ext::TAG_ROUTE_ENDPOINT, api_view)
|
90
|
+
span.set_tag(Ext::TAG_ROUTE_ENDPOINT, api_view) unless api_view.nil?
|
82
91
|
span.set_tag(Ext::TAG_ROUTE_PATH, path)
|
83
92
|
ensure
|
84
93
|
span.start_time = start
|
@@ -32,10 +32,12 @@ module Datadog
|
|
32
32
|
end
|
33
33
|
|
34
34
|
def before_intialize(app)
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
35
|
+
do_once(:rails_before_initialize, for: app) do
|
36
|
+
# Middleware must be added before the application is initialized.
|
37
|
+
# Otherwise the middleware stack will be frozen.
|
38
|
+
# Sometimes we don't want to activate middleware e.g. OpenTracing, etc.
|
39
|
+
add_middleware(app) if Datadog.configuration[:rails][:middleware]
|
40
|
+
end
|
39
41
|
end
|
40
42
|
|
41
43
|
def add_middleware(app)
|
@@ -59,10 +61,12 @@ module Datadog
|
|
59
61
|
end
|
60
62
|
|
61
63
|
def after_intialize(app)
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
64
|
+
do_once(:rails_after_initialize, for: app) do
|
65
|
+
# Finish configuring the tracer after the application is initialized.
|
66
|
+
# We need to wait for some things, like application name, middleware stack, etc.
|
67
|
+
setup_tracer
|
68
|
+
instrument_rails
|
69
|
+
end
|
66
70
|
end
|
67
71
|
|
68
72
|
# Configure Rails tracing with settings
|
@@ -60,10 +60,13 @@ module Datadog
|
|
60
60
|
|
61
61
|
datadog_tag_request(uri, span)
|
62
62
|
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
63
|
+
yield(span).tap do |response|
|
64
|
+
# Verify return value is a response
|
65
|
+
# If so, add additional tags.
|
66
|
+
if response.is_a?(::RestClient::Response)
|
67
|
+
span.set_tag(Datadog::Ext::HTTP::STATUS_CODE, response.code)
|
68
|
+
end
|
69
|
+
end
|
67
70
|
rescue ::RestClient::ExceptionWithResponse => e
|
68
71
|
span.set_error(e) if Datadog::Ext::HTTP::ERROR_RANGE.cover?(e.http_code)
|
69
72
|
span.set_tag(Datadog::Ext::HTTP::STATUS_CODE, e.http_code)
|
data/lib/ddtrace/patcher.rb
CHANGED
@@ -21,21 +21,23 @@ module Datadog
|
|
21
21
|
end
|
22
22
|
end
|
23
23
|
|
24
|
-
def do_once(key = nil)
|
24
|
+
def do_once(key = nil, options = {})
|
25
25
|
# If already done, don't do again
|
26
|
-
@done_once ||= {}
|
27
|
-
|
26
|
+
@done_once ||= Hash.new { |h, k| h[k] = {} }
|
27
|
+
if @done_once.key?(key) && @done_once[key].key?(options[:for])
|
28
|
+
return @done_once[key][options[:for]]
|
29
|
+
end
|
28
30
|
|
29
31
|
# Otherwise 'do'
|
30
32
|
yield.tap do
|
31
33
|
# Then add the key so we don't do again.
|
32
|
-
@done_once[key] = true
|
34
|
+
@done_once[key][options[:for]] = true
|
33
35
|
end
|
34
36
|
end
|
35
37
|
|
36
|
-
def done?(key)
|
38
|
+
def done?(key, options = {})
|
37
39
|
return false unless instance_variable_defined?(:@done_once)
|
38
|
-
!@done_once.nil? && @done_once.key?(key)
|
40
|
+
!@done_once.nil? && @done_once.key?(key) && @done_once[key].key?(options[:for])
|
39
41
|
end
|
40
42
|
end
|
41
43
|
|
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.17.
|
4
|
+
version: 0.17.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Datadog, Inc.
|
8
8
|
autorequire:
|
9
9
|
bindir: exe
|
10
10
|
cert_chain: []
|
11
|
-
date: 2018-11-
|
11
|
+
date: 2018-11-29 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: msgpack
|
@@ -544,7 +544,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
544
544
|
version: '0'
|
545
545
|
requirements: []
|
546
546
|
rubyforge_project:
|
547
|
-
rubygems_version: 2.
|
547
|
+
rubygems_version: 2.6.14
|
548
548
|
signing_key:
|
549
549
|
specification_version: 4
|
550
550
|
summary: Datadog tracing code for your Ruby applications
|