sidekiq-throttled 0.16.2 → 0.17.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: 8f13258e6221758892919e37d8d233b33b52f46d3e6ae4f61700f009f1bb0553
4
- data.tar.gz: a50132e8af4521c5c2d4f8edc3bcdc8d823160bd7c7ad2980bce6c4b10a29087
3
+ metadata.gz: 1a4884da942e03171d7265651258f4da2ca601aa36219192b325a2ce0ff113fd
4
+ data.tar.gz: 7b1d20e64db0cf3720f4b404a95744b77de186da718feb7f6abd7cd23623e08d
5
5
  SHA512:
6
- metadata.gz: 5cb7186478fa6eced7c69086aee8b7ba626b504db5d2b594bd416a3ce24254d9670047216c92290cc023c578c8cb83ab4cce952f6dc568055ca00a7707b8ef27
7
- data.tar.gz: 44d7b64362ef7fd1fbf97e588c3048f249610f6613d3517ad3aa8a78f31447c93dd52ee2fa9fde84f84dc602620c1fa78081e29d96e78c43f327527f683ac953
6
+ metadata.gz: 93699777efb1fd7794a7e566d6b129b0898f8efb327627b2a17b5e3e595a100fedc8b5a064ab8331b61c553cdd4a3aa2f3ac57c76d9d677c16ef006df18c592d
7
+ data.tar.gz: 9aaa27dbd6c116fbeac961cb8f8d1413bc1b9ff84241cfa81ce4b63b479a0b2386d6de8c94a6176a461d4f50867ce80957fd4b4569b5bd9db377d41fafbb247c
@@ -14,7 +14,7 @@ jobs:
14
14
  fail-fast: false
15
15
  matrix:
16
16
  ruby: [ "2.7", "3.0", "3.1" ]
17
- sidekiq: [ "6.0", "6.1", "6.2", "6.3", "6.4", "6.5" ]
17
+ sidekiq: [ "6.4", "6.5" ]
18
18
 
19
19
  runs-on: ubuntu-latest
20
20
 
data/.travis.yml CHANGED
@@ -33,7 +33,5 @@ matrix:
33
33
  gemfile: Gemfile
34
34
 
35
35
  gemfile:
36
- - gemfiles/sidekiq_5.0.gemfile
37
- - gemfiles/sidekiq_5.1.gemfile
38
- - gemfiles/sidekiq_5.2.gemfile
39
- - gemfiles/sidekiq_6.0.gemfile
36
+ - gemfiles/sidekiq_6.4.gemfile
37
+ - gemfiles/sidekiq_6.5.gemfile
data/Appraisals CHANGED
@@ -1,21 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
- appraise "sidekiq-6.0" do
4
- gem "sidekiq", "~> 6.0.0"
5
- end
6
-
7
- appraise "sidekiq-6.1" do
8
- gem "sidekiq", "~> 6.1.0"
9
- end
10
-
11
- appraise "sidekiq-6.2" do
12
- gem "sidekiq", "~> 6.2.0"
13
- end
14
-
15
- appraise "sidekiq-6.3" do
16
- gem "sidekiq", "~> 6.3.0"
17
- end
18
-
19
3
  appraise "sidekiq-6.4" do
20
4
  gem "sidekiq", "~> 6.4.0"
21
5
  end
data/README.md CHANGED
@@ -266,10 +266,6 @@ dropped.
266
266
 
267
267
  This library aims to support work with following [Sidekiq][sidekiq] versions:
268
268
 
269
- * Sidekiq 6.0.x
270
- * Sidekiq 6.1.x
271
- * Sidekiq 6.2.x
272
- * Sidekiq 6.3.x
273
269
  * Sidekiq 6.4.x
274
270
  * Sidekiq 6.5.x
275
271
 
