sidekiq-amigo 1.13.1 → 1.14.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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: c75430ea4c493cfee46c6de0daf1e64b8a6bea0e17017524dc2bc540bf7f30b2
4
- data.tar.gz: 3bd32447b4f3d52f3512570bb3af6d5cab2643619bc83c9e95c17c0fa66418a3
3
+ metadata.gz: 07551fc97532f4e4e819cb1f027b406df1c3144e98984cde26e90893420cf8fa
4
+ data.tar.gz: 67f0eb863e5d471897bc5c418c6ce8bdc4d118b54a6e135b32a97806159b91e6
5
5
  SHA512:
6
- metadata.gz: 6fa8f511ead61d4a89473fdf3eef6ed58299219e98d8172098beddbda6b73ba19822c777536f924986940bac0787382b3752f1fd921405793f14dc8307ce9897
7
- data.tar.gz: ca0f43716e1067f606956d14b3db8457115e57d1732c181d0006491c979b440058c8d256e3d0da5f242c99409d14392169d3d78717c6544dc8423cf3bfe94cf2
6
+ metadata.gz: 2a8dfd02d648d865945e4491594c591c6304b015e1c7bcf51274c1126e4a7566ae9e9fab9a958b378a78d286d2889d84248396b497efa7502f68dd80b27ac5cd
7
+ data.tar.gz: 4a5391e68c465616da4cc95baaee0cbd676188a0ab62275ce4fcdd691260be10c0bdd7718fca26e72ef59f8c9657031341572ab3b141fc4f792240edac004de2
data/lib/amigo/retry.rb CHANGED
@@ -59,6 +59,14 @@ module Amigo
59
59
  # Raise this class, or a subclass of it, to:
60
60
  # - Use +Retry+ exception semantics while the current attempt is <= +attempts+, or
61
61
  # - Use +Die+ exception semantics if the current attempt is > +attempts+.
62
+ #
63
+ # Callers can provide a subclass with two methods that are looked for:
64
+ #
65
+ # If on_retry is defined, it is called with (worker instance, job hash).
66
+ # If on_retry returns +:skip+, do NOT retry (do not send to the retry set).
67
+ #
68
+ # If on_die is defined, it is called with (worker instance, job hash).
69
+ # If on_die returns +:skip+, do NOT send to the dead set.
62
70
  class OrDie < Error
63
71
  attr_reader :attempts, :interval_or_timestamp, :wrapped
64
72
 
@@ -99,13 +107,27 @@ module Amigo
99
107
  end
100
108
 
101
109
  def handle_retry(worker, job, e)
110
+ if e.respond_to?(:on_retry)
111
+ callback_result = e.on_retry(worker, job)
112
+ if callback_result == :skip
113
+ Sidekiq.logger.warn("skipping_retryset_schedule")
114
+ return
115
+ end
116
+ end
102
117
  Sidekiq.logger.info("scheduling_retry")
103
118
  job["error_class"] = e.class.to_s
104
119
  job["error_message"] = e.to_s
105
120
  self.amigo_retry_in(worker.class, job, e.interval_or_timestamp)
106
121
  end
107
122
 
108
- def handle_die(_worker, job, e)
123
+ def handle_die(worker, job, e)
124
+ if e.respond_to?(:on_die)
125
+ callback_result = e.on_die(worker, job)
126
+ if callback_result == :skip
127
+ Sidekiq.logger.warn("skipping_deadset_send")
128
+ return
129
+ end
130
+ end
109
131
  Sidekiq.logger.warn("sending_to_deadset")
110
132
  job["error_class"] = e.class.to_s
111
133
  job["error_message"] = e.to_s
data/lib/amigo/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Amigo
4
- VERSION = "1.13.1"
4
+ VERSION = "1.14.0"
5
5
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-amigo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.13.1
4
+ version: 1.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lithic Technology