sidekiq-throttled 0.3.1 → 0.3.2

Sign up to get free protection for your applications and to get access to all the features.
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