sidekiq-limit_fetch 3.4.0 → 4.2.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,53 @@
1
+ PATH
2
+ remote: ..
3
+ specs:
4
+ sidekiq-limit_fetch (4.1.0)
5
+ redis (>= 4.6.0)
6
+ sidekiq (>= 4)
7
+
8
+ GEM
9
+ remote: https://rubygems.org/
10
+ specs:
11
+ appraisal (2.4.1)
12
+ bundler
13
+ rake
14
+ thor (>= 0.14.0)
15
+ connection_pool (2.2.5)
16
+ diff-lcs (1.5.0)
17
+ rack (2.2.3.1)
18
+ rake (13.0.6)
19
+ redis (4.6.0)
20
+ redis-namespace (1.8.2)
21
+ redis (>= 3.0.4)
22
+ rspec (3.11.0)
23
+ rspec-core (~> 3.11.0)
24
+ rspec-expectations (~> 3.11.0)
25
+ rspec-mocks (~> 3.11.0)
26
+ rspec-core (3.11.0)
27
+ rspec-support (~> 3.11.0)
28
+ rspec-expectations (3.11.0)
29
+ diff-lcs (>= 1.2.0, < 2.0)
30
+ rspec-support (~> 3.11.0)
31
+ rspec-mocks (3.11.1)
32
+ diff-lcs (>= 1.2.0, < 2.0)
33
+ rspec-support (~> 3.11.0)
34
+ rspec-support (3.11.0)
35
+ sidekiq (6.5.0)
36
+ connection_pool (>= 2.2.2)
37
+ rack (~> 2.0)
38
+ redis (>= 4.2.0)
39
+ thor (1.2.1)
40
+
41
+ PLATFORMS
42
+ x86_64-linux
43
+
44
+ DEPENDENCIES
45
+ appraisal
46
+ rake
47
+ redis-namespace (~> 1.5, >= 1.5.2)
48
+ rspec
49
+ sidekiq (~> 6.5.0)
50
+ sidekiq-limit_fetch!
51
+
52
+ BUNDLED WITH
53
+ 2.3.5
@@ -0,0 +1,7 @@
1
+ # This file was generated by Appraisal
2
+
3
+ source "https://rubygems.org"
4
+
5
+ gem "sidekiq", github: "mperham/sidekiq"
6
+
7
+ gemspec path: "../"
@@ -0,0 +1,58 @@
1
+ GIT
2
+ remote: https://github.com/mperham/sidekiq.git
3
+ revision: 277ea1888f25917e9dde8d00bdb866f86a55691f
4
+ specs:
5
+ sidekiq (6.5.0)
6
+ connection_pool (>= 2.2.2)
7
+ rack (~> 2.0)
8
+ redis (>= 4.2.0)
9
+
10
+ PATH
11
+ remote: ..
12
+ specs:
13
+ sidekiq-limit_fetch (4.1.0)
14
+ redis (>= 4.6.0)
15
+ sidekiq (>= 4)
16
+
17
+ GEM
18
+ remote: https://rubygems.org/
19
+ specs:
20
+ appraisal (2.4.1)
21
+ bundler
22
+ rake
23
+ thor (>= 0.14.0)
24
+ connection_pool (2.2.5)
25
+ diff-lcs (1.5.0)
26
+ rack (2.2.3.1)
27
+ rake (13.0.6)
28
+ redis (4.6.0)
29
+ redis-namespace (1.8.2)
30
+ redis (>= 3.0.4)
31
+ rspec (3.11.0)
32
+ rspec-core (~> 3.11.0)
33
+ rspec-expectations (~> 3.11.0)
34
+ rspec-mocks (~> 3.11.0)
35
+ rspec-core (3.11.0)
36
+ rspec-support (~> 3.11.0)
37
+ rspec-expectations (3.11.0)
38
+ diff-lcs (>= 1.2.0, < 2.0)
39
+ rspec-support (~> 3.11.0)
40
+ rspec-mocks (3.11.1)
41
+ diff-lcs (>= 1.2.0, < 2.0)
42
+ rspec-support (~> 3.11.0)
43
+ rspec-support (3.11.0)
44
+ thor (1.2.1)
45
+
46
+ PLATFORMS
47
+ x86_64-linux
48
+
49
+ DEPENDENCIES
50
+ appraisal
51
+ rake
52
+ redis-namespace (~> 1.5, >= 1.5.2)
53
+ rspec
54
+ sidekiq!
55
+ sidekiq-limit_fetch!
56
+
57
+ BUNDLED WITH
58
+ 2.3.14
@@ -6,7 +6,8 @@ class Sidekiq::Manager
6
6
  end