@@ -12,33 +12,6 @@ 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 do |conn|
26
- conn.pipelined do |pipeline|
27
- units.each { |unit| unit.requeue(pipeline) }
28
- end
29
- end
30
- Sidekiq.logger.info("Pushed #{units.size} jobs back to Redis")
31
- rescue => e
32
- Sidekiq.logger.warn("Failed to requeue #{units.size} jobs: #{e}")
33
- end
34
- end
35
-
36
- # https://github.com/mperham/sidekiq/commit/fce05c9d4b4c0411c982078a4cf3a63f20f739bc
37
- if Gem::Version.new(Sidekiq::VERSION) < Gem::Version.new("6.1.0")
38
- extend BulkRequeue
39
- else
40
- include BulkRequeue
41
- end
42
15
  # Timeout to sleep between fetch retries in case of no job received,
43
16
  # as well as timeout to wait for redis to give us something to work.
44
17
  TIMEOUT = 2
@@ -77,6 +50,20 @@ module Sidekiq
77
50
  nil
78
51
  end
79
52
 
53
+ def bulk_requeue(units, _options)
54
+ return if units.empty?
55
+
56
+ Sidekiq.logger.debug { "Re-queueing terminated jobs" }
57
+ Sidekiq.redis do |conn|
58
+ conn.pipelined do |pipeline|
59
+ units.each { |unit| unit.requeue(pipeline) }
60
+ end
61
+ end
62
+ Sidekiq.logger.info("Pushed #{units.size} jobs back to Redis")
63
+ rescue => e
64
+ Sidekiq.logger.warn("Failed to requeue #{units.size} jobs: #{e}")
65
+ end
66
+
80
67
  private
81
68
 
82
69
  # Tries to pop pair of `queue` and job `message` out of sidekiq queues.
@@ -91,7 +78,7 @@ module Sidekiq
91
78
  return
92
79
  end
93
80
 
94
- Sidekiq.redis { |conn| conn.brpop(*queues, TIMEOUT) }
81
+ Sidekiq.redis { |conn| conn.brpop(*queues, :timeout => TIMEOUT) }
95
82
  end
96
83
 
97
84
  # Returns list of queues to try to fetch jobs from.
@@ -3,6 +3,6 @@
3
3
  module Sidekiq
4
4
  module Throttled
5
5
  # Gem version
6
- VERSION = "0.16.2"
6
+ VERSION = "0.17.0"
7
7
  end
8
8
  end
@@ -97,18 +97,10 @@ module Sidekiq
97
97
  def setup_strategy!(sidekiq_config)
98
98
  require "sidekiq/throttled/fetch"
99
99
 
100
- sidekiq_version = Gem::Version.new(Sidekiq::VERSION)
101
-
102
100
  # https://github.com/mperham/sidekiq/commit/67daa7a408b214d593100f782271ed108686c147
103
- sidekiq_config = sidekiq_config.options if sidekiq_version < Gem::Version.new("6.5.0")
104
-
105
- # https://github.com/mperham/sidekiq/commit/fce05c9d4b4c0411c982078a4cf3a63f20f739bc
106
- sidekiq_config[:fetch] =
107
- if Gem::Version.new(Sidekiq::VERSION) < Gem::Version.new("6.1.0")
108
- Sidekiq::Throttled::Fetch
109
- else
110
- Sidekiq::Throttled::Fetch.new(sidekiq_config)
111
- end
101
+ sidekiq_config = sidekiq_config.options if Gem::Version.new(Sidekiq::VERSION) < Gem::Version.new("6.5.0")
102
+
103
+ sidekiq_config[:fetch] = Sidekiq::Throttled::Fetch.new(sidekiq_config)
112
104
  end
113
105
 
114
106
  # Tries to preload constant by it's name once.
@@ -30,7 +30,7 @@ Gem::Specification.new do |spec|
30
30
 
31
31
  spec.add_runtime_dependency "concurrent-ruby"
32
32
  spec.add_runtime_dependency "redis-prescription"
33
- spec.add_runtime_dependency "sidekiq"
33
+ spec.add_runtime_dependency "sidekiq", ">= 6.4"
34
34
 
35
35
  spec.add_development_dependency "bundler", ">= 2.0"
36
36
  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.16.2
4
+ version: 0.17.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Alexey Zapparov
8
8
  autorequire:
9
9
  bindir: exe
10
10
  cert_chain: []
11
- date: 2022-07-19 00:00:00.000000000 Z
11
+ date: 2022-09-14 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: concurrent-ruby
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '0'
47
+ version: '6.4'
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '0'
54
+ version: '6.4'
55
55
  - !ruby/object:Gem::Dependency
