honeybadger 4.5.6 → 4.6.0
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/CHANGELOG.md +9 -0
- data/lib/honeybadger/agent.rb +2 -0
- data/lib/honeybadger/config/defaults.rb +7 -2
- data/lib/honeybadger/plugins/faktory.rb +52 -0
- data/lib/honeybadger/plugins/sidekiq.rb +17 -7
- data/lib/honeybadger/version.rb +1 -1
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: a0a903cc9a64fe0e5b5bcbfef32b81656217d38316ffc66d368d8cc8982bdc04
|
4
|
+
data.tar.gz: fd4ff117b94da660a2039ebc106e7c29430834f3c691c6940cc1bc483dcbc0ac
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: e3f58753fa625545ffba12aaa7d9a86e3f8c7c8e3dc6ca1eaa518dd69e1636ef03d4a4b8a71677f34d8816166700102962e94288cb4e82913d1f5c2c0b6564f7
|
7
|
+
data.tar.gz: 33459d61b1eae5ab575f65a0ff6b1b7e64a891538b4f5508fe3a45b72fa8c47830a55007858f8aaef97b1c5eaf22a6efdfa3e9147e53eda9a9cde8e854335f7f
|
data/CHANGELOG.md
CHANGED
@@ -5,6 +5,15 @@ adheres to [Semantic Versioning](http://semver.org/).
|
|
5
5
|
|
6
6
|
## [Unreleased]
|
7
7
|
|
8
|
+
## [4.6.0] - 2020-03-12
|
9
|
+
### Fixed
|
10
|
+
- Fixed issue where Sidekiq.attempt_threshold was triggering 2 attempts ahead
|
11
|
+
of the setting
|
12
|
+
- Dup notify opts before mutating (#345)
|
13
|
+
### Changed
|
14
|
+
- Breadcrumbs on by default
|
15
|
+
- Added Faktory plugin -@scottrobertson
|
16
|
+
|
8
17
|
## [4.5.6] - 2020-01-08
|
9
18
|
### Fixed
|
10
19
|
- Fix remaining Ruby 2.7 deprecation warnings
|
data/lib/honeybadger/agent.rb
CHANGED
@@ -115,6 +115,8 @@ module Honeybadger
|
|
115
115
|
# @return [String] UUID reference to the notice within Honeybadger.
|
116
116
|
# @return [false] when ignored.
|
117
117
|
def notify(exception_or_opts, opts = {})
|
118
|
+
opts = opts.dup
|
119
|
+
|
118
120
|
if exception_or_opts.is_a?(Exception)
|
119
121
|
opts[:exception] = exception_or_opts
|
120
122
|
elsif exception_or_opts.respond_to?(:to_hash)
|
@@ -279,6 +279,11 @@ module Honeybadger
|
|
279
279
|
default: 0,
|
280
280
|
type: Integer
|
281
281
|
},
|
282
|
+
:'faktory.attempt_threshold' => {
|
283
|
+
description: 'The number of attempts before notifications will be sent.',
|
284
|
+
default: 0,
|
285
|
+
type: Integer
|
286
|
+
},
|
282
287
|
:'sidekiq.use_component' => {
|
283
288
|
description: 'Automatically set the component to the class of the job. Helps with grouping.',
|
284
289
|
default: true,
|
@@ -295,8 +300,8 @@ module Honeybadger
|
|
295
300
|
type: Boolean
|
296
301
|
},
|
297
302
|
:'breadcrumbs.enabled' => {
|
298
|
-
description: '
|
299
|
-
default:
|
303
|
+
description: 'Disable breadcrumb functionality.',
|
304
|
+
default: true,
|
300
305
|
type: Boolean
|
301
306
|
},
|
302
307
|
:'breadcrumbs.active_support_notifications' => {
|
@@ -0,0 +1,52 @@
|
|
1
|
+
require 'honeybadger/plugin'
|
2
|
+
require 'honeybadger/ruby'
|
3
|
+
|
4
|
+
module Honeybadger
|
5
|
+
module Plugins
|
6
|
+
module Faktory
|
7
|
+
class Middleware
|
8
|
+
def call(worker, job)
|
9
|
+
Honeybadger.clear!
|
10
|
+
yield
|
11
|
+
end
|
12
|
+
end
|
13
|
+
|
14
|
+
Plugin.register do
|
15
|
+
requirement { defined?(::Faktory) }
|
16
|
+
|
17
|
+
execution do
|
18
|
+
::Faktory.configure_worker do |faktory|
|
19
|
+
faktory.worker_middleware do |chain|
|
20
|
+
chain.prepend Middleware
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
::Faktory.configure_worker do |faktory|
|
25
|
+
faktory.error_handlers << lambda do |ex, params|
|
26
|
+
opts = {parameters: params}
|
27
|
+
|
28
|
+
if job = params[:job]
|
29
|
+
if (threshold = config[:'faktory.attempt_threshold'].to_i) > 0
|
30
|
+
# If job.failure is nil, it is the first attempt. The first
|
31
|
+
# retry has a job.failure.retry_count of 0, which would be
|
32
|
+
# the second attempt in our case.
|
33
|
+
retry_count = job.dig('failure', 'retry_count')
|
34
|
+
attempt = retry_count ? retry_count + 1 : 0
|
35
|
+
|
36
|
+
limit = [job['retry'].to_i, threshold].min
|
37
|
+
|
38
|
+
return if attempt < limit
|
39
|
+
end
|
40
|
+
|
41
|
+
opts[:component] = job['jobtype']
|
42
|
+
opts[:action] = 'perform'
|
43
|
+
end
|
44
|
+
|
45
|
+
Honeybadger.notify(ex, opts)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
end
|
51
|
+
end
|
52
|
+
end
|
@@ -25,20 +25,30 @@ module Honeybadger
|
|
25
25
|
::Sidekiq.configure_server do |sidekiq|
|
26
26
|
sidekiq.error_handlers << lambda {|ex, params|
|
27
27
|
job = params[:job] || params
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
28
|
+
job_retry = job['retry'.freeze]
|
29
|
+
|
30
|
+
if (threshold = config[:'sidekiq.attempt_threshold'].to_i) > 0 && job_retry
|
31
|
+
# We calculate the job attempts to determine the need to
|
32
|
+
# skip. Sidekiq's first job execution will have nil for the
|
33
|
+
# 'retry_count' job key. The first retry will have 0 set for
|
34
|
+
# the 'retry_count' key, incrementing on each execution
|
35
|
+
# afterwards.
|
36
|
+
retry_count = job['retry_count'.freeze]
|
37
|
+
attempt = retry_count ? retry_count + 1 : 0
|
38
|
+
|
39
|
+
# Ensure we account for modified max_retries setting
|
40
|
+
retry_limit = job_retry == true ? (sidekiq.options[:max_retries] || 25) : job_retry.to_i
|
41
|
+
limit = [retry_limit, threshold].min
|
42
|
+
|
43
|
+
return if attempt < limit
|
34
44
|
end
|
35
45
|
|
36
|
-
return if retry_opt && retry_count < max_retries
|
37
46
|
opts = {parameters: params}
|
38
47
|
if config[:'sidekiq.use_component']
|
39
48
|
opts[:component] = job['wrapped'.freeze] || job['class'.freeze]
|
40
49
|
opts[:action] = 'perform' if opts[:component]
|
41
50
|
end
|
51
|
+
|
42
52
|
Honeybadger.notify(ex, opts)
|
43
53
|
}
|
44
54
|
end
|
data/lib/honeybadger/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: honeybadger
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 4.
|
4
|
+
version: 4.6.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Honeybadger Industries LLC
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2020-
|
11
|
+
date: 2020-03-12 00:00:00.000000000 Z
|
12
12
|
dependencies: []
|
13
13
|
description: Make managing application errors a more pleasant experience.
|
14
14
|
email:
|
@@ -65,6 +65,7 @@ files:
|
|
65
65
|
- lib/honeybadger/plugins/breadcrumbs.rb
|
66
66
|
- lib/honeybadger/plugins/delayed_job.rb
|
67
67
|
- lib/honeybadger/plugins/delayed_job/plugin.rb
|
68
|
+
- lib/honeybadger/plugins/faktory.rb
|
68
69
|
- lib/honeybadger/plugins/lambda.rb
|
69
70
|
- lib/honeybadger/plugins/local_variables.rb
|
70
71
|
- lib/honeybadger/plugins/passenger.rb
|
@@ -152,8 +153,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
152
153
|
- !ruby/object:Gem::Version
|
153
154
|
version: '0'
|
154
155
|
requirements: []
|
155
|
-
|
156
|
-
rubygems_version: 2.7.6.2
|
156
|
+
rubygems_version: 3.0.1
|
157
157
|
signing_key:
|
158
158
|
specification_version: 4
|
159
159
|
summary: Error reports you can be happy about.
|