7
7
 
8
8
  def start
9
- Sidekiq::LimitFetch::Queues.start options
9
+ # In sidekiq 6.5.0 the variable @options has been renamed to @config
10
+ Sidekiq::LimitFetch::Queues.start @options || @config
10
11
  Sidekiq::LimitFetch::Global::Monitor.start!
11
12
  super
12
13
  end
@@ -14,7 +14,8 @@ module Sidekiq
14
14
  :probed, :busy,
15
15
  :increase_busy, :decrease_busy,
16
16
  :local_busy?, :explain,
17
- :remove_locks_except!
17
+ :remove_locks_except!,
18
+ :clear_limits
18
19
 
19
20
  def lock
20
21
  @lock ||= LimitFetch::Global::Semaphore.new name
@@ -11,7 +11,7 @@ module Sidekiq::LimitFetch::Global
11
11
  Thread.new do
12
12
  loop do
13
13
  Sidekiq::LimitFetch.redis_retryable do
14
- add_dynamic_queues
14
+ handle_dynamic_queues
15
15
  update_heartbeat ttl
16
16
  invalidate_old_processes
17
17
  end
@@ -37,19 +37,19 @@ module Sidekiq::LimitFetch::Global
37
37
  end
38
38
  end
39
39
 
40
- def add_dynamic_queues
40
+ def handle_dynamic_queues
41
41
  queues = Sidekiq::LimitFetch::Queues
42
- queues.add Sidekiq::Queue.all.map(&:name) if queues.dynamic?
42
+ queues.handle Sidekiq::Queue.all.map(&:name) if queues.dynamic?
43
43
  end
44
44
 
45
45
  private
46
46
 
47
47
  def update_heartbeat(ttl)
48
48
  Sidekiq.redis do |it|
49
- it.multi do
50
- it.set heartbeat_key, true
51
- it.sadd PROCESS_SET, Selector.uuid
52
- it.expire heartbeat_key, ttl
49
+ it.multi do |pipeline|
50
+ pipeline.set heartbeat_key, true
51
+ pipeline.sadd PROCESS_SET, Selector.uuid
52
+ pipeline.expire heartbeat_key, ttl
53
53
  end
54
54
  end
55
55
  end
@@ -109,6 +109,14 @@ module Sidekiq::LimitFetch::Global
109
109
  redis {|it| it.get "#{PREFIX}:block:#@name" }
110
110
  end
111
111
 
112
+ def clear_limits
113
+ redis do |it|
114
+ %w(block busy limit pause probed process_limit).each do |key|
115
+ it.del "#{PREFIX}:#{key}:#@name"
116
+ end
117
+ end
118
+ end
119
+
112
120
  def increase_local_busy
113
121
  @lock.synchronize { @local_busy += 1 }
114
122
  end
@@ -16,4 +16,8 @@ module Sidekiq::LimitFetch::Instances
16
16
  def reset_instances!
17
17
  @instances = {}
18
18
  end
19
+
20
+ def delete_instance(name)
21
+ @instances.delete [name]
22
+ end
19
23
  end
@@ -5,6 +5,7 @@ module Sidekiq::LimitFetch::Queues
5
5
 
6
6
  def start(options)
7
7
  @queues = options[:queues]
8
+ @startup_queues = options[:queues].dup
8
9
  @dynamic = options[:dynamic]
