hoss-agent 1.0.10 → 1.0.11
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.
- checksums.yaml +4 -4
- data/lib/hoss/spies/faraday.rb +50 -39
- data/lib/hoss/spies/http.rb +32 -25
- data/lib/hoss/spies/net_http.rb +21 -9
- data/lib/hoss/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f1317a4f764c2af70fb5c2637637d3f9afc06e50c0d8b5a7a06ab3eef83b995b
|
4
|
+
data.tar.gz: 16f7a332cf59692b9fdc2fc09b1a021f0ab755451308b2444ccf5e55006fb1a2
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1bf307cabbf220bfb3a8ed8423c7ac0971e75e09939b7b03a4d6d7b5417bf40eae7495230df57980ff1218be07c2b1294c4bad201898189edb01078c98bc892b
|
7
|
+
data.tar.gz: df81ae88e4390fa7e860b470f19d22175d908dd1739ade15e41842aa2b1142be7303655233c38e7fe865df8d57ab386aae688e675e851614f8ef0bac6ed1c643
|
data/lib/hoss/spies/faraday.rb
CHANGED
@@ -39,61 +39,72 @@ module Hoss
|
|
39
39
|
alias run_request_without_apm run_request
|
40
40
|
|
41
41
|
def run_request(method, url, body, headers, &block)
|
42
|
+
result = nil
|
43
|
+
error_in_request = false
|
44
|
+
error_in_block = false
|
42
45
|
begin
|
43
46
|
Hoss.with_event do |event|
|
44
47
|
Hoss::Spies::FaradaySpy.without_net_http do
|
48
|
+
uri = URI(build_url(url))
|
45
49
|
begin
|
46
|
-
uri = URI(build_url(url))
|
47
50
|
result = run_request_without_apm(method, url, body, headers) do |req|
|
48
51
|
if block_given?
|
49
52
|
yield req
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
53
|
+
begin
|
54
|
+
new_path = req.path
|
55
|
+
new_query = URI.encode_www_form(req.params)
|
56
|
+
if uri.path != new_path || uri.query != new_query
|
57
|
+
test_uri = uri
|
58
|
+
test_uri.query = nil
|
59
|
+
begin
|
60
|
+
test_uri.path = new_path
|
61
|
+
rescue Exception => e
|
62
|
+
end
|
63
|
+
# The original url can be set to path if Faraday.get used
|
64
|
+
if test_uri.to_s != uri.to_s
|
65
|
+
uri.path = new_path
|
66
|
+
end
|
67
|
+
uri.query = new_query
|
58
68
|
end
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
end
|
63
|
-
uri.query = new_query
|
69
|
+
rescue
|
70
|
+
error_in_block = true
|
71
|
+
raise
|
64
72
|
end
|
65
73
|
end
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
event.response.status_code = result.status.to_i
|
79
|
-
result.headers.each {|n,v| event.response.headers[n] = v}
|
80
|
-
event.response.body = result.body
|
81
|
-
end
|
82
|
-
|
83
|
-
result
|
84
|
-
rescue Exception => e
|
85
|
-
if e.respond_to?(:wrapped_exception) && e.wrapped_exception.is_a?(Net::OpenTimeout)
|
86
|
-
event.error = Hoss::Event::Error.new(Hoss::Event::Error::ConnectionTimeout)
|
87
|
-
else
|
88
|
-
event.error = Hoss::Event::Error.new(Hoss::Event::Error::ConnectionError)
|
74
|
+
begin
|
75
|
+
event.request.method = method.to_s.upcase
|
76
|
+
event.request.url = uri.to_s
|
77
|
+
event.request.received_at = DateTime.now.strftime('%Q').to_i
|
78
|
+
event.request.headers['host'] = uri.hostname
|
79
|
+
req.headers.each {|n,v| event.request.headers[n] = v}
|
80
|
+
event.request.url = uri.to_s
|
81
|
+
event.request.body = req.body
|
82
|
+
rescue
|
83
|
+
error_in_block = true
|
84
|
+
raise
|
85
|
+
end
|
89
86
|
end
|
87
|
+
rescue
|
88
|
+
error_in_request = true
|
89
|
+
event.error = Hoss::Event::Error.new(Hoss::Event::Error::ConnectionError)
|
90
90
|
event.error.received_at = DateTime.now.strftime('%Q').to_i
|
91
91
|
raise
|
92
92
|
end
|
93
|
+
if result
|
94
|
+
event.response = Hoss::Event::Response.new
|
95
|
+
event.response.received_at = DateTime.now.strftime('%Q').to_i
|
96
|
+
event.response.status_code = result.status.to_i
|
97
|
+
result.headers.each {|n,v| event.response.headers[n] = v}
|
98
|
+
event.response.body = result.body
|
99
|
+
end
|
100
|
+
result
|
93
101
|
end
|
94
102
|
end
|
95
|
-
rescue
|
96
|
-
|
103
|
+
rescue Exception => e
|
104
|
+
raise if error_in_request && !error_in_block
|
105
|
+
puts format('Hoss Error: %s %s', e.inspect, e.backtrace)
|
106
|
+
return result unless result.nil?
|
107
|
+
return run_request_without_apm(method, url, body, headers, &block)
|
97
108
|
end
|
98
109
|
end
|
99
110
|
end
|
data/lib/hoss/spies/http.rb
CHANGED
@@ -41,40 +41,47 @@ module Hoss
|
|
41
41
|
alias perform_without_apm perform
|
42
42
|
|
43
43
|
def perform(req, options)
|
44
|
-
|
45
|
-
|
46
|
-
|
44
|
+
result = nil
|
45
|
+
error_in_request = false
|
46
|
+
begin
|
47
|
+
if req.headers['HOSS-SKIP-INSTRUMENTATION'] == 'true'
|
48
|
+
return perform_without_apm(req, options)
|
49
|
+
end
|
47
50
|
|
48
|
-
|
49
|
-
result = nil
|
50
|
-
begin
|
51
|
+
Hoss.with_event do |event|
|
51
52
|
event.request.headers['host'] = req.uri.host
|
52
53
|
req.headers.each {|n,v| event.request.headers[n] = v}
|
53
54
|
event.request.method = req.verb.to_s.upcase
|
54
55
|
event.request.url = req.uri.to_s
|
55
56
|
event.request.body = Hoss::Spies::HTTPSpy::copy_request_body(req.body)
|
56
57
|
event.request.received_at = DateTime.now.strftime('%Q').to_i
|
58
|
+
begin
|
57
59
|
result = perform_without_apm(req, options)
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
60
|
+
rescue HTTP::TimeoutError => e
|
61
|
+
error_in_request = true
|
62
|
+
event.error = Hoss::Event::Error.new(Hoss::Event::Error::ConnectionTimeout)
|
63
|
+
event.error.received_at = DateTime.now.strftime('%Q').to_i
|
64
|
+
raise
|
65
|
+
rescue Exception => e
|
66
|
+
error_in_request = true
|
67
|
+
event.error = Hoss::Event::Error.new(Hoss::Event::Error::ConnectionError)
|
68
|
+
event.error.received_at = DateTime.now.strftime('%Q').to_i
|
69
|
+
raise
|
66
70
|
end
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
71
|
+
if result
|
72
|
+
event.response = Hoss::Event::Response.new
|
73
|
+
event.response.received_at = DateTime.now.strftime('%Q').to_i
|
74
|
+
event.response.status_code = result.code.to_i
|
75
|
+
result.headers.each {|n,v| event.response.headers[n] = v}
|
76
|
+
event.response.body = result.body.to_s
|
77
|
+
end
|
78
|
+
result
|
79
|
+
end
|
80
|
+
rescue Exception => e
|
81
|
+
raise if error_in_request
|
82
|
+
puts format('Hoss Error: %s %s', e.inspect, e.backtrace)
|
83
|
+
return result unless result.nil?
|
84
|
+
return perform_without_apm(req, options)
|
78
85
|
end
|
79
86
|
end
|
80
87
|
end
|
data/lib/hoss/spies/net_http.rb
CHANGED
@@ -52,22 +52,24 @@ module Hoss
|
|
52
52
|
alias request_without_apm request
|
53
53
|
|
54
54
|
def request(req, body = nil, &block)
|
55
|
-
|
56
|
-
|
57
|
-
end
|
58
|
-
|
55
|
+
result = nil
|
56
|
+
error_in_request = false
|
59
57
|
begin
|
58
|
+
if req['HOSS-SKIP-INSTRUMENTATION'] == 'true' || Hoss::Spies::NetHTTPSpy.disabled?
|
59
|
+
return request_without_apm(req, body, &block)
|
60
|
+
end
|
61
|
+
|
60
62
|
host = req['host']&.split(':')&.first || address
|
61
63
|
method = req.method.to_s.upcase
|
62
64
|
path, query = req.path.split('?')
|
63
|
-
|
65
|
+
|
64
66
|
url = use_ssl? ? +'https://' : +'http://'
|
65
67
|
url << host
|
66
68
|
url << ":#{port}" if port
|
67
69
|
url << path
|
68
70
|
url << "?#{query}" if query
|
69
71
|
uri = URI(url)
|
70
|
-
|
72
|
+
|
71
73
|
Hoss.with_event do |event|
|
72
74
|
# Record request
|
73
75
|
event.request.headers['host'] = uri.hostname
|
@@ -76,8 +78,14 @@ module Hoss
|
|
76
78
|
event.request.url = uri.to_s
|
77
79
|
event.request.body = req.body
|
78
80
|
event.request.received_at = DateTime.now.strftime('%Q').to_i
|
79
|
-
|
80
|
-
|
81
|
+
|
82
|
+
begin
|
83
|
+
result = request_without_apm(req, body, &block)
|
84
|
+
rescue
|
85
|
+
error_in_request = true
|
86
|
+
raise
|
87
|
+
end
|
88
|
+
|
81
89
|
if result
|
82
90
|
event.response = Hoss::Event::Response.new
|
83
91
|
event.response.received_at = DateTime.now.strftime('%Q').to_i
|
@@ -85,9 +93,13 @@ module Hoss
|
|
85
93
|
result.each_header {|n,v| event.response.headers[n] = v}
|
86
94
|
event.response.body = result.body
|
87
95
|
end
|
96
|
+
|
88
97
|
result
|
89
98
|
end
|
90
|
-
rescue
|
99
|
+
rescue Exception => e
|
100
|
+
raise if error_in_request
|
101
|
+
puts format('Hoss Error: %s %s', e.inspect, e.backtrace)
|
102
|
+
return result unless result.nil?
|
91
103
|
return request_without_apm(req, body, &block)
|
92
104
|
end
|
93
105
|
end
|
data/lib/hoss/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: hoss-agent
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.0.
|
4
|
+
version: 1.0.11
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Cameron Cooper
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-07-
|
11
|
+
date: 2020-07-22 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: concurrent-ruby
|