sidekiq-amigo 1.7.0 → 1.8.0

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: 3cf72dfd7e1bbcc7217536a2344ce5ecdec41c0ae8769b44ec91b210b9a41d0b
4
- data.tar.gz: 19f5fd437e47f5f2dc706877289f05fd7ee0d50426d4de42ac2bbdc304f9d882
3
+ metadata.gz: a32299bc84d87b6c497414b4fcb6b89278e2993543eff1ba07bcf1a9fb75c59f
4
+ data.tar.gz: 27acf41f1e0235536da93d7dfd0b2a5ad1f65e4e993f428967e8072e7213f83f
5
5
  SHA512:
6
- metadata.gz: 970fa43283e3361af6b7caa12241ad1848426af476d0023a38148d435dbb07b7eabe31a79c2e0c23bce380097e1c5f9282eb16ef16a6e6372e6185fa1243744b
7
- data.tar.gz: 7e421c9750235136306e8ae9010101d2611c4e8cf54a0cf8192407adba26e160ec17247db045d1e6c9c85c89cc67a383379bc625f01c88f81da683ca338ce860
6
+ metadata.gz: 47e75ba71d67411a80e7d5ae20f06c0b3bb4e0fb056356e63fb47ec3cd84cdb72f0deb6e2bd00f5cc0cd091267dc30725e4607ae018b7f29a31093c4c9e82ebd
7
+ data.tar.gz: 761f7febdba270fe365f39cb740f734615118bd8c160485ac9296119f00124458f1970e159dbdd0ed8a6fbecd4c66df8bfe07f86803a14e2982e738fbe69115c
data/lib/amigo/retry.rb CHANGED
@@ -17,18 +17,29 @@ require "sidekiq/api"
17
17
  # end
18
18
  module Amigo
19
19
  module Retry
20
- class Error < StandardError; end
20
+ class Error < StandardError
21
+ protected def exc_or_msg(timing_msg, obj)
22
+ return timing_msg if obj.nil?
23
+ return obj.to_s unless obj.is_a?(Exception)
24
+ return "#{timing_msg} (#{obj.class}: #{obj.message})"
25
+ end
26
+
27
+ protected def exc?(ex)
28
+ return ex.is_a?(Exception) ? ex : nil
29
+ end
30
+ end
21
31
 
22
32
  # Raise this class, or a subclass of it, to schedule a later retry,
23
33
  # rather than using an error to trigger Sidekiq's default retry behavior.
24
34
  # The benefit here is that it allows a consistent, customizable behavior,
25
35
  # so is better for 'expected' errors like rate limiting.
26
36
  class Retry < Error
27
- attr_accessor :interval_or_timestamp
37
+ attr_accessor :interval_or_timestamp, :wrapped
28
38
 
29
39
  def initialize(interval_or_timestamp, msg=nil)
30
40
  @interval_or_timestamp = interval_or_timestamp
31
- super(msg || "retry job in #{interval_or_timestamp}")
41
+ @wrapped = exc?(msg)
42
+ super(exc_or_msg("retry job in #{interval_or_timestamp.to_i}s", msg))
32
43
  end
33
44
  end
34
45
 
@@ -37,18 +48,25 @@ module Amigo
37
48
  # This allows jobs to hard-fail when there is something like a total outage,
38
49
  # rather than retrying.
39
50
  class Die < Error
51
+ attr_accessor :wrapped
52
+
53
+ def initialize(msg=nil)
54
+ @wrapped = exc?(msg)
55
+ super(exc_or_msg("kill job", msg))
56
+ end
40
57
  end
41
58
 
42
59
  # Raise this class, or a subclass of it, to:
43
60
  # - Use +Retry+ exception semantics while the current attempt is <= +attempts+, or
44
61
  # - Use +Die+ exception semantics if the current attempt is > +attempts+.
45
62
  class OrDie < Error
46
- attr_reader :attempts, :interval_or_timestamp
63
+ attr_reader :attempts, :interval_or_timestamp, :wrapped
47
64
 
48
65
  def initialize(attempts, interval_or_timestamp, msg=nil)
66
+ @wrapped = exc?(msg)
49
67
  @attempts = attempts
50
68
  @interval_or_timestamp = interval_or_timestamp
51
- super(msg || "retry every #{interval_or_timestamp} up to #{attempts} times")
69
+ super(exc_or_msg("retry every #{interval_or_timestamp.to_i}s up to #{attempts} times", msg))
52
70
  end
53
71
  end
54
72
 
@@ -56,6 +74,12 @@ module Amigo
56
74
  # from deep in a job and they want to jump out of the whole thing.
57
75
  # Usually you should log before raising this!
58
76
  class Quit < Error
77
+ attr_accessor :wrapped
78
+
79
+ def initialize(msg=nil)
80
+ @wrapped = exc?(msg)
81
+ super(exc_or_msg("quit job", msg))
82
+ end
59
83
  end
60
84
 
61
85
  class ServerMiddleware
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.7.0"
4
+ VERSION = "1.8.0"
5
5
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-amigo
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.7.0
4
+ version: 1.8.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Lithic Technology
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2024-04-12 00:00:00.000000000 Z
11
+ date: 2024-04-27 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sidekiq