9
10
 
10
11
  @limits = options[:limits] || {}
@@ -19,15 +20,17 @@ module Sidekiq::LimitFetch::Queues
19
20
  end
20
21
 
21
22
  def acquire
22
- selector.acquire(ordered_queues, namespace)
23
- .tap {|it| save it }
24
- .map {|it| "queue:#{it}" }
23
+ queues = saved
24
+ queues ||= Sidekiq::LimitFetch.redis_retryable do
25
+ selector.acquire(ordered_queues, namespace)
26
+ end
27
+ save queues
28
+ queues.map { |it| "queue:#{it}" }
25
29
  end
26
30
 
27
31
  def release_except(full_name)
28
32
  queues = restore
29
33
  queues.delete full_name[/queue:(.*)/, 1] if full_name
30
-
31
34
  Sidekiq::LimitFetch.redis_retryable do
32
35
  selector.release queues, namespace
33
36
  end
@@ -37,17 +40,40 @@ module Sidekiq::LimitFetch::Queues
37
40
  @dynamic
38
41
  end
39
42
 
43
+ def startup_queue?(queue)
44
+ @startup_queues.include?(queue)
45
+ end
46
+
40
47
  def add(queues)
48
+ return unless queues
41
49
  queues.each do |queue|
42
50
  unless @queues.include? queue
43
- apply_process_limit_to_queue(queue)
44
- apply_limit_to_queue(queue)
51
+ if startup_queue?(queue)
52
+ apply_process_limit_to_queue(queue)
53
+ apply_limit_to_queue(queue)
54
+ end
45
55
 
46
56
  @queues.push queue
47
57
  end
48
58
  end
49
59
  end
50
60
 
61
+ def remove(queues)
62
+ return unless queues
63
+ queues.each do |queue|
64
+ if @queues.include? queue
65
+ clear_limits_for_queue(queue)
66
+ @queues.delete queue
67
+ Sidekiq::Queue.delete_instance(queue)
68
+ end
69
+ end
70
+ end
71
+
72
+ def handle(queues)
73
+ add(queues - @queues)
74
+ remove(@queues - queues)
75
+ end
76
+
51
77
  def strict_order!
52
78
  @queues.uniq!
53
79
  def ordered_queues; @queues end
@@ -108,17 +134,26 @@ module Sidekiq::LimitFetch::Queues
108
134
  end
109
135
  end
110
136
 
137
+ def clear_limits_for_queue(queue_name)
138
+ queue = Sidekiq::Queue[queue_name]
139
+ queue.clear_limits
140
+ end
141
+
111
142
  def selector
112
143
  Sidekiq::LimitFetch::Global::Selector
113
144
  end
114
145
 
146
+ def saved
147
+ Thread.current[THREAD_KEY]
148
+ end
149
+
115
150
  def save(queues)
116
151
  Thread.current[THREAD_KEY] = queues
117
152
  end
118
153
 
119
154
  def restore
120
- Thread.current[THREAD_KEY] || []
155
+ saved || []
121
156
  ensure
122
- Thread.current[THREAD_KEY] = nil
157
+ save nil
123
158
  end
124
159
  end
@@ -14,6 +14,8 @@ module Sidekiq::LimitFetch
14
14
  require_relative 'extensions/queue'
15
15
  require_relative 'extensions/manager'
16
16
 
17
+ TIMEOUT = Sidekiq::BasicFetch::TIMEOUT
18
+
17
19
  extend self
18
20
 
19
21
  def new(_)
@@ -26,21 +28,34 @@ module Sidekiq::LimitFetch
26
28
  UnitOfWork.new(queue, job) if job
27
29
  end
28
30
 
31
+ # Backwards compatibility for sidekiq v6.1.0
32
+ # @see https://github.com/mperham/sidekiq/pull/4602
29
33
  def bulk_requeue(*args)