56
56
  name: bundler
57
57
  requirement: !ruby/object:Gem::Requirement
@@ -89,10 +89,6 @@ files:
89
89
  - LICENSE.md
90
90
  - README.md
91
91
  - Rakefile
92
- - gemfiles/sidekiq_6.0.gemfile
93
- - gemfiles/sidekiq_6.1.gemfile
94
- - gemfiles/sidekiq_6.2.gemfile
95
- - gemfiles/sidekiq_6.3.gemfile
96
92
  - gemfiles/sidekiq_6.4.gemfile
97
93
  - gemfiles/sidekiq_6.5.gemfile
98
94
  - lib/sidekiq/throttled.rb
@@ -155,7 +151,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
155
151
  - !ruby/object:Gem::Version
156
152
  version: '0'
157
153
  requirements: []
158
- rubygems_version: 3.1.6
154
+ rubygems_version: 3.2.33
159
155
  signing_key:
160
156
  specification_version: 4
161
157
  summary: Concurrency and threshold throttling for Sidekiq.
@@ -1,33 +0,0 @@
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 "sidekiq", "~> 6.0.0"
9
-
10
- group :development do
11
- gem "byebug"
12
- gem "guard", require: false
13
- gem "guard-rspec", require: false
14
- gem "guard-rubocop", require: false
15
- end
16
-
17
- group :test do
18
- gem "apparition"
19
- gem "capybara"
20
- gem "puma"
21
- gem "rack-test"
22
- gem "sinatra"
23
- gem "timecop"
24
- end
25
-
26
- group :lint do
27
- gem "rubocop", require: false
28
- gem "rubocop-performance", require: false
29
- gem "rubocop-rake", require: false
30
- gem "rubocop-rspec", require: false
31
- end
32
-
33
- gemspec path: "../"
@@ -1,33 +0,0 @@
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 "sidekiq", "~> 6.1.0"
9
-
10
- group :development do
11
- gem "byebug"
12
- gem "guard", require: false
13
- gem "guard-rspec", require: false
14
- gem "guard-rubocop", require: false
15
- end
16
-
17
- group :test do
18
- gem "apparition"
19
- gem "capybara"
20
- gem "puma"
21
- gem "rack-test"
22
- gem "sinatra"
23
- gem "timecop"
24
- end
25
-
26
- group :lint do
27
- gem "rubocop", require: false
28
- gem "rubocop-performance", require: false
29
- gem "rubocop-rake", require: false
30
- gem "rubocop-rspec", require: false
31
- end
32
-
33
- gemspec path: "../"
@@ -1,33 +0,0 @@
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 "sidekiq", "~> 6.2.0"
9
-
10
- group :development do
11
- gem "byebug"
12
- gem "guard", require: false
13
- gem "guard-rspec", require: false
14
- gem "guard-rubocop", require: false
15
- end
16
-
17
- group :test do
18
- gem "apparition"
19
- gem "capybara"
20
- gem "puma"
21
- gem "rack-test"
22
- gem "sinatra"
23
- gem "timecop"
24
- end
25
-
26
- group :lint do
27
- gem "rubocop", require: false
28
- gem "rubocop-performance", require: false
29
- gem "rubocop-rake", require: false
30
- gem "rubocop-rspec", require: false
31
- end
32
-
33
- gemspec path: "../"
@@ -1,33 +0,0 @@
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 "sidekiq", "~> 6.3.0"
9
-
10
- group :development do
11
- gem "byebug"
12
- gem "guard", require: false
13
- gem "guard-rspec", require: false
14
- gem "guard-rubocop", require: false
15
- end
16
-
17
- group :test do
18
- gem "apparition"
19
- gem "capybara"
20
- gem "puma"
21
- gem "rack-test"
22
- gem "sinatra"
23
- gem "timecop"
24
- end
25
-
26
- group :lint do
27
- gem "rubocop", require: false
28
- gem "rubocop-performance", require: false
29
- gem "rubocop-rake", require: false
30
- gem "rubocop-rspec", require: false
31
- end
32
-
33
- gemspec path: "../"