sidekiq-throttled 0.12.0 → 0.13.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: 6112ba7b54891bb2026f3e01a299c61d063b4f7efae86ace8c189606ca9ecabf
4
- data.tar.gz: 01e999a1093465e5ef702b4553215e1371b86c6dc024b2218b40988ad388ec91
3
+ metadata.gz: 2b1f0237b14be26ff2b25aeaedd80e4029610cfa7c2be331827c5b865c338f48
4
+ data.tar.gz: 3a5be191a1f02b2ce21b766be820201b6f4d06b74323456412096a0beef38d11
5
5
  SHA512:
6
- metadata.gz: ba63bb6792f530028d937f629afc3e64be80fa03be250f986e1172af76b826ffbf5c23f43424f919ee83fd5d6d6b76f50589bfc656f642440b75c9c5f94b9aa8
7
- data.tar.gz: b4df934846e581d6f06aee42f24142c556972a30b5b063906b86f01bc74f046b78520a30b5ca68770eac92849f60636bf55515eb7d928437cb3e1354e48815a3
6
+ metadata.gz: e9da0e99d328b6825ab3f47e1ea94c255717a01d05e28c90399aaf826a8d43a0e10de82baee329ddd8d846ac4e4ff0cb6f09ef11277fef2143972c50b2c3a55b
7
+ data.tar.gz: d73d011be01f319460fe87fda608aea9550e1f560bf778dfd5628874f0f074fc2020ad5e2f36ec8413a349c6dcd620f7aaa84a48f15e59dab8bf508e3e769354
data/Appraisals CHANGED
@@ -15,3 +15,7 @@ end
15
15
  appraise "sidekiq-6.0" do
16
16
  gem "sidekiq", "~> 6.0.0"
17
17
  end