30
- Sidekiq::BasicFetch.bulk_requeue(*args)
34
+ if Sidekiq::BasicFetch.respond_to?(:bulk_requeue) # < 6.1.0
35
+ Sidekiq::BasicFetch.bulk_requeue(*args)
36
+ else # 6.1.0+
37
+ Sidekiq::BasicFetch.new(Sidekiq.options).bulk_requeue(*args)
38
+ end
31
39
  end
32
40
 
33
41
  def redis_retryable
34
42
  yield
35
43
  rescue Redis::BaseConnectionError
36
- sleep 1
44
+ sleep TIMEOUT
37
45
  retry
46
+ rescue Redis::CommandError => error
47
+ # If Redis was restarted and is still loading its snapshot,
48
+ # then we should treat this as a temporary connection error too.
49
+ if error.message =~ /^LOADING/
50
+ sleep TIMEOUT
51
+ retry
52
+ else
53
+ raise
54
+ end
38
55
  end
39
56
 
40
57
  private
41
58
 
42
- TIMEOUT = Sidekiq::BasicFetch::TIMEOUT
43
-
44
59
  def redis_brpop(queues)
45
60
  if queues.empty?
46
61
  sleep TIMEOUT # there are no queues to handle, so lets sleep
@@ -1,22 +1,25 @@
1
1
  Gem::Specification.new do |gem|
2
2
  gem.name = 'sidekiq-limit_fetch'
3
- gem.version = '3.4.0'
3
+ gem.version = '4.2.0'
4
4
  gem.license = 'MIT'
5
- gem.authors = 'brainopia'
6
- gem.email = 'brainopia@evilmartians.com'
5
+ gem.authors = ['Dean Perry', 'brainopia']
6
+ gem.email = 'dean@deanpcmad.com'
7
7
  gem.summary = 'Sidekiq strategy to support queue limits'
8
- gem.homepage = 'https://github.com/brainopia/sidekiq-limit_fetch'
9
- gem.description = <<-DESCRIPTION
10
- Sidekiq strategy to restrict number of workers
11
- which are able to run specified queues simultaneously.
12
- DESCRIPTION
8
+ gem.homepage = 'https://github.com/deanpcmad/sidekiq-limit_fetch'
9
+ gem.description = "Sidekiq strategy to restrict number of workers which are able to run specified queues simultaneously."
10
+
11
+ gem.metadata["homepage_uri"] = gem.homepage
12
+ gem.metadata["source_code_uri"] = "https://github.com/deanpcmad/sidekiq-limit_fetch"
13
+ gem.metadata["changelog_uri"] = "https://github.com/deanpcmad/sidekiq-limit_fetch/blob/master/CHANGELOG.md"
13
14
 
14
15
  gem.files = `git ls-files`.split($/)
15
16
  gem.test_files = gem.files.grep %r{^spec/}
16
17
  gem.require_paths = %w(lib)
17
18
 
18
19
  gem.add_dependency 'sidekiq', '>= 4'
20
+ gem.add_dependency 'redis', '>= 4.6.0'
19
21
  gem.add_development_dependency 'redis-namespace', '~> 1.5', '>= 1.5.2'
22
+ gem.add_development_dependency 'appraisal'
20
23
  gem.add_development_dependency 'rspec'
21
24
  gem.add_development_dependency 'rake'
22
25
  end
@@ -15,61 +15,72 @@ RSpec.describe Sidekiq::LimitFetch::Queues do
15
15
 
16
16
  before { subject.start options }
17
17
 
18
+ def in_thread(&block)
19
+ thr = Thread.new(&block)
20
+ thr.join
21
+ end
22
+
18
23
  it 'should acquire queues' do
19
- subject.acquire
24
+ in_thread { subject.acquire }
20
25
  expect(Sidekiq::Queue['queue1'].probed).to eq 1
21
26
  expect(Sidekiq::Queue['queue2'].probed).to eq 1
22
27
  end
23
28
 
24
29
  it 'should acquire dynamically blocking queues' do
25
- subject.acquire
30
+ in_thread { subject.acquire }
26
31
  expect(Sidekiq::Queue['queue1'].probed).to eq 1
