sidekiq 6.0.0 → 6.4.0
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 +290 -2
- data/LICENSE +3 -3
- data/README.md +7 -9
- data/bin/sidekiq +26 -2
- data/bin/sidekiqload +8 -4
- data/bin/sidekiqmon +4 -5
- data/lib/generators/sidekiq/job_generator.rb +57 -0
- data/lib/generators/sidekiq/templates/{worker.rb.erb → job.rb.erb} +2 -2
- data/lib/generators/sidekiq/templates/{worker_spec.rb.erb → job_spec.rb.erb} +1 -1
- data/lib/generators/sidekiq/templates/{worker_test.rb.erb → job_test.rb.erb} +1 -1
- data/lib/sidekiq/api.rb +222 -145
- data/lib/sidekiq/cli.rb +67 -28
- data/lib/sidekiq/client.rb +17 -34
- data/lib/sidekiq/delay.rb +2 -0
- data/lib/sidekiq/extensions/action_mailer.rb +5 -4
- data/lib/sidekiq/extensions/active_record.rb +6 -5
- data/lib/sidekiq/extensions/class_methods.rb +7 -6
- data/lib/sidekiq/extensions/generic_proxy.rb +5 -3
- data/lib/sidekiq/fetch.rb +36 -27
- data/lib/sidekiq/job.rb +13 -0
- data/lib/sidekiq/job_logger.rb +13 -5
- data/lib/sidekiq/job_retry.rb +33 -21
- data/lib/sidekiq/job_util.rb +65 -0
- data/lib/sidekiq/launcher.rb +110 -28
- data/lib/sidekiq/logger.rb +109 -12
- data/lib/sidekiq/manager.rb +10 -12
- data/lib/sidekiq/middleware/chain.rb +17 -6
- data/lib/sidekiq/middleware/current_attributes.rb +57 -0
- data/lib/sidekiq/monitor.rb +3 -18
- data/lib/sidekiq/paginator.rb +7 -2
- data/lib/sidekiq/processor.rb +22 -24
- data/lib/sidekiq/rails.rb +27 -18
- data/lib/sidekiq/redis_connection.rb +19 -13
- data/lib/sidekiq/scheduled.rb +48 -12
- data/lib/sidekiq/sd_notify.rb +149 -0
- data/lib/sidekiq/systemd.rb +24 -0
- data/lib/sidekiq/testing.rb +14 -4
- data/lib/sidekiq/util.rb +40 -1
- data/lib/sidekiq/version.rb +1 -1
- data/lib/sidekiq/web/action.rb +2 -2
- data/lib/sidekiq/web/application.rb +41 -31
- data/lib/sidekiq/web/csrf_protection.rb +180 -0
- data/lib/sidekiq/web/helpers.rb +51 -33
- data/lib/sidekiq/web/router.rb +6 -5
- data/lib/sidekiq/web.rb +37 -73
- data/lib/sidekiq/worker.rb +133 -16
- data/lib/sidekiq.rb +29 -8
- data/sidekiq.gemspec +13 -6
- data/web/assets/images/apple-touch-icon.png +0 -0
- data/web/assets/javascripts/application.js +83 -64
- data/web/assets/javascripts/dashboard.js +53 -53
- data/web/assets/stylesheets/application-dark.css +143 -0
- data/web/assets/stylesheets/application-rtl.css +0 -4
- data/web/assets/stylesheets/application.css +43 -232
- data/web/locales/ar.yml +8 -2
- data/web/locales/de.yml +14 -2
- data/web/locales/en.yml +6 -1
- data/web/locales/es.yml +18 -2
- data/web/locales/fr.yml +10 -3
- data/web/locales/ja.yml +5 -0
- data/web/locales/lt.yml +83 -0
- data/web/locales/pl.yml +4 -4
- data/web/locales/ru.yml +4 -0
- data/web/locales/vi.yml +83 -0
- data/web/views/_footer.erb +1 -1
- data/web/views/_job_info.erb +3 -2
- data/web/views/_poll_link.erb +2 -5
- data/web/views/_summary.erb +7 -7
- data/web/views/busy.erb +54 -20
- data/web/views/dashboard.erb +22 -14
- data/web/views/dead.erb +3 -3
- data/web/views/layout.erb +3 -1
- data/web/views/morgue.erb +9 -6
- data/web/views/queue.erb +19 -10
- data/web/views/queues.erb +10 -2
- data/web/views/retries.erb +11 -8
- data/web/views/retry.erb +3 -3
- data/web/views/scheduled.erb +5 -2
- metadata +34 -54
- data/.circleci/config.yml +0 -61
- data/.github/contributing.md +0 -32
- data/.github/issue_template.md +0 -11
- data/.gitignore +0 -13
- data/.standard.yml +0 -20
- data/3.0-Upgrade.md +0 -70
- data/4.0-Upgrade.md +0 -53
- data/5.0-Upgrade.md +0 -56
- data/6.0-Upgrade.md +0 -70
- data/COMM-LICENSE +0 -97
- data/Ent-2.0-Upgrade.md +0 -37
- data/Ent-Changes.md +0 -250
- data/Gemfile +0 -24
- data/Gemfile.lock +0 -196
- data/Pro-2.0-Upgrade.md +0 -138
- data/Pro-3.0-Upgrade.md +0 -44
- data/Pro-4.0-Upgrade.md +0 -35
- data/Pro-5.0-Upgrade.md +0 -25
- data/Pro-Changes.md +0 -768
- data/Rakefile +0 -10
- data/code_of_conduct.md +0 -50
- data/lib/generators/sidekiq/worker_generator.rb +0 -47
data/lib/sidekiq.rb
CHANGED
@@ -6,6 +6,7 @@ fail "Sidekiq #{Sidekiq::VERSION} does not support Ruby versions below 2.5.0." i
|
|
6
6
|
require "sidekiq/logger"
|
7
7
|
require "sidekiq/client"
|
8
8
|
require "sidekiq/worker"
|
9
|
+
require "sidekiq/job"
|
9
10
|
require "sidekiq/redis_connection"
|
10
11
|
require "sidekiq/delay"
|
11
12
|
|
@@ -20,26 +21,28 @@ module Sidekiq
|
|
20
21
|
labels: [],
|
21
22
|
concurrency: 10,
|
22
23
|
require: ".",
|
24
|
+
strict: true,
|
23
25
|
environment: nil,
|
24
26
|
timeout: 25,
|
25
27
|
poll_interval_average: nil,
|
26
28
|
average_scheduled_poll_interval: 5,
|
29
|
+
on_complex_arguments: :warn,
|
27
30
|
error_handlers: [],
|
28
31
|
death_handlers: [],
|
29
32
|
lifecycle_events: {
|
30
33
|
startup: [],
|
31
34
|
quiet: [],
|
32
35
|
shutdown: [],
|
33
|
-
heartbeat: []
|
36
|
+
heartbeat: []
|
34
37
|
},
|
35
38
|
dead_max_jobs: 10_000,
|
36
39
|
dead_timeout_in_seconds: 180 * 24 * 60 * 60, # 6 months
|
37
|
-
reloader: proc { |&block| block.call }
|
40
|
+
reloader: proc { |&block| block.call }
|
38
41
|
}
|
39
42
|
|
40
43
|
DEFAULT_WORKER_OPTIONS = {
|
41
44
|
"retry" => true,
|
42
|
-
"queue" => "default"
|
45
|
+
"queue" => "default"
|
43
46
|
}
|
44
47
|
|
45
48
|
FAKE_INFO = {
|
@@ -47,7 +50,7 @@ module Sidekiq
|
|
47
50
|
"uptime_in_days" => "9999",
|
48
51
|
"connected_clients" => "9999",
|
49
52
|
"used_memory_human" => "9P",
|
50
|
-
"used_memory_peak_human" => "9P"
|
53
|
+
"used_memory_peak_human" => "9P"
|
51
54
|
}
|
52
55
|
|
53
56
|
def self.❨╯°□°❩╯︵┻━┻
|
@@ -95,10 +98,12 @@ module Sidekiq
|
|
95
98
|
retryable = true
|
96
99
|
begin
|
97
100
|
yield conn
|
98
|
-
rescue Redis::
|
101
|
+
rescue Redis::BaseError => ex
|
99
102
|
# 2550 Failover can cause the server to become a replica, need
|
100
103
|
# to disconnect and reopen the socket to get back to the primary.
|
101
|
-
if
|
104
|
+
# 4495 Use the same logic if we have a "Not enough replicas" error from the primary
|
105
|
+
# 4985 Use the same logic when a blocking command is force-unblocked
|
106
|
+
if retryable && ex.message =~ /READONLY|NOREPLICAS|UNBLOCKED/
|
102
107
|
conn.disconnect!
|
103
108
|
retryable = false
|
104
109
|
retry
|
@@ -154,7 +159,7 @@ module Sidekiq
|
|
154
159
|
|
155
160
|
def self.default_worker_options=(hash)
|
156
161
|
# stringify
|
157
|
-
@default_worker_options = default_worker_options.merge(
|
162
|
+
@default_worker_options = default_worker_options.merge(hash.transform_keys(&:to_s))
|
158
163
|
end
|
159
164
|
|
160
165
|
def self.default_worker_options
|
@@ -192,16 +197,28 @@ module Sidekiq
|
|
192
197
|
|
193
198
|
def self.log_formatter=(log_formatter)
|
194
199
|
@log_formatter = log_formatter
|
200
|
+
logger.formatter = log_formatter
|
195
201
|
end
|
196
202
|
|
197
203
|
def self.logger
|
198
|
-
@logger ||= Sidekiq::Logger.new(
|
204
|
+
@logger ||= Sidekiq::Logger.new($stdout, level: Logger::INFO)
|
199
205
|
end
|
200
206
|
|
201
207
|
def self.logger=(logger)
|
208
|
+
if logger.nil?
|
209
|
+
self.logger.level = Logger::FATAL
|
210
|
+
return self.logger
|
211
|
+
end
|
212
|
+
|
213
|
+
logger.extend(Sidekiq::LoggingUtils)
|
214
|
+
|
202
215
|
@logger = logger
|
203
216
|
end
|
204
217
|
|
218
|
+
def self.pro?
|
219
|
+
defined?(Sidekiq::Pro)
|
220
|
+
end
|
221
|
+
|
205
222
|
# How frequently Redis should be checked by a random Sidekiq process for
|
206
223
|
# scheduled and retriable jobs. Each individual process will take turns by
|
207
224
|
# waiting some multiple of this value.
|
@@ -236,6 +253,10 @@ module Sidekiq
|
|
236
253
|
options[:lifecycle_events][event] << block
|
237
254
|
end
|
238
255
|
|
256
|
+
def self.strict_args!(mode = :raise)
|
257
|
+
options[:on_complex_arguments] = mode
|
258
|
+
end
|
259
|
+
|
239
260
|
# We are shutting down Sidekiq but what about workers that
|
240
261
|
# are working on some long job? This error is
|
241
262
|
# raised in workers that have not finished within the hard
|
data/sidekiq.gemspec
CHANGED
@@ -5,17 +5,24 @@ Gem::Specification.new do |gem|
|
|
5
5
|
gem.email = ["mperham@gmail.com"]
|
6
6
|
gem.summary = "Simple, efficient background processing for Ruby"
|
7
7
|
gem.description = "Simple, efficient background processing for Ruby."
|
8
|
-
gem.homepage = "
|
8
|
+
gem.homepage = "https://sidekiq.org"
|
9
9
|
gem.license = "LGPL-3.0"
|
10
10
|
|
11
|
-
gem.executables = ["sidekiq"]
|
12
|
-
gem.files = `git ls-files | grep -
|
11
|
+
gem.executables = ["sidekiq", "sidekiqmon"]
|
12
|
+
gem.files = ["sidekiq.gemspec", "README.md", "Changes.md", "LICENSE"] + `git ls-files | grep -E '^(bin|lib|web)'`.split("\n")
|
13
13
|
gem.name = "sidekiq"
|
14
14
|
gem.version = Sidekiq::VERSION
|
15
15
|
gem.required_ruby_version = ">= 2.5.0"
|
16
16
|
|
17
|
-
gem.
|
17
|
+
gem.metadata = {
|
18
|
+
"homepage_uri" => "https://sidekiq.org",
|
19
|
+
"bug_tracker_uri" => "https://github.com/mperham/sidekiq/issues",
|
20
|
+
"documentation_uri" => "https://github.com/mperham/sidekiq/wiki",
|
21
|
+
"changelog_uri" => "https://github.com/mperham/sidekiq/blob/main/Changes.md",
|
22
|
+
"source_code_uri" => "https://github.com/mperham/sidekiq"
|
23
|
+
}
|
24
|
+
|
25
|
+
gem.add_dependency "redis", ">= 4.2.0"
|
18
26
|
gem.add_dependency "connection_pool", ">= 2.2.2"
|
19
|
-
gem.add_dependency "rack", "
|
20
|
-
gem.add_dependency "rack-protection", ">= 2.0.0"
|
27
|
+
gem.add_dependency "rack", "~> 2.0"
|
21
28
|
end
|
Binary file
|