18
+
19
+ appraise "sidekiq-6.1" do
20
+ gem "sidekiq", "~> 6.1.0"
21
+ end
data/CHANGES.md CHANGED
@@ -1,3 +1,9 @@
1
+ ## 0.13.0 (2020-07-28)
2
+
3
+ * [#85](https://github.com/sensortower/sidekiq-throttled/pull/85)
4
+ Add Sidekiq 6.1+ support.
5
+ ([@hmaack])
6
+
1
7
  ## 0.12.0 (2020-06-22)
2
8
 
3
9
  * [#80](https://github.com/sensortower/sidekiq-throttled/pull/80)
@@ -214,3 +220,4 @@
214
220
  [@ogins57]: https://github.com/ogins57
215
221
  [@lenon]: https://github.com/lenon
216
222
  [@vaot]: https://github.com/vaot
223
+ [@hmaack]: https://github.com/hmaack
data/README.md CHANGED
@@ -235,6 +235,7 @@ This library aims to support work with following [Sidekiq][sidekiq] versions:
235
235
  * Sidekiq 5.1.x
236
236
  * Sidekiq 5.2.x
237
237
  * Sidekiq 6.0.x
238
+ * Sidekiq 6.1.x
238
239
 
239
240
 
240
241
  ## Contributing
@@ -0,0 +1,31 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "appraisal"
6
+ gem "rake"
7
+ gem "rspec"
8
+ gem "rubocop", "~> 0.82.0", require: false
9
+ gem "rubocop-performance", "~>1.5.2", require: false
10
+ gem "rubocop-rspec", "~> 1.39.0", require: false
11
+ gem "sidekiq", "~> 6.1.0"
12
+
13
+ group :development do
14
+ gem "byebug"
15
+ gem "guard", require: false
16
+ gem "guard-rspec", require: false
17
+ gem "guard-rubocop", require: false
18
+ end
19
+
20
+ group :test do
21
+ gem "apparition"
22
+ gem "capybara"
23
+ gem "coveralls", require: false
24
+ gem "puma"
25
+ gem "rack-test"
26
+ gem "simplecov"
27
+ gem "sinatra"
28
+ gem "timecop"
29
+ end
30
+
31
+ gemspec path: "../"
@@ -61,8 +61,7 @@ module Sidekiq
61
61
  QueuesPauser.instance.setup!
62
62
 
63
63
  Sidekiq.configure_server do |config|
64
- require "sidekiq/throttled/fetch"
65
- Sidekiq.options[:fetch] = Sidekiq::Throttled::Fetch
64
+ setup_strategy!
66
65
 
67
66
  require "sidekiq/throttled/middleware"
68
67
  config.server_middleware do |chain|
@@ -93,6 +92,19 @@ module Sidekiq
93
92
 
94
93
  private
95
94
 
95
+ # @return [void]
96
+ def setup_strategy!
97
+ require "sidekiq/throttled/fetch"
98
+
99
+ # https://github.com/mperham/sidekiq/commit/fce05c9d4b4c0411c982078a4cf3a63f20f739bc
100
+ Sidekiq.options[:fetch] =
101
+ if Gem::Version.new(Sidekiq::VERSION) < Gem::Version.new("6.1.0")
102
+ Sidekiq::Throttled::Fetch
103
+ else
104
+ Sidekiq::Throttled::Fetch.new(Sidekiq.options)
105
+ end
106
+ end
107
+
96
108
  # Tries to preload constant by it's name once.
97
109
  #
98
110
  # Somehow, sometimes, some classes are not eager loaded upon Rails init,
@@ -12,6 +12,29 @@ module Sidekiq
12
12
  #
13
13
  # @private
14
14
  class Fetch
15
+ module BulkRequeue
16
+ # Requeues all given units as a single operation.
17
+ #
18
+ # @see http://www.rubydoc.info/github/redis/redis-rb/master/Redis#pipelined-instance_method
19
+ # @param [Array<Fetch::UnitOfWork>] units
20
+ # @return [void]
21
+ def bulk_requeue(units, _options)
22
+ return if units.empty?
23
+
24
+ Sidekiq.logger.debug { "Re-queueing terminated jobs" }
25
+ Sidekiq.redis { |conn| conn.pipelined { units.each(&:requeue) } }
26
+ Sidekiq.logger.info("Pushed #{units.size} jobs back to Redis")
27
+ rescue => e
28
+ Sidekiq.logger.warn("Failed to requeue #{units.size} jobs: #{e}")
29
+ end
30
+ end
31
+
32
+ # https://github.com/mperham/sidekiq/commit/fce05c9d4b4c0411c982078a4cf3a63f20f739bc
33
+ if Gem::Version.new(Sidekiq::VERSION) < Gem::Version.new("6.1.0")
34
+ extend BulkRequeue
35
+ else
36
+ include BulkRequeue
37
+ end
15
38
  # Timeout to sleep between fetch retries in case of no job received,
16
39
  # as well as timeout to wait for redis to give us something to work.
17
40
  TIMEOUT = 2
@@ -50,23 +73,6 @@ module Sidekiq
50
73
  nil
51
74
  end
52
75
 
53
- class << self
54
- # Requeues all given units as a single operation.
55
- #
56
- # @see http://www.rubydoc.info/github/redis/redis-rb/master/Redis#pipelined-instance_method
57
- # @param [Array<Fetch::UnitOfWork>] units
58
- # @return [void]
59
- def bulk_requeue(units, _options)
60
- return if units.empty?
61
-
62
- Sidekiq.logger.debug { "Re-queueing terminated jobs" }
63
- Sidekiq.redis { |conn| conn.pipelined { units.each(&:requeue) } }
64
- Sidekiq.logger.info("Pushed #{units.size} jobs back to Redis")
65
- rescue => e
66
- Sidekiq.logger.warn("Failed to requeue #{units.size} jobs: #{e}")
67
- end
68
- end
69
-
70
76
  private
71
77
 
72
78
  # Tries to pop pair of `queue` and job `message` out of sidekiq queues.
@@ -3,6 +3,6 @@
3
3
  module Sidekiq
4
4
  module Throttled
5
5
  # Gem version
6
- VERSION = "0.12.0"
6
+ VERSION = "0.13.0"
7
7
  end
8
8
  end
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-throttled
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.12.0
4
+ version: 0.13.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexey V Zapparov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2020-06-22 00:00:00.000000000 Z
11
+ date: 2020-07-28 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -92,6 +92,7 @@ files:
92
92
  - gemfiles/sidekiq_5.1.gemfile
93
93
  - gemfiles/sidekiq_5.2.gemfile
94
94
  - gemfiles/sidekiq_6.0.gemfile
95
+ - gemfiles/sidekiq_6.1.gemfile
95
96
  - lib/sidekiq/throttled.rb
96
97
  - lib/sidekiq/throttled/communicator.rb
97
98
  - lib/sidekiq/throttled/communicator/callbacks.rb
@@ -142,8 +143,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
142
143
  - !ruby/object:Gem::Version
143
144
  version: '0'
144
145
  requirements: []
145
- rubyforge_project:
146
- rubygems_version: 2.7.6.2
146
+ rubygems_version: 3.1.2
147
147
  signing_key:
148
148
  specification_version: 4
149
149
  summary: Concurrency and threshold throttling for Sidekiq.