27
32
  expect(Sidekiq::Queue['queue2'].probed).to eq 1
28
33
 
29
34
  Sidekiq::Queue['queue1'].block
30
35
 
31
- subject.acquire
36
+ in_thread { subject.acquire }
32
37
  expect(Sidekiq::Queue['queue1'].probed).to eq 2
33
38
  expect(Sidekiq::Queue['queue2'].probed).to eq 1
34
39
  end
35
40
 
36
41
  it 'should block except given queues' do
37
42
  Sidekiq::Queue['queue1'].block_except 'queue2'
38
- subject.acquire
43
+ in_thread { subject.acquire }
39
44
  expect(Sidekiq::Queue['queue1'].probed).to eq 1
40
45
  expect(Sidekiq::Queue['queue2'].probed).to eq 1
41
46
 
42
47
  Sidekiq::Queue['queue1'].block_except 'queue404'
43
- subject.acquire
48
+ in_thread { subject.acquire }
44
49
  expect(Sidekiq::Queue['queue1'].probed).to eq 2
45
50
  expect(Sidekiq::Queue['queue2'].probed).to eq 1
46
51
  end
47
52
 
48
53
  it 'should release queues' do
49
- subject.acquire
50
- subject.release_except nil
54
+ in_thread {
55
+ subject.acquire
56
+ subject.release_except nil
57
+ }
51
58
  expect(Sidekiq::Queue['queue1'].probed).to eq 0
52
59
  expect(Sidekiq::Queue['queue2'].probed).to eq 0
53
60
  end
54
61
 
55
62
  it 'should release queues except selected' do
56
- subject.acquire
57
- subject.release_except 'queue:queue1'
63
+ in_thread {
64
+ subject.acquire
65
+ subject.release_except 'queue:queue1'
66
+ }
58
67
  expect(Sidekiq::Queue['queue1'].probed).to eq 1
59
68
  expect(Sidekiq::Queue['queue2'].probed).to eq 0
60
69
  end
61
70
 
62
71
  it 'should release when no queues was acquired' do
63
72
  queues.each {|name| Sidekiq::Queue[name].pause }
64
- subject.acquire
65
- expect { subject.release_except nil }.not_to raise_exception
73
+ in_thread {
74
+ subject.acquire
75
+ expect { subject.release_except nil }.not_to raise_exception
76
+ }
66
77
  end
67
78
 
68
79
  context 'blocking' do
69
80
  let(:blocking) { %w(queue1) }
70
81
 
71
82
  it 'should acquire blocking queues' do
72
- 3.times { subject.acquire }
83
+ 3.times { in_thread { subject.acquire } }
73
84
  expect(Sidekiq::Queue['queue1'].probed).to eq 3
74
85
  expect(Sidekiq::Queue['queue2'].probed).to eq 1
75
86
  end
@@ -6,7 +6,7 @@ RSpec.describe Sidekiq::LimitFetch do
6
6
  let(:limits) {{ 'queue1' => 1, 'queue2' => 2 }}
7
7
 
8
8
  before do
9
- subject::Queues.start options
9
+ subject::Queues.start options
10
10
 
11
11
  Sidekiq.redis do |it|
12
12
  it.del 'queue:queue1'
data/spec/spec_helper.rb CHANGED
@@ -11,13 +11,13 @@ RSpec.configure do |config|
11
11
  Sidekiq::Queue.reset_instances!
12
12
  Sidekiq.redis do |it|
13
13
  clean_redis = ->(queue) do
14
- it.pipelined do
15
- it.del "limit_fetch:limit:#{queue}"
16
- it.del "limit_fetch:process_limit:#{queue}"
17
- it.del "limit_fetch:busy:#{queue}"
18
- it.del "limit_fetch:probed:#{queue}"
19
- it.del "limit_fetch:pause:#{queue}"
20
- it.del "limit_fetch:block:#{queue}"
14
+ it.pipelined do |pipeline|
15
+ pipeline.del "limit_fetch:limit:#{queue}"
16
+ pipeline.del "limit_fetch:process_limit:#{queue}"
17
+ pipeline.del "limit_fetch:busy:#{queue}"
18
+ pipeline.del "limit_fetch:probed:#{queue}"
19
+ pipeline.del "limit_fetch:pause:#{queue}"
20
+ pipeline.del "limit_fetch:block:#{queue}"
21
21
  end
