sidekiq 5.0.4 → 5.0.5
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of sidekiq might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/Changes.md +8 -0
- data/Ent-Changes.md +5 -0
- data/Gemfile +3 -0
- data/Pro-Changes.md +8 -1
- data/lib/sidekiq/api.rb +13 -9
- data/lib/sidekiq/client.rb +4 -1
- data/lib/sidekiq/delay.rb +1 -1
- data/lib/sidekiq/job_retry.rb +1 -8
- data/lib/sidekiq/processor.rb +3 -14
- data/lib/sidekiq/util.rb +1 -1
- data/lib/sidekiq/version.rb +1 -1
- data/lib/sidekiq/web/helpers.rb +2 -1
- data/lib/sidekiq/worker.rb +7 -6
- data/sidekiq.gemspec +1 -1
- metadata +10 -10
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 96202101069aaee71e462e2f3b91f5d4c58e952f
|
4
|
+
data.tar.gz: ad75e0b5dc019bb8d1058b124535190f00b06f60
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4de121e1a00611b97f5c8838c5beb1d5a4fa5e6fb37e7cd7b2ac2074239d8a48d1d9526d4a8c0a94fcfcebe7ee3507209735569c78309f18d29363fbab24b992
|
7
|
+
data.tar.gz: 239a247dd69bab58148229f64d7b8ff12a658bb696c08c9f00b9ee9170c5d40ea052891eef5d89742633282d99095b4eb6004df298aa2f06b5f114fbbcfb10de
|
data/Changes.md
CHANGED
@@ -2,10 +2,18 @@
|
|
2
2
|
|
3
3
|
[Sidekiq Changes](https://github.com/mperham/sidekiq/blob/master/Changes.md) | [Sidekiq Pro Changes](https://github.com/mperham/sidekiq/blob/master/Pro-Changes.md) | [Sidekiq Enterprise Changes](https://github.com/mperham/sidekiq/blob/master/Ent-Changes.md)
|
4
4
|
|
5
|
+
HEAD
|
6
|
+
-----------
|
7
|
+
|
8
|
+
- Update gemspec to allow newer versions of the Redis gem [#3617]
|
9
|
+
- Refactor Worker.set so it can be memoized [#3602]
|
10
|
+
- Fix display of Redis URL in web footer, broken in 5.0.3 [#3560]
|
11
|
+
|
5
12
|
5.0.4
|
6
13
|
-----------
|
7
14
|
|
8
15
|
- Fix "slow startup" performance regression from 5.0.2. [#3525]
|
16
|
+
- Allow users to disable ID generation since some redis providers disable the CLIENT command. [#3521]
|
9
17
|
|
10
18
|
5.0.3
|
11
19
|
-----------
|
data/Ent-Changes.md
CHANGED
data/Gemfile
CHANGED
@@ -8,6 +8,9 @@ gem 'minitest'
|
|
8
8
|
#gem 'minitest-utils'
|
9
9
|
gem 'toxiproxy'
|
10
10
|
|
11
|
+
# For Redis 4.0 support. Unreleased 9cb81bf.
|
12
|
+
gem 'redis-namespace', git: 'https://github.com/resque/redis-namespace'
|
13
|
+
|
11
14
|
platforms :rbx do
|
12
15
|
gem 'rubysl', '~> 2.0' # if using anything in the ruby standard library
|
13
16
|
gem 'psych' # if using yaml
|
data/Pro-Changes.md
CHANGED
@@ -4,7 +4,14 @@
|
|
4
4
|
|
5
5
|
Please see [http://sidekiq.org/](http://sidekiq.org/) for more details and how to buy.
|
6
6
|
|
7
|
-
|
7
|
+
3.5.3
|
8
|
+
---------
|
9
|
+
|
10
|
+
- Restore error check for super\_fetch's job ack [#3601]
|
11
|
+
- Trim error messages saved in Batch's failure hash, preventing huge
|
12
|
+
messages from bloating Redis. [#3570]
|
13
|
+
|
14
|
+
3.5.2
|
8
15
|
---------
|
9
16
|
|
10
17
|
- Fix `Status#completed?` when run against a Batch that had succeeded
|
data/lib/sidekiq/api.rb
CHANGED
@@ -335,7 +335,7 @@ module Sidekiq
|
|
335
335
|
|
336
336
|
def display_args
|
337
337
|
# Unwrap known wrappers so they show up in a human-friendly manner in the Web UI
|
338
|
-
@
|
338
|
+
@display_args ||= case klass
|
339
339
|
when /\ASidekiq::Extensions::Delayed/
|
340
340
|
safe_load(args[0], args) do |_, _, arg|
|
341
341
|
arg
|
@@ -458,14 +458,7 @@ module Sidekiq
|
|
458
458
|
# Place job in the dead set
|
459
459
|
def kill
|
460
460
|
remove_job do |message|
|
461
|
-
|
462
|
-
Sidekiq.redis do |conn|
|
463
|
-
conn.multi do
|
464
|
-
conn.zadd('dead', now, message)
|
465
|
-
conn.zremrangebyscore('dead', '-inf', now - DeadSet.timeout)
|
466
|
-
conn.zremrangebyrank('dead', 0, - DeadSet.max_jobs)
|
467
|
-
end
|
468
|
-
end
|
461
|
+
DeadSet.new.kill(message)
|
469
462
|
end
|
470
463
|
end
|
471
464
|
|
@@ -663,6 +656,17 @@ module Sidekiq
|
|
663
656
|
super 'dead'
|
664
657
|
end
|
665
658
|
|
659
|
+
def kill(message)
|
660
|
+
now = Time.now.to_f
|
661
|
+
Sidekiq.redis do |conn|
|
662
|
+
conn.multi do
|
663
|
+
conn.zadd(name, now.to_s, message)
|
664
|
+
conn.zremrangebyscore(name, '-inf', now - self.class.timeout)
|
665
|
+
conn.zremrangebyrank(name, 0, - self.class.max_jobs)
|
666
|
+
end
|
667
|
+
end
|
668
|
+
end
|
669
|
+
|
666
670
|
def retry_all
|
667
671
|
while size > 0
|
668
672
|
each(&:retry)
|
data/lib/sidekiq/client.rb
CHANGED
@@ -51,7 +51,10 @@ module Sidekiq
|
|
51
51
|
# at - timestamp to schedule the job (optional), must be Numeric (e.g. Time.now.to_f)
|
52
52
|
# retry - whether to retry this job if it fails, default true or an integer number of retries
|
53
53
|
# backtrace - whether to save any error backtrace, default false
|
54
|
-
#
|
54
|
+
#
|
55
|
+
# If class is set to the class name, the jobs' options will be based on Sidekiq's default
|
56
|
+
# worker options. Otherwise, they will be based on the job class's options.
|
57
|
+
#
|
55
58
|
# Any options valid for a worker class's sidekiq_options are also available here.
|
56
59
|
#
|
57
60
|
# All options must be strings, not symbols. NB: because we are serializing to JSON, all
|
data/lib/sidekiq/delay.rb
CHANGED
@@ -24,7 +24,7 @@ module Sidekiq
|
|
24
24
|
|
25
25
|
module PsychAutoload
|
26
26
|
def resolve_class(klass_name)
|
27
|
-
return klass_name
|
27
|
+
return nil if !klass_name || klass_name.empty?
|
28
28
|
# constantize
|
29
29
|
names = klass_name.split('::')
|
30
30
|
names.shift if names.empty? || names.first.empty?
|
data/lib/sidekiq/job_retry.rb
CHANGED
@@ -184,14 +184,7 @@ module Sidekiq
|
|
184
184
|
def send_to_morgue(msg)
|
185
185
|
Sidekiq.logger.info { "Adding dead #{msg['class']} job #{msg['jid']}" }
|
186
186
|
payload = Sidekiq.dump_json(msg)
|
187
|
-
|
188
|
-
Sidekiq.redis do |conn|
|
189
|
-
conn.multi do
|
190
|
-
conn.zadd('dead', now, payload)
|
191
|
-
conn.zremrangebyscore('dead', '-inf', now - DeadSet.timeout)
|
192
|
-
conn.zremrangebyrank('dead', 0, -DeadSet.max_jobs)
|
193
|
-
end
|
194
|
-
end
|
187
|
+
DeadSet.new.kill(payload)
|
195
188
|
end
|
196
189
|
|
197
190
|
def retry_attempts_from(msg_retry, default)
|
data/lib/sidekiq/processor.rb
CHANGED
@@ -126,7 +126,7 @@ module Sidekiq
|
|
126
126
|
pristine = cloned(job_hash)
|
127
127
|
|
128
128
|
Sidekiq::Logging.with_job_hash_context(job_hash) do
|
129
|
-
@retrier.global(
|
129
|
+
@retrier.global(pristine, queue) do
|
130
130
|
@logging.call(job_hash, queue) do
|
131
131
|
stats(pristine, queue) do
|
132
132
|
# Rails 5 requires a Reloader to wrap code execution. In order to
|
@@ -137,7 +137,7 @@ module Sidekiq
|
|
137
137
|
klass = constantize(job_hash['class'.freeze])
|
138
138
|
worker = klass.new
|
139
139
|
worker.jid = job_hash['jid'.freeze]
|
140
|
-
@retrier.local(worker,
|
140
|
+
@retrier.local(worker, pristine, queue) do
|
141
141
|
yield worker
|
142
142
|
end
|
143
143
|
end
|
@@ -159,7 +159,7 @@ module Sidekiq
|
|
159
159
|
job_hash = Sidekiq.load_json(jobstr)
|
160
160
|
rescue => ex
|
161
161
|
handle_exception(ex, { :context => "Invalid JSON for job", :jobstr => jobstr })
|
162
|
-
|
162
|
+
DeadSet.new.kill(jobstr)
|
163
163
|
ack = true
|
164
164
|
raise
|
165
165
|
end
|
@@ -184,17 +184,6 @@ module Sidekiq
|
|
184
184
|
end
|
185
185
|
end
|
186
186
|
|
187
|
-
def send_to_morgue(msg)
|
188
|
-
now = Time.now.to_f
|
189
|
-
Sidekiq.redis do |conn|
|
190
|
-
conn.multi do
|
191
|
-
conn.zadd('dead', now, msg)
|
192
|
-
conn.zremrangebyscore('dead', '-inf', now - DeadSet.timeout)
|
193
|
-
conn.zremrangebyrank('dead', 0, -DeadSet.max_jobs)
|
194
|
-
end
|
195
|
-
end
|
196
|
-
end
|
197
|
-
|
198
187
|
def execute_job(worker, cloned_args)
|
199
188
|
worker.perform(*cloned_args)
|
200
189
|
end
|
data/lib/sidekiq/util.rb
CHANGED
data/lib/sidekiq/version.rb
CHANGED
data/lib/sidekiq/web/helpers.rb
CHANGED
data/lib/sidekiq/worker.rb
CHANGED
@@ -41,12 +41,13 @@ module Sidekiq
|
|
41
41
|
# SomeWorker.set(queue: 'foo').perform_async(....)
|
42
42
|
#
|
43
43
|
class Setter
|
44
|
-
def initialize(opts)
|
44
|
+
def initialize(klass, opts)
|
45
|
+
@klass = klass
|
45
46
|
@opts = opts
|
46
47
|
end
|
47
48
|
|
48
49
|
def perform_async(*args)
|
49
|
-
@
|
50
|
+
@klass.client_push(@opts.merge('args'.freeze => args, 'class'.freeze => @klass))
|
50
51
|
end
|
51
52
|
|
52
53
|
# +interval+ must be a timestamp, numeric or something that acts
|
@@ -56,10 +57,10 @@ module Sidekiq
|
|
56
57
|
now = Time.now.to_f
|
57
58
|
ts = (int < 1_000_000_000 ? now + int : int)
|
58
59
|
|
59
|
-
@opts.merge
|
60
|
+
payload = @opts.merge('class'.freeze => @klass, 'args'.freeze => args, 'at'.freeze => ts)
|
60
61
|
# Optimization to enqueue something now that is scheduled to go out now or in the past
|
61
|
-
|
62
|
-
@
|
62
|
+
payload.delete('at'.freeze) if ts <= now
|
63
|
+
@klass.client_push(payload)
|
63
64
|
end
|
64
65
|
alias_method :perform_at, :perform_in
|
65
66
|
end
|
@@ -79,7 +80,7 @@ module Sidekiq
|
|
79
80
|
end
|
80
81
|
|
81
82
|
def set(options)
|
82
|
-
Setter.new(options
|
83
|
+
Setter.new(self, options)
|
83
84
|
end
|
84
85
|
|
85
86
|
def perform_async(*args)
|
data/sidekiq.gemspec
CHANGED
@@ -17,7 +17,7 @@ Gem::Specification.new do |gem|
|
|
17
17
|
gem.version = Sidekiq::VERSION
|
18
18
|
gem.required_ruby_version = ">= 2.2.2"
|
19
19
|
|
20
|
-
gem.add_dependency 'redis', '
|
20
|
+
gem.add_dependency 'redis', '>= 3.3.4', '< 5'
|
21
21
|
gem.add_dependency 'connection_pool', '~> 2.2', '>= 2.2.0'
|
22
22
|
gem.add_dependency 'concurrent-ruby', '~> 1.0'
|
23
23
|
gem.add_dependency 'rack-protection', '>= 1.5.0'
|
metadata
CHANGED
@@ -1,35 +1,35 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 5.0.
|
4
|
+
version: 5.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Perham
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2017-
|
11
|
+
date: 2017-10-02 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redis
|
15
15
|
requirement: !ruby/object:Gem::Requirement
|
16
16
|
requirements:
|
17
|
-
- - "~>"
|
18
|
-
- !ruby/object:Gem::Version
|
19
|
-
version: '3.3'
|
20
17
|
- - ">="
|
21
18
|
- !ruby/object:Gem::Version
|
22
|
-
version: 3.3.
|
19
|
+
version: 3.3.4
|
20
|
+
- - "<"
|
21
|
+
- !ruby/object:Gem::Version
|
22
|
+
version: '5'
|
23
23
|
type: :runtime
|
24
24
|
prerelease: false
|
25
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
26
|
requirements:
|
27
|
-
- - "~>"
|
28
|
-
- !ruby/object:Gem::Version
|
29
|
-
version: '3.3'
|
30
27
|
- - ">="
|
31
28
|
- !ruby/object:Gem::Version
|
32
|
-
version: 3.3.
|
29
|
+
version: 3.3.4
|
30
|
+
- - "<"
|
31
|
+
- !ruby/object:Gem::Version
|
32
|
+
version: '5'
|
33
33
|
- !ruby/object:Gem::Dependency
|
34
34
|
name: connection_pool
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|