sidekiq 4.2.10 → 5.0.0.beta1
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/.github/issue_template.md +1 -6
- data/.gitignore +1 -0
- data/5.0-Upgrade.md +52 -0
- data/Changes.md +14 -6
- data/Ent-Changes.md +1 -2
- data/Pro-Changes.md +1 -19
- data/README.md +2 -2
- data/bin/sidekiqctl +1 -1
- data/bin/sidekiqload +14 -19
- data/lib/sidekiq.rb +3 -12
- data/lib/sidekiq/api.rb +30 -31
- data/lib/sidekiq/cli.rb +12 -5
- data/lib/sidekiq/delay.rb +21 -0
- data/lib/sidekiq/extensions/generic_proxy.rb +7 -1
- data/lib/sidekiq/job_logger.rb +36 -0
- data/lib/sidekiq/job_retry.rb +232 -0
- data/lib/sidekiq/launcher.rb +1 -7
- data/lib/sidekiq/middleware/server/active_record.rb +9 -0
- data/lib/sidekiq/processor.rb +63 -29
- data/lib/sidekiq/rails.rb +2 -65
- data/lib/sidekiq/testing.rb +0 -6
- data/lib/sidekiq/version.rb +1 -1
- data/lib/sidekiq/web/application.rb +1 -1
- data/lib/sidekiq/web/helpers.rb +1 -2
- data/sidekiq.gemspec +2 -2
- data/test/config.yml +9 -0
- data/test/env_based_config.yml +11 -0
- data/test/fake_env.rb +1 -0
- data/test/fixtures/en.yml +2 -0
- data/test/helper.rb +98 -0
- data/test/test_actors.rb +138 -0
- data/test/test_api.rb +529 -0
- data/test/test_cli.rb +418 -0
- data/test/test_client.rb +266 -0
- data/test/test_exception_handler.rb +56 -0
- data/test/test_extensions.rb +115 -0
- data/test/test_fetch.rb +50 -0
- data/test/test_launcher.rb +92 -0
- data/test/test_logging.rb +35 -0
- data/test/test_manager.rb +50 -0
- data/test/test_middleware.rb +158 -0
- data/test/test_processor.rb +266 -0
- data/test/test_rails.rb +22 -0
- data/test/test_redis_connection.rb +132 -0
- data/test/test_retry.rb +335 -0
- data/test/test_retry_exhausted.rb +149 -0
- data/test/test_scheduled.rb +115 -0
- data/test/test_scheduling.rb +58 -0
- data/test/test_sidekiq.rb +107 -0
- data/test/test_testing.rb +135 -0
- data/test/test_testing_fake.rb +352 -0
- data/test/test_testing_inline.rb +93 -0
- data/test/test_util.rb +13 -0
- data/test/test_web.rb +638 -0
- data/test/test_web_auth.rb +54 -0
- data/test/test_web_helpers.rb +54 -0
- data/test/test_web_sessions.rb +67 -0
- data/web/assets/javascripts/dashboard.js +1 -1
- data/web/views/_job_info.erb +1 -1
- data/web/views/dashboard.erb +2 -2
- data/web/views/morgue.erb +0 -2
- data/web/views/queue.erb +1 -1
- data/web/views/retry.erb +1 -1
- metadata +73 -8
- data/lib/sidekiq/middleware/server/logging.rb +0 -31
- data/lib/sidekiq/middleware/server/retry_jobs.rb +0 -205
- data/web/locales/fa.yml +0 -79
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 95da469a298b66ee3541eebedff02fa7e78bafa5
|
4
|
+
data.tar.gz: 527583034d9da07b968edaf9e5494d86fd953a3c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 69243c242c3a520711d6afd75a986287b0a064751565d11ee136de74e74261c42646f2f2d0dd6c590213f58bb2ad40bd5c0aca7478a614cc6811b4aa27dfaa7a
|
7
|
+
data.tar.gz: 21159d28edee7f271deec190f7ce013d91cdac0d91e69c995643c26d0c4df97ce7425131f3e749da0e5880a374569fb1361cdd1c5ec598150b2d29a49f8fbbcf
|
data/.github/issue_template.md
CHANGED
@@ -1,9 +1,4 @@
|
|
1
1
|
Ruby version:
|
2
2
|
Sidekiq / Pro / Enterprise version(s):
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
Are you using an old version?
|
7
|
-
Have you checked the changelog to see if your issue has been fixed in a later version?
|
8
|
-
|
9
|
-
https://github.com/mperham/sidekiq/blob/master/Changes.md
|
4
|
+
If relevant, please include your initializer and any error message with the full backtrace.
|
data/.gitignore
CHANGED
data/5.0-Upgrade.md
ADDED
@@ -0,0 +1,52 @@
|
|
1
|
+
# Welcome to Sidekiq 5.0!
|
2
|
+
|
3
|
+
Sidekiq 5.0 contains a reworked job dispatch and execution core to integrate
|
4
|
+
better with the new Rails 5.0 Executor. It also drops support for older
|
5
|
+
versions of Ruby and Rails.
|
6
|
+
|
7
|
+
## What's New
|
8
|
+
|
9
|
+
* Integrate the job logging and retry logic directly in with the job
|
10
|
+
execution logic in Sidekiq::Processor. Previously this logic was
|
11
|
+
defined as middleware. In Rails 5.0, ActiveSupport::Executor handles ActiveRecord
|
12
|
+
connection management, job callbacks, development mode class loading,
|
13
|
+
etc. Because of its extensive responsibilities, the Executor can't be
|
14
|
+
integrated as Sidekiq middleware; the logging/retry logic had to be pulled out
|
15
|
+
too. Sidekiq 4.2 had a hack to make it work but this redesign provides
|
16
|
+
a cleaner integration. [#3235]
|
17
|
+
* The Delayed Extensions `delay`, `delay_in` and `delay_until` APIs are
|
18
|
+
no longer available by default. The extensions allow you to marshal
|
19
|
+
job arguments as YAML, leading to cases where job payloads could be many
|
20
|
+
100s of KB or larger if not careful, leading to Redis networking
|
21
|
+
timeouts or other problems. As noted in the Best Practices wiki page,
|
22
|
+
Sidekiq is designed for jobs with small, simple arguments.
|
23
|
+
|
24
|
+
Add this line to your initializer to re-enable them and get the old behavior:
|
25
|
+
```ruby
|
26
|
+
Sidekiq::Extensions.enable_delay!
|
27
|
+
```
|
28
|
+
The old `Sidekiq.remove_delay!` API has been removed as it is now the default. [#3299]
|
29
|
+
* Sidekiq's quiet signal is now `TSTP` (think of it as **T**hread
|
30
|
+
**ST**o**P**) instead of USR1 as USR1 is not available on JRuby.
|
31
|
+
USR1 will continue to be supported in Sidekiq 5.x for backwards
|
32
|
+
compatibility and will be removed in Sidekiq 6.x. [#3302]
|
33
|
+
* Rails 3.2 is no longer supported.
|
34
|
+
* Ruby 2.0 and Ruby 2.1 are no longer supported. Ruby 2.2.2+ is required.
|
35
|
+
* Jobs which can't be parsed due to invalid JSON are now pushed
|
36
|
+
immediately to the Dead set since they require manual intervention and
|
37
|
+
will never execute successfully as is. [#3296]
|
38
|
+
|
39
|
+
## Upgrade
|
40
|
+
|
41
|
+
As always, please upgrade Sidekiq **one major version at a time**.
|
42
|
+
If you are already running Sidekiq 4.x, then:
|
43
|
+
|
44
|
+
* Upgrade to the latest Sidekiq 4.x.
|
45
|
+
```ruby
|
46
|
+
gem 'sidekiq', '< 5'
|
47
|
+
```
|
48
|
+
* Fix any deprecation warnings you see.
|
49
|
+
* Upgrade to 5.x.
|
50
|
+
```ruby
|
51
|
+
gem 'sidekiq', '< 6'
|
52
|
+
```
|
data/Changes.md
CHANGED
@@ -1,13 +1,21 @@
|
|
1
1
|
# Sidekiq Changes
|
2
2
|
|
3
|
-
|
3
|
+
5.0.0
|
4
4
|
-----------
|
5
5
|
|
6
|
-
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
6
|
+
- **BREAKING CHANGE** Job dispatch was refactored for safer integration with
|
7
|
+
Rails 5. The **Logging** and **RetryJobs** server middleware were removed and
|
8
|
+
functionality integrated directly into Sidekiq::Processor. These aren't
|
9
|
+
commonly used public APIs so this shouldn't impact most users.
|
10
|
+
```
|
11
|
+
Sidekiq::Middleware::Server::RetryJobs -> Sidekiq::JobRetry
|
12
|
+
Sidekiq::Middleware::Server::Logging -> Sidekiq::JobLogging
|
13
|
+
```
|
14
|
+
- Quieting Sidekiq is now done via the TSTP signal, the USR1 signal is deprecated.
|
15
|
+
- The `delay` extension APIs are no longer available by default, you
|
16
|
+
must opt into them.
|
17
|
+
- Rails 3.2 and Ruby 2.0 and 2.1 are no longer supported.
|
18
|
+
- Please see the [5.0 Upgrade notes](5.0-Upgrade.md) for more detail.
|
11
19
|
|
12
20
|
4.2.9
|
13
21
|
-----------
|
data/Ent-Changes.md
CHANGED
@@ -3,10 +3,9 @@ Sidekiq Enterprise Changelog
|
|
3
3
|
|
4
4
|
Please see [http://sidekiq.org/](http://sidekiq.org/) for more details and how to buy.
|
5
5
|
|
6
|
-
|
6
|
+
HEAD
|
7
7
|
-------------
|
8
8
|
|
9
|
-
- Fix encrypted arguments double-encrypted by retry or rate limiting [#3368]
|
10
9
|
- Fix leak in concurrent rate limiter, run this in Rails console to clean up existing data [#3323]
|
11
10
|
```ruby
|
12
11
|
expiry = 1.month.to_i; Sidekiq::Limiter.redis { |c| c.scan_each(match: "lmtr-cfree-*") { |key| c.expire(key, expiry) } }
|
data/Pro-Changes.md
CHANGED
@@ -6,25 +6,7 @@ Please see [http://sidekiq.org/](http://sidekiq.org/) for more details and how t
|
|
6
6
|
HEAD
|
7
7
|
---------
|
8
8
|
|
9
|
-
-
|
10
|
-
|
11
|
-
3.4.5
|
12
|
-
---------
|
13
|
-
|
14
|
-
- Fix potential job loss with reliable scheduler when lots of jobs are scheduled
|
15
|
-
at precisely the same time. Thanks to raivil for his hard work in
|
16
|
-
reproducing the bug. [#3371]
|
17
|
-
|
18
|
-
3.4.4
|
19
|
-
---------
|
20
|
-
|
21
|
-
- Optimize super\_fetch shutdown to restart jobs quicker [#3249]
|
22
|
-
|
23
|
-
3.4.3
|
24
|
-
---------
|
25
|
-
|
26
|
-
- Limit reliable scheduler to enqueue up to 100 jobs per call, minimizing Redis latency [#3332]
|
27
|
-
- Fix bug in super\_fetch logic for queues with `_` in the name [#3339]
|
9
|
+
- Update reliable scheduler to enqueue up to 100 jobs per call, minimizing Redis latency [#3332]
|
28
10
|
|
29
11
|
3.4.2
|
30
12
|
---------
|
data/README.md
CHANGED
@@ -32,9 +32,9 @@ DelayedJob 4.1.1 | - | - | 465 sec | 215 jobs/sec
|
|
32
32
|
Requirements
|
33
33
|
-----------------
|
34
34
|
|
35
|
-
Sidekiq supports CRuby 2.
|
35
|
+
Sidekiq supports CRuby 2.2.2+ and JRuby 9k.
|
36
36
|
|
37
|
-
All Rails releases >=
|
37
|
+
All Rails releases >= 4.0 are officially supported.
|
38
38
|
|
39
39
|
Redis 2.8 or greater is required. 3.0.3+ is recommended for large
|
40
40
|
installations with thousands of worker threads.
|
data/bin/sidekiqctl
CHANGED
data/bin/sidekiqload
CHANGED
@@ -14,7 +14,7 @@ include Sidekiq::Util
|
|
14
14
|
|
15
15
|
Sidekiq.configure_server do |config|
|
16
16
|
#config.options[:concurrency] = 1
|
17
|
-
config.redis = { db: 13 }
|
17
|
+
config.redis = { driver: :hiredis, db: 13, port: 6380 }
|
18
18
|
config.options[:queues] << 'default'
|
19
19
|
config.logger.level = Logger::ERROR
|
20
20
|
config.average_scheduled_poll_interval = 2
|
@@ -36,17 +36,17 @@ end
|
|
36
36
|
# brew tap shopify/shopify
|
37
37
|
# brew install toxiproxy
|
38
38
|
# gem install toxiproxy
|
39
|
-
|
39
|
+
require 'toxiproxy'
|
40
40
|
# simulate a non-localhost network for realer-world conditions.
|
41
41
|
# adding 1ms of network latency has an ENORMOUS impact on benchmarks
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
42
|
+
Toxiproxy.populate([{
|
43
|
+
"name": "redis",
|
44
|
+
"listen": "127.0.0.1:6380",
|
45
|
+
"upstream": "127.0.0.1:6379"
|
46
|
+
}])
|
47
47
|
|
48
48
|
self_read, self_write = IO.pipe
|
49
|
-
%w(INT TERM
|
49
|
+
%w(INT TERM TSTP TTIN).each do |sig|
|
50
50
|
begin
|
51
51
|
trap sig do
|
52
52
|
self_write.puts(sig)
|
@@ -67,14 +67,9 @@ def handle_signal(launcher, sig)
|
|
67
67
|
when 'TERM'
|
68
68
|
# Heroku sends TERM and then waits 10 seconds for process to exit.
|
69
69
|
raise Interrupt
|
70
|
-
when '
|
71
|
-
Sidekiq.logger.info "Received
|
70
|
+
when 'TSTP'
|
71
|
+
Sidekiq.logger.info "Received TSTP, no longer accepting new work"
|
72
72
|
launcher.quiet
|
73
|
-
when 'USR2'
|
74
|
-
if Sidekiq.options[:logfile]
|
75
|
-
Sidekiq.logger.info "Received USR2, reopening log file"
|
76
|
-
Sidekiq::Logging.reopen_logs
|
77
|
-
end
|
78
73
|
when 'TTIN'
|
79
74
|
Thread.list.each do |thread|
|
80
75
|
Sidekiq.logger.warn "Thread TID-#{thread.object_id.to_s(36)} #{thread['label']}"
|
@@ -108,7 +103,7 @@ Sidekiq.logger.error "Created #{count*iter} jobs"
|
|
108
103
|
Monitoring = Thread.new do
|
109
104
|
watchdog("monitor thread") do
|
110
105
|
while true
|
111
|
-
sleep
|
106
|
+
sleep 2
|
112
107
|
qsize, retries = Sidekiq.redis do |conn|
|
113
108
|
conn.pipelined do
|
114
109
|
conn.llen "queue:default"
|
@@ -130,8 +125,8 @@ begin
|
|
130
125
|
#RubyProf::exclude_threads = [ Monitoring ]
|
131
126
|
#RubyProf.start
|
132
127
|
fire_event(:startup)
|
133
|
-
|
134
|
-
|
128
|
+
Sidekiq.logger.error "Simulating 1ms of latency between Sidekiq and redis"
|
129
|
+
Toxiproxy[:redis].downstream(:latency, latency: 1).apply do
|
135
130
|
launcher = Sidekiq::Launcher.new(Sidekiq.options)
|
136
131
|
launcher.run
|
137
132
|
|
@@ -139,7 +134,7 @@ begin
|
|
139
134
|
signal = readable_io.first[0].gets.strip
|
140
135
|
handle_signal(launcher, signal)
|
141
136
|
end
|
142
|
-
|
137
|
+
end
|
143
138
|
rescue SystemExit => e
|
144
139
|
#Sidekiq.logger.error("Profiling...")
|
145
140
|
#result = RubyProf.stop
|
data/lib/sidekiq.rb
CHANGED
@@ -1,12 +1,13 @@
|
|
1
1
|
# encoding: utf-8
|
2
2
|
# frozen_string_literal: true
|
3
3
|
require 'sidekiq/version'
|
4
|
-
fail "Sidekiq #{Sidekiq::VERSION} does not support Ruby versions below 2.
|
4
|
+
fail "Sidekiq #{Sidekiq::VERSION} does not support Ruby versions below 2.2.2." if RUBY_PLATFORM != 'java' && RUBY_VERSION < '2.2.2'
|
5
5
|
|
6
6
|
require 'sidekiq/logging'
|
7
7
|
require 'sidekiq/client'
|
8
8
|
require 'sidekiq/worker'
|
9
9
|
require 'sidekiq/redis_connection'
|
10
|
+
require 'sidekiq/delay'
|
10
11
|
|
11
12
|
require 'json'
|
12
13
|
|
@@ -33,7 +34,6 @@ module Sidekiq
|
|
33
34
|
dead_max_jobs: 10_000,
|
34
35
|
dead_timeout_in_seconds: 180 * 24 * 60 * 60, # 6 months
|
35
36
|
reloader: proc { |&block| block.call },
|
36
|
-
executor: proc { |&block| block.call },
|
37
37
|
}
|
38
38
|
|
39
39
|
DEFAULT_WORKER_OPTIONS = {
|
@@ -145,13 +145,7 @@ module Sidekiq
|
|
145
145
|
end
|
146
146
|
|
147
147
|
def self.default_server_middleware
|
148
|
-
|
149
|
-
require 'sidekiq/middleware/server/logging'
|
150
|
-
|
151
|
-
Middleware::Chain.new do |m|
|
152
|
-
m.add Middleware::Server::RetryJobs
|
153
|
-
m.add Middleware::Server::Logging
|
154
|
-
end
|
148
|
+
Middleware::Chain.new
|
155
149
|
end
|
156
150
|
|
157
151
|
def self.default_worker_options=(hash)
|
@@ -231,7 +225,4 @@ module Sidekiq
|
|
231
225
|
|
232
226
|
end
|
233
227
|
|
234
|
-
require 'sidekiq/extensions/class_methods'
|
235
|
-
require 'sidekiq/extensions/action_mailer'
|
236
|
-
require 'sidekiq/extensions/active_record'
|
237
228
|
require 'sidekiq/rails' if defined?(::Rails::Engine)
|
data/lib/sidekiq/api.rb
CHANGED
@@ -75,10 +75,7 @@ module Sidekiq
|
|
75
75
|
enqueued = pipe2_res[s..-1].map(&:to_i).inject(0, &:+)
|
76
76
|
|
77
77
|
default_queue_latency = if (entry = pipe1_res[6].first)
|
78
|
-
|
79
|
-
now = Time.now.to_f
|
80
|
-
thence = job['enqueued_at'.freeze] || now
|
81
|
-
now - thence
|
78
|
+
Time.now.to_f - Sidekiq.load_json(entry)['enqueued_at'.freeze]
|
82
79
|
else
|
83
80
|
0
|
84
81
|
end
|
@@ -228,10 +225,7 @@ module Sidekiq
|
|
228
225
|
conn.lrange(@rname, -1, -1)
|
229
226
|
end.first
|
230
227
|
return 0 unless entry
|
231
|
-
|
232
|
-
now = Time.now.to_f
|
233
|
-
thence = job['enqueued_at'] || now
|
234
|
-
now - thence
|
228
|
+
Time.now.to_f - Sidekiq.load_json(entry)['enqueued_at']
|
235
229
|
end
|
236
230
|
|
237
231
|
def each
|
@@ -288,12 +282,16 @@ module Sidekiq
|
|
288
282
|
|
289
283
|
def initialize(item, queue_name=nil)
|
290
284
|
@value = item
|
291
|
-
@item = item.is_a?(Hash)
|
292
|
-
|
285
|
+
@item = if item.is_a?(Hash)
|
286
|
+
item
|
287
|
+
else
|
288
|
+
Sidekiq.load_json(item) rescue nil
|
289
|
+
end
|
290
|
+
@queue = queue_name || self['queue']
|
293
291
|
end
|
294
292
|
|
295
293
|
def klass
|
296
|
-
|
294
|
+
self['class']
|
297
295
|
end
|
298
296
|
|
299
297
|
def display_class
|
@@ -324,8 +322,8 @@ module Sidekiq
|
|
324
322
|
arg
|
325
323
|
end
|
326
324
|
when "ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper"
|
327
|
-
job_args =
|
328
|
-
if 'ActionMailer::DeliveryJob' == (
|
325
|
+
job_args = self['wrapped'] ? args[0]["arguments"] : []
|
326
|
+
if 'ActionMailer::DeliveryJob' == (self['wrapped'] || args[0])
|
329
327
|
# remove MailerClass, mailer_method and 'deliver_now'
|
330
328
|
job_args.drop(3)
|
331
329
|
else
|
@@ -337,19 +335,19 @@ module Sidekiq
|
|
337
335
|
end
|
338
336
|
|
339
337
|
def args
|
340
|
-
|
338
|
+
self['args']
|
341
339
|
end
|
342
340
|
|
343
341
|
def jid
|
344
|
-
|
342
|
+
self['jid']
|
345
343
|
end
|
346
344
|
|
347
345
|
def enqueued_at
|
348
|
-
|
346
|
+
self['enqueued_at'] ? Time.at(self['enqueued_at']).utc : nil
|
349
347
|
end
|
350
348
|
|
351
349
|
def created_at
|
352
|
-
Time.at(
|
350
|
+
Time.at(self['created_at'] || self['enqueued_at'] || 0).utc
|
353
351
|
end
|
354
352
|
|
355
353
|
def queue
|
@@ -357,8 +355,7 @@ module Sidekiq
|
|
357
355
|
end
|
358
356
|
|
359
357
|
def latency
|
360
|
-
|
361
|
-
now - (@item['enqueued_at'] || @item['created_at'] || now)
|
358
|
+
Time.now.to_f - (self['enqueued_at'] || self['created_at'] || 0)
|
362
359
|
end
|
363
360
|
|
364
361
|
##
|
@@ -371,7 +368,10 @@ module Sidekiq
|
|
371
368
|
end
|
372
369
|
|
373
370
|
def [](name)
|
374
|
-
|
371
|
+
# nil will happen if the JSON fails to parse.
|
372
|
+
# We don't guarantee Sidekiq will work with bad job JSON but we should
|
373
|
+
# make a best effort to minimize the damage.
|
374
|
+
@item ? @item[name] : nil
|
375
375
|
end
|
376
376
|
|
377
377
|
private
|
@@ -423,9 +423,10 @@ module Sidekiq
|
|
423
423
|
end
|
424
424
|
|
425
425
|
def retry
|
426
|
+
raise "Retry not available on jobs which have not failed" unless item["failed_at"]
|
426
427
|
remove_job do |message|
|
427
428
|
msg = Sidekiq.load_json(message)
|
428
|
-
msg['retry_count'] -= 1
|
429
|
+
msg['retry_count'] -= 1
|
429
430
|
Sidekiq::Client.push(msg)
|
430
431
|
end
|
431
432
|
end
|
@@ -433,7 +434,9 @@ module Sidekiq
|
|
433
434
|
##
|
434
435
|
# Place job in the dead set
|
435
436
|
def kill
|
437
|
+
raise 'Kill not available on jobs which have not failed' unless item['failed_at']
|
436
438
|
remove_job do |message|
|
439
|
+
Sidekiq.logger.info { "Killing job #{message['jid']}" }
|
437
440
|
now = Time.now.to_f
|
438
441
|
Sidekiq.redis do |conn|
|
439
442
|
conn.multi do
|
@@ -445,10 +448,6 @@ module Sidekiq
|
|
445
448
|
end
|
446
449
|
end
|
447
450
|
|
448
|
-
def error?
|
449
|
-
!!item['error_class']
|
450
|
-
end
|
451
|
-
|
452
451
|
private
|
453
452
|
|
454
453
|
def remove_job
|
@@ -593,13 +592,13 @@ module Sidekiq
|
|
593
592
|
# Allows enumeration of scheduled jobs within Sidekiq.
|
594
593
|
# Based on this, you can search/filter for jobs. Here's an
|
595
594
|
# example where I'm selecting all jobs of a certain type
|
596
|
-
# and deleting them from the
|
595
|
+
# and deleting them from the retry queue.
|
597
596
|
#
|
598
597
|
# r = Sidekiq::ScheduledSet.new
|
599
|
-
# r.select do |
|
600
|
-
#
|
601
|
-
#
|
602
|
-
#
|
598
|
+
# r.select do |retri|
|
599
|
+
# retri.klass == 'Sidekiq::Extensions::DelayedClass' &&
|
600
|
+
# retri.args[0] == 'User' &&
|
601
|
+
# retri.args[1] == 'setup_new_subscriber'
|
603
602
|
# end.map(&:delete)
|
604
603
|
class ScheduledSet < JobSet
|
605
604
|
def initialize
|
@@ -756,7 +755,7 @@ module Sidekiq
|
|
756
755
|
end
|
757
756
|
|
758
757
|
def quiet!
|
759
|
-
signal('
|
758
|
+
signal('TSTP')
|
760
759
|
end
|
761
760
|
|
762
761
|
def stop!
|