22
22
  end
23
23
 
metadata CHANGED
@@ -1,14 +1,15 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq-limit_fetch
3
3
  version: !ruby/object:Gem::Version
4
- version: 3.4.0
4
+ version: 4.2.0
5
5
  platform: ruby
6
6
  authors:
7
+ - Dean Perry
7
8
  - brainopia
8
- autorequire:
9
+ autorequire:
9
10
  bindir: bin
10
11
  cert_chain: []
11
- date: 2016-10-13 00:00:00.000000000 Z
12
+ date: 2022-06-09 00:00:00.000000000 Z
12
13
  dependencies:
13
14
  - !ruby/object:Gem::Dependency
14
15
  name: sidekiq
@@ -17,13 +18,27 @@ dependencies:
17
18
  - - ">="
18
19
  - !ruby/object:Gem::Version
19
20
  version: '4'
21
+ type: :runtime
22
+ prerelease: false
20
23
  version_requirements: !ruby/object:Gem::Requirement
21
24
  requirements:
22
25
  - - ">="
23
26
  - !ruby/object:Gem::Version
24
27
  version: '4'
25
- prerelease: false
28
+ - !ruby/object:Gem::Dependency
29
+ name: redis
30
+ requirement: !ruby/object:Gem::Requirement
31
+ requirements:
32
+ - - ">="
33
+ - !ruby/object:Gem::Version
34
+ version: 4.6.0
26
35
  type: :runtime
36
+ prerelease: false
37
+ version_requirements: !ruby/object:Gem::Requirement
38
+ requirements:
39
+ - - ">="
40
+ - !ruby/object:Gem::Version
41
+ version: 4.6.0
27
42
  - !ruby/object:Gem::Dependency
28
43
  name: redis-namespace
29
44
  requirement: !ruby/object:Gem::Requirement
@@ -34,6 +49,8 @@ dependencies:
34
49
  - - ">="
35
50
  - !ruby/object:Gem::Version
36
51
  version: 1.5.2
52
+ type: :development
53
+ prerelease: false
37
54
  version_requirements: !ruby/object:Gem::Requirement
38
55
  requirements:
39
56
  - - "~>"
@@ -42,8 +59,20 @@ dependencies:
42
59
  - - ">="
43
60
  - !ruby/object:Gem::Version
44
61
  version: 1.5.2
45
- prerelease: false
62
+ - !ruby/object:Gem::Dependency
63
+ name: appraisal
64
+ requirement: !ruby/object:Gem::Requirement
65
+ requirements:
66
+ - - ">="
67
+ - !ruby/object:Gem::Version
68
+ version: '0'
46
69
  type: :development
70
+ prerelease: false
71
+ version_requirements: !ruby/object:Gem::Requirement
72
+ requirements:
73
+ - - ">="
74
+ - !ruby/object:Gem::Version
75
+ version: '0'
47
76
  - !ruby/object:Gem::Dependency
48
77
  name: rspec
49
78
  requirement: !ruby/object:Gem::Requirement
@@ -51,13 +80,13 @@ dependencies:
51
80
  - - ">="
52
81
  - !ruby/object:Gem::Version
53
82
  version: '0'
83
+ type: :development
84
+ prerelease: false
54
85
  version_requirements: !ruby/object:Gem::Requirement
55
86
  requirements:
56
87
  - - ">="
57
88
  - !ruby/object:Gem::Version
58
89
  version: '0'
59
- prerelease: false
60
- type: :development
61
90
  - !ruby/object:Gem::Dependency
62
91
  name: rake
63
92
  requirement: !ruby/object:Gem::Requirement
