hoss-agent 1.0.10 → 1.0.11

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: 1f6e25b94d999ae0da999fb7de8ca429445a27a7d87a72be82da4bfc4a367ab8
4
- data.tar.gz: 6e3b46812e39dde84acd627649f2557da0019b9a406791d35c61da77ecb781b7
3
+ metadata.gz: f1317a4f764c2af70fb5c2637637d3f9afc06e50c0d8b5a7a06ab3eef83b995b
4
+ data.tar.gz: 16f7a332cf59692b9fdc2fc09b1a021f0ab755451308b2444ccf5e55006fb1a2
5
5
  SHA512:
6
- metadata.gz: 9a9e8e511a25e1580b32bfd63aed336be1c2a804a70d580bb36e612d72cf79f25cdeb76a16fd2d5ba6b1f60cfb2e51e15a6dd14fa83387205eb3234c3d4952e9
7
- data.tar.gz: cd7c026248bd252cb8a8dfc53e72234281bc7cc1a3ea9c58e5f446ea78cc3341664e760000728c78ce2f6a7ba252b8b9eb3b44ee78a0d6a07f25cd54bcc26f13
6
+ metadata.gz: 1bf307cabbf220bfb3a8ed8423c7ac0971e75e09939b7b03a4d6d7b5417bf40eae7495230df57980ff1218be07c2b1294c4bad201898189edb01078c98bc892b
7
+ data.tar.gz: df81ae88e4390fa7e860b470f19d22175d908dd1739ade15e41842aa2b1142be7303655233c38e7fe865df8d57ab386aae688e675e851614f8ef0bac6ed1c643
@@ -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
- new_path = req.path
51
- new_query = URI.encode_www_form(req.params)
52
- if uri.path != new_path || uri.query != new_query
53
- test_uri = uri
54
- test_uri.query = nil
55
- begin
56
- test_uri.path = new_path
57
- rescue Exception => e
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
- # The original url can be set to path if Faraday.get used
60
- if test_uri.to_s != uri.to_s
61
- uri.path = new_path
62
- end
63
- uri.query = new_query
69
+ rescue
70
+ error_in_block = true
71
+ raise
64
72
  end
65
73
  end
66
- event.request.method = method.to_s.upcase
67
- event.request.url = uri.to_s
68
- event.request.received_at = DateTime.now.strftime('%Q').to_i
69
- event.request.headers['host'] = uri.hostname
70
- req.headers.each {|n,v| event.request.headers[n] = v}
71
- event.request.url = uri.to_s
72
- event.request.body = req.body
73
- end
74
-
75
- if result
76
- event.response = Hoss::Event::Response.new
77
- event.response.received_at = DateTime.now.strftime('%Q').to_i
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
- run_request_without_apm(method, url, body, headers, &block)
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
@@ -41,40 +41,47 @@ module Hoss
41
41
  alias perform_without_apm perform
42
42
 
43
43
  def perform(req, options)
44
- if req.headers['HOSS-SKIP-INSTRUMENTATION'] == 'true'
45
- return perform_without_apm(req, options)
46
- end
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
- Hoss.with_event do |event|
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
- if result
59
- event.response = Hoss::Event::Response.new
60
- event.response.received_at = DateTime.now.strftime('%Q').to_i
61
- event.response.status_code = result.code.to_i
62
- result.headers.each {|n,v| event.response.headers[n] = v}
63
- event.response.body = result.body.to_s
64
- end
65
- result
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
- rescue HTTP::TimeoutError => e
68
- event.error = Hoss::Event::Error.new(Hoss::Event::Error::ConnectionTimeout)
69
- event.error.received_at = DateTime.now.strftime('%Q').to_i
70
- raise
71
- rescue HTTP::Error => e
72
- event.error = Hoss::Event::Error.new(Hoss::Event::Error::ConnectionError)
73
- event.error.received_at = DateTime.now.strftime('%Q').to_i
74
- raise
75
- rescue Exception => e
76
- return result unless result.nil?
77
- return perform_without_apm(req, options)
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
@@ -52,22 +52,24 @@ module Hoss
52
52
  alias request_without_apm request
53
53
 
54
54
  def request(req, body = nil, &block)
55
- if req['HOSS-SKIP-INSTRUMENTATION'] == 'true' || Hoss::Spies::NetHTTPSpy.disabled?
56
- return request_without_apm(req, body, &block)
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
- result = request_without_apm(req, body, &block)
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
@@ -18,5 +18,5 @@
18
18
  # frozen_string_literal: true
19
19
 
20
20
  module Hoss
21
- VERSION = '1.0.10'
21
+ VERSION = '1.0.11'
22
22
  end
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.10
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-21 00:00:00.000000000 Z
11
+ date: 2020-07-22 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby