hoss-agent 1.0.6 → 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: 722e5fcda718182f47faa927fbfd9f19b96567d472eaa0f929bef3982b6024a3
4
- data.tar.gz: f009f58f3659233bd2cb88670698e8cbcf382d85602abb0d898b3a49a0395d34
3
+ metadata.gz: f1317a4f764c2af70fb5c2637637d3f9afc06e50c0d8b5a7a06ab3eef83b995b
4
+ data.tar.gz: 16f7a332cf59692b9fdc2fc09b1a021f0ab755451308b2444ccf5e55006fb1a2
5
5
  SHA512:
6
- metadata.gz: a9ba92e08cbfb0a6daa8fcb30b2d6dc88b37e7ea1ed426197982c0a23df7df493737925b1cc56d7c6f53baa4a72495db4b9241b6d49aa91a7c10afffdc3ddc65
7
- data.tar.gz: 55b09ee50f6e2c85ba683678de3f2216ceafff367a1e6aa89526ae359ae5b565aa7565e20356ba5b3e0ea5c1b3bb27360e5b288069065aec390c468dbdfbe281
6
+ metadata.gz: 1bf307cabbf220bfb3a8ed8423c7ac0971e75e09939b7b03a4d6d7b5417bf40eae7495230df57980ff1218be07c2b1294c4bad201898189edb01078c98bc892b
7
+ data.tar.gz: df81ae88e4390fa7e860b470f19d22175d908dd1739ade15e41842aa2b1142be7303655233c38e7fe865df8d57ab386aae688e675e851614f8ef0bac6ed1c643
@@ -41,7 +41,7 @@ module Hoss
41
41
  option :remote_config_fetch_interval, type: :int, default: 300
42
42
  option :agentConfig, type: :dict
43
43
  option :debug, type: :boolean, default: ENV['HOSS_DEBUG']
44
-
44
+ option :disable_reporting, type: :boolean, default: ENV['HOSS_DISABLE_REPORTING'] == 'true'
45
45
 
46
46
  option :central_config, type: :bool, default: true
47
47
  option :capture_body, type: :string, default: 'off'
@@ -109,7 +109,9 @@ module Hoss
109
109
  )
110
110
  end
111
111
 
112
- warn '[HOSS] No API Key provided' unless self.api_key
112
+ unless self.disable_reporting.nil?
113
+ self.disable_reporting = self.disable_reporting == 'true' || self.disable_reporting == true
114
+ end
113
115
 
114
116
  yield self if block_given?
115
117
 
@@ -39,38 +39,57 @@ module Hoss
39
39
  alias run_request_without_apm run_request
40
40
 
41
41
  def run_request(method, url, body, headers, &block)
42
- Hoss.with_event do |event|
43
- Hoss::Spies::FaradaySpy.without_net_http do
44
- begin
42
+ result = nil
43
+ error_in_request = false
44
+ error_in_block = false
45
+ begin
46
+ Hoss.with_event do |event|
47
+ Hoss::Spies::FaradaySpy.without_net_http do
45
48
  uri = URI(build_url(url))
46
- result = run_request_without_apm(method, url, body, headers) do |req|
47
- if block_given?
48
- yield req
49
- new_path = req.path
50
- new_query = URI.encode_www_form(req.params)
51
- if uri.path != new_path || uri.query != new_query
52
- test_uri = uri
53
- test_uri.query = nil
49
+ begin
50
+ result = run_request_without_apm(method, url, body, headers) do |req|
51
+ if block_given?
52
+ yield req
54
53
  begin
55
- test_uri.path = new_path
56
- rescue Exception => e
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
68
+ end
69
+ rescue
70
+ error_in_block = true
71
+ raise
57
72
  end
58
- # The original url can be set to path if Faraday.get used
59
- if test_uri.to_s != uri.to_s
60
- uri.path = new_path
61
- end
62
- uri.query = new_query
73
+ end
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
63
85
  end
64
86
  end
65
- event.request.method = method.to_s.upcase
66
- event.request.url = uri.to_s
67
- event.request.received_at = DateTime.now.strftime('%Q').to_i
68
- event.request.headers['host'] = uri.hostname
69
- req.headers.each {|n,v| event.request.headers[n] = v}
70
- event.request.url = uri.to_s
71
- event.request.body = req.body
87
+ rescue
88
+ error_in_request = true
89
+ event.error = Hoss::Event::Error.new(Hoss::Event::Error::ConnectionError)
90
+ event.error.received_at = DateTime.now.strftime('%Q').to_i
91
+ raise
72
92
  end
73
-
74
93
  if result
75
94
  event.response = Hoss::Event::Response.new
76
95
  event.response.received_at = DateTime.now.strftime('%Q').to_i
@@ -78,18 +97,14 @@ module Hoss
78
97
  result.headers.each {|n,v| event.response.headers[n] = v}
79
98
  event.response.body = result.body
80
99
  end
81
-
82
100
  result
83
- rescue Exception => e
84
- if e.wrapped_exception.is_a? Net::OpenTimeout
85
- event.error = Hoss::Event::Error.new(Hoss::Event::Error::ConnectionTimeout)
86
- else
87
- event.error = Hoss::Event::Error.new(Hoss::Event::Error::ConnectionError)
88
- end
89
- event.error.received_at = DateTime.now.strftime('%Q').to_i
90
- raise
91
101
  end
92
102
  end
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)
93
108
  end
94
109
  end
95
110
  end
@@ -41,35 +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
47
- Hoss.with_event do |event|
48
- event.request.headers['host'] = req.uri.host
49
- req.headers.each {|n,v| event.request.headers[n] = v}
50
- event.request.method = req.verb.to_s.upcase
51
- event.request.url = req.uri.to_s
52
- event.request.body = Hoss::Spies::HTTPSpy::copy_request_body(req.body)
53
- event.request.received_at = DateTime.now.strftime('%Q').to_i
54
- begin
55
- result = perform_without_apm(req, options)
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
50
+
51
+ Hoss.with_event do |event|
52
+ event.request.headers['host'] = req.uri.host
53
+ req.headers.each {|n,v| event.request.headers[n] = v}
54
+ event.request.method = req.verb.to_s.upcase
55
+ event.request.url = req.uri.to_s
56
+ event.request.body = Hoss::Spies::HTTPSpy::copy_request_body(req.body)
57
+ event.request.received_at = DateTime.now.strftime('%Q').to_i
58
+ begin
59
+ result = perform_without_apm(req, options)
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
70
+ end
56
71
  if result
57
72
  event.response = Hoss::Event::Response.new
58
73
  event.response.received_at = DateTime.now.strftime('%Q').to_i
59
74
  event.response.status_code = result.code.to_i
60
75
  result.headers.each {|n,v| event.response.headers[n] = v}
61
- event.response.body = result.body.dup.to_s
76
+ event.response.body = result.body.to_s
62
77
  end
63
78
  result
64
- rescue HTTP::TimeoutError => e
65
- event.error = Hoss::Event::Error.new(Hoss::Event::Error::ConnectionTimeout)
66
- event.error.received_at = DateTime.now.strftime('%Q').to_i
67
- raise
68
- rescue Exception => e
69
- event.error = Hoss::Event::Error.new(Hoss::Event::Error::ConnectionError)
70
- event.error.received_at = DateTime.now.strftime('%Q').to_i
71
- raise
72
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)
73
85
  end
74
86
  end
75
87
  end
@@ -52,39 +52,55 @@ 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
55
+ result = nil
56
+ error_in_request = false
57
+ begin
58
+ if req['HOSS-SKIP-INSTRUMENTATION'] == 'true' || Hoss::Spies::NetHTTPSpy.disabled?
59
+ return request_without_apm(req, body, &block)
60
+ end
61
+
62
+ host = req['host']&.split(':')&.first || address
63
+ method = req.method.to_s.upcase
64
+ path, query = req.path.split('?')
58
65
 
59
- host = req['host']&.split(':')&.first || address
60
- method = req.method.to_s.upcase
61
- path, query = req.path.split('?')
66
+ url = use_ssl? ? +'https://' : +'http://'
67
+ url << host
68
+ url << ":#{port}" if port
69
+ url << path
70
+ url << "?#{query}" if query
71
+ uri = URI(url)
62
72
 
63
- url = use_ssl? ? +'https://' : +'http://'
64
- url << host
65
- url << ":#{port}" if port
66
- url << path
67
- url << "?#{query}" if query
68
- uri = URI(url)
73
+ Hoss.with_event do |event|
74
+ # Record request
75
+ event.request.headers['host'] = uri.hostname
76
+ req.each_header {|n,v| event.request.headers[n] = v}
77
+ event.request.method = method
78
+ event.request.url = uri.to_s
79
+ event.request.body = req.body
80
+ event.request.received_at = DateTime.now.strftime('%Q').to_i
69
81
 
70
- Hoss.with_event do |event|
71
- # Record request
72
- event.request.headers['host'] = uri.hostname
73
- req.each_header {|n,v| event.request.headers[n] = v}
74
- event.request.method = method
75
- event.request.url = uri.to_s
76
- event.request.body = req.body
77
- event.request.received_at = DateTime.now.strftime('%Q').to_i
78
-
79
- result = request_without_apm(req, body, &block)
80
- if result
81
- event.response = Hoss::Event::Response.new
82
- event.response.received_at = DateTime.now.strftime('%Q').to_i
83
- event.response.status_code = result.code.to_i
84
- result.each_header {|n,v| event.response.headers[n] = v}
85
- event.response.body = result.body
82
+ begin
83
+ result = request_without_apm(req, body, &block)
84
+ rescue
85
+ error_in_request = true
86
+ raise
87
+ end
88
+
89
+ if result
90
+ event.response = Hoss::Event::Response.new
91
+ event.response.received_at = DateTime.now.strftime('%Q').to_i
92
+ event.response.status_code = result.code.to_i
93
+ result.each_header {|n,v| event.response.headers[n] = v}
94
+ event.response.body = result.body
95
+ end
96
+
97
+ result
86
98
  end
87
- result
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?
103
+ return request_without_apm(req, body, &block)
88
104
  end
89
105
  end
90
106
  end
@@ -26,8 +26,8 @@ module Hoss
26
26
  r = {
27
27
  eventId: event.id,
28
28
  request: build_request(event.request),
29
- response: build_response(event.response),
30
29
  }
30
+ r['response'] = build_response(event.response) if event.response
31
31
  r['error'] = build_error(event.error) if event.error
32
32
  r
33
33
  end
@@ -147,7 +147,11 @@ module Hoss
147
147
  puts json if config.debug
148
148
  end
149
149
  begin
150
- connection.write(json)
150
+ if config.disable_reporting
151
+ debug "Reprting disabled, skipping"
152
+ else
153
+ connection.write(json)
154
+ end
151
155
  rescue Exception => e
152
156
  error format('Failed send report: %s %s', e.inspect, e.backtrace)
153
157
  batch.each do |m|
@@ -18,5 +18,5 @@
18
18
  # frozen_string_literal: true
19
19
 
20
20
  module Hoss
21
- VERSION = '1.0.6'
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.6
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