@@ -65,26 +94,27 @@ dependencies:
65
94
  - - ">="
66
95
  - !ruby/object:Gem::Version
67
96
  version: '0'
97
+ type: :development
98
+ prerelease: false
68
99
  version_requirements: !ruby/object:Gem::Requirement
69
100
  requirements:
70
101
  - - ">="
71
102
  - !ruby/object:Gem::Version
72
103
  version: '0'
73
- prerelease: false
74
- type: :development
75
- description: |2
76
- Sidekiq strategy to restrict number of workers
77
- which are able to run specified queues simultaneously.
78
- email: brainopia@evilmartians.com
104
+ description: Sidekiq strategy to restrict number of workers which are able to run
105
+ specified queues simultaneously.
106
+ email: dean@deanpcmad.com
79
107
  executables: []
80
108
  extensions: []
81
109
  extra_rdoc_files: []
82
110
  files:
111
+ - ".github/workflows/ci.yml"
83
112
  - ".gitignore"
84
113
  - ".rspec"
85
- - ".travis.yml"
114
+ - Appraisals
115
+ - CHANGELOG.md
86
116
  - Gemfile
87
- - LICENSE.txt
117
+ - LICENSE
88
118
  - README.md
89
119
  - Rakefile
90
120
  - bench/compare.rb
@@ -100,6 +130,20 @@ files:
100
130
  - demo/config/boot.rb
101
131
  - demo/config/environment.rb
102
132
  - demo/config/environments/development.rb
133
+ - gemfiles/sidekiq_6.0.gemfile
134
+ - gemfiles/sidekiq_6.0.gemfile.lock
135
+ - gemfiles/sidekiq_6.1.gemfile
136
+ - gemfiles/sidekiq_6.1.gemfile.lock
137
+ - gemfiles/sidekiq_6.2.gemfile
138
+ - gemfiles/sidekiq_6.2.gemfile.lock
139
+ - gemfiles/sidekiq_6.3.gemfile
140
+ - gemfiles/sidekiq_6.3.gemfile.lock
141
+ - gemfiles/sidekiq_6.4.gemfile
142
+ - gemfiles/sidekiq_6.4.gemfile.lock
143
+ - gemfiles/sidekiq_6.5.gemfile
144
+ - gemfiles/sidekiq_6.5.gemfile.lock
145
+ - gemfiles/sidekiq_master.gemfile
146
+ - gemfiles/sidekiq_master.gemfile.lock
103
147
  - lib/sidekiq-limit_fetch.rb
104
148
  - lib/sidekiq/extensions/manager.rb
105
149
  - lib/sidekiq/extensions/queue.rb
@@ -117,11 +161,14 @@ files:
117
161
  - spec/sidekiq/limit_fetch/semaphore_spec.rb
118
162
  - spec/sidekiq/limit_fetch_spec.rb
119
163
  - spec/spec_helper.rb
120
- homepage: https://github.com/brainopia/sidekiq-limit_fetch
164
+ homepage: https://github.com/deanpcmad/sidekiq-limit_fetch
121
165
  licenses:
122
166
  - MIT
123
- metadata: {}
124
- post_install_message:
167
+ metadata:
168
+ homepage_uri: https://github.com/deanpcmad/sidekiq-limit_fetch
169
+ source_code_uri: https://github.com/deanpcmad/sidekiq-limit_fetch
170
+ changelog_uri: https://github.com/deanpcmad/sidekiq-limit_fetch/blob/master/CHANGELOG.md
171
+ post_install_message:
125
172
  rdoc_options: []
126
173
  require_paths:
127
174
  - lib
@@ -136,9 +183,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
136
183
  - !ruby/object:Gem::Version
137
184
  version: '0'
138
185
  requirements: []
139
- rubyforge_project:
140
- rubygems_version: 2.6.4
141
- signing_key:
186
+ rubygems_version: 3.3.7
187
+ signing_key:
142
188
  specification_version: 4
143
189
  summary: Sidekiq strategy to support queue limits
144
190
  test_files: