sidekiq-limit_fetch 3.4.0 → 4.2.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.
@@ -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: