sidekiq-throttled 0.3.1 → 0.3.2

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
  SHA1:
3
- metadata.gz: 77157db5b942df1a256b541b48cf882c0fb5fb9d
4
- data.tar.gz: ec125a7c26dbe885913a7c0b0ef4f104f9f6bfb5
3
+ metadata.gz: 89651103d182029649562546de86fa491ac2fd78
4
+ data.tar.gz: b5d7b35e556a536c6d721d1332d66605120f5918
5
5
  SHA512:
6
- metadata.gz: d162a63285e5959673f6d497bc5f5d54726279c879f8835a46ff79bd249b71c36516fc119dc93391a772ccb046d4ce6b018cc60db813cd9c33daf56eb40006fd
7
- data.tar.gz: d063e884b5d7bf613b64b53c14c410c2b64e995102a012363152ee907307d501f4af73fe5926828b3eaa3e3f17358cc78d46575cf343b662addfd6ea25d1ad6e
6
+ metadata.gz: a3a1c17f1b72f7e9afc361265519bf067b6460474b9396d19369c06c4d6a509e973500d5b9016b97ad948f753ab24ce18ff573f1d97d11f2649ae4c1471a0a72
7
+ data.tar.gz: 27e73f96f33a6c3acaaa0eb7b8ae25f6c5672cb8d57763df7e9a0cab32bd679184eaad46623b23f9e6de158a6ec0d9ace231e8f7b377d4e6dee0eed6ca2b29af
data/.travis.yml CHANGED
@@ -19,8 +19,10 @@ matrix:
19
19
  - rvm: rbx-2
20
20
  fast_finish: true
21
21
  gemfile:
22
- - gemfiles/sidekiq_3.gemfile
23
- - gemfiles/sidekiq_4.gemfile
22
+ - gemfiles/sidekiq_3.x.gemfile
23
+ - gemfiles/sidekiq_4.0.gemfile
24
+ - gemfiles/sidekiq_4.1.gemfile
25
+ - gemfiles/sidekiq_latest.gemfile
24
26
  before_install:
25
27
  - gem install bundler -v 1.10.6
26
28
  services:
data/Appraisals CHANGED
@@ -1,8 +1,16 @@
1
- appraise "sidekiq-3" do
1
+ appraise "sidekiq-3.x" do
2
2
  gem "celluloid"
3
3
  gem "sidekiq", "~> 3.0"
4
4
  end
5
5
 
6
- appraise "sidekiq-4" do
7
- gem "sidekiq", "~> 4.0"
6
+ appraise "sidekiq-4.0" do
7
+ gem "sidekiq", "~> 4.0.0"
8
+ end
9
+
10
+ appraise "sidekiq-4.1" do
11
+ gem "sidekiq", "~> 4.1.0"
12
+ end
13
+
14
+ appraise "sidekiq-latest" do
15
+ gem "sidekiq"
8
16
  end
data/CHANGES.md CHANGED
@@ -1,3 +1,10 @@
1
+ ## 0.3.2 (2016-05-16)
2
+
3
+ * [#13](https://github.com/sensortower/sidekiq-throttled/issues/13)
4
+ Fix throttled BasicFetch with strictly ordered queues on sidekiq 4.
5
+ ([@palanglung], [@ixti])
6
+
7
+
1
8
  ## 0.3.1 (2016-05-15)
2
9
 
3
10
  * Precalculate LUA script digests to reduce bandwidth upon nodes reload
@@ -26,3 +33,4 @@
26
33
 
27
34
  [@ixti]: https://github.com/ixti
28
35
  [@fhwang]: https://github.com/fhwang
36
+ [@palanglung]: https://github.com/palanglung
data/Gemfile CHANGED
@@ -1,7 +1,9 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  source "https://rubygems.org"
3
4
 
4
5
  gem "appraisal"
6
+ gem "rake"
5
7
  gem "rspec"
6
8
  gem "rubocop"
7
9
 
@@ -3,6 +3,7 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "appraisal"
6
+ gem "rake"
6
7
  gem "rspec"
7
8
  gem "rubocop"
8
9
  gem "celluloid"
@@ -0,0 +1,19 @@
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"
9
+ gem "sidekiq", "~> 4.0.0"
10
+
11
+ group :test do
12
+ gem "coveralls"
13
+ gem "rack-test"
14
+ gem "simplecov", ">= 0.9"
15
+ gem "sinatra", "~> 1.4", ">= 1.4.6"
16
+ gem "timecop"
17
+ end
18
+
19
+ gemspec :path => "../"
@@ -0,0 +1,19 @@
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"
9
+ gem "sidekiq", "~> 4.1.0"
10
+
11
+ group :test do
12
+ gem "coveralls"
13
+ gem "rack-test"
14
+ gem "simplecov", ">= 0.9"
15
+ gem "sinatra", "~> 1.4", ">= 1.4.6"
16
+ gem "timecop"
17
+ end
18
+
19
+ gemspec :path => "../"
@@ -3,9 +3,10 @@
3
3
  source "https://rubygems.org"
4
4
 
5
5
  gem "appraisal"
6
+ gem "rake"
6
7
  gem "rspec"
7
8
  gem "rubocop"
8
- gem "sidekiq", "~> 4.0"
9
+ gem "sidekiq"
9
10
 
10
11
  group :test do
11
12
  gem "coveralls"
@@ -1,8 +1,5 @@
1
1
  # frozen_string_literal: true
2
- # stdlib
3
- require "thread"
4
2
 
5
- # 3rd party
6
3
  require "celluloid" if Sidekiq::VERSION < "4.0.0"
7
4
  require "sidekiq"
8
5
  require "sidekiq/fetch"
@@ -17,12 +14,10 @@ module Sidekiq
17
14
  alias job message if Sidekiq::VERSION < "4.0.0"
18
15
  end
19
16
 
20
- # Class constructor
21
- def initialize(*args)
22
- @mutex = Mutex.new
23
- @suspended = []
24
-
25
- super(*args)
17
+ def initialize(options)
18
+ @strictly_ordered_queues = (options[:strict] ? true : false)
19
+ @queues = options[:queues].map { |q| "queue:#{q}" }
20
+ @queues.uniq! if @strictly_ordered_queues
26
21
  end
27
22
 
28
23
  # @return [Sidekiq::BasicFetch::UnitOfWork, nil]
@@ -35,7 +30,6 @@ module Sidekiq
35
30
 
36
31
  queue = "queue:#{work.queue_name}"
37
32
 
38
- @mutex.synchronize { @suspended << queue }
39
33
  Sidekiq.redis { |conn| conn.lpush(queue, work.job) }
40
34
 
41
35
  nil
@@ -46,23 +40,7 @@ module Sidekiq
46
40
  # Tries to pop pair of `queue` and job `message` out of sidekiq queue.
47
41
  # @return [Array<String, String>, nil]
48
42
  def brpop
49
- queues = if @strictly_ordered_queues
50
- @unique_queues.dup
51
- else
52
- @queues.shuffle.uniq
53
- end
54
-
55
- @mutex.synchronize do
56
- next if @suspended.empty?
57
- queues -= @suspended
58
- @suspended.clear
59
- end
60
-
61
- if queues.empty?
62
- sleep TIMEOUT
63
- return
64
- end
65
-
43
+ queues = (@strictly_ordered_queues ? @queues : @queues.shuffle.uniq)
66
44
  Sidekiq.redis { |conn| conn.brpop(*queues, TIMEOUT) }
67
45
  end
68
46
  end
@@ -1,7 +1,8 @@
1
1
  # frozen_string_literal: true
2
+
2
3
  module Sidekiq
3
4
  module Throttled
4
5
  # Gem version
5
- VERSION = "0.3.1".freeze
6
+ VERSION = "0.3.2".freeze
6
7
  end
7
8
  end
@@ -28,5 +28,4 @@ Gem::Specification.new do |spec|
28
28
  spec.add_runtime_dependency "sidekiq"
29
29
 
30
30
  spec.add_development_dependency "bundler", "~> 1.10"
31
- spec.add_development_dependency "rake", "~> 10.0"
32
31
  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.3.1
4
+ version: 0.3.2
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: 2016-05-15 00:00:00.000000000 Z
11
+ date: 2016-05-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: sidekiq
@@ -38,20 +38,6 @@ dependencies:
38
38
  - - "~>"
39
39
  - !ruby/object:Gem::Version
40
40
  version: '1.10'
41
- - !ruby/object:Gem::Dependency
42
- name: rake
43
- requirement: !ruby/object:Gem::Requirement
44
- requirements:
45
- - - "~>"
46
- - !ruby/object:Gem::Version
47
- version: '10.0'
48
- type: :development
49
- prerelease: false
50
- version_requirements: !ruby/object:Gem::Requirement
51
- requirements:
52
- - - "~>"
53
- - !ruby/object:Gem::Version
54
- version: '10.0'
55
41
  description: Concurrency and threshold throttling for Sidekiq.
56
42
  email:
57
43
  - ixti@member.fsf.org
@@ -71,8 +57,10 @@ files:
71
57
  - README.md
72
58
  - Rakefile
73
59
  - bin/setup
74
- - gemfiles/sidekiq_3.gemfile
75
- - gemfiles/sidekiq_4.gemfile
60
+ - gemfiles/sidekiq_3.x.gemfile
61
+ - gemfiles/sidekiq_4.0.gemfile
62
+ - gemfiles/sidekiq_4.1.gemfile
63
+ - gemfiles/sidekiq_latest.gemfile
76
64
  - lib/sidekiq/throttled.rb
77
65
  - lib/sidekiq/throttled/basic_fetch.rb
78
66
  - lib/sidekiq/throttled/errors.rb