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.

Files changed (102) hide show
  1. checksums.yaml +4 -4
  2. data/Changes.md +290 -2
  3. data/LICENSE +3 -3
  4. data/README.md +7 -9
  5. data/bin/sidekiq +26 -2
  6. data/bin/sidekiqload +8 -4
  7. data/bin/sidekiqmon +4 -5
  8. data/lib/generators/sidekiq/job_generator.rb +57 -0
  9. data/lib/generators/sidekiq/templates/{worker.rb.erb → job.rb.erb} +2 -2
  10. data/lib/generators/sidekiq/templates/{worker_spec.rb.erb → job_spec.rb.erb} +1 -1
  11. data/lib/generators/sidekiq/templates/{worker_test.rb.erb → job_test.rb.erb} +1 -1
  12. data/lib/sidekiq/api.rb +222 -145
  13. data/lib/sidekiq/cli.rb +67 -28
  14. data/lib/sidekiq/client.rb +17 -34
  15. data/lib/sidekiq/delay.rb +2 -0
  16. data/lib/sidekiq/extensions/action_mailer.rb +5 -4
  17. data/lib/sidekiq/extensions/active_record.rb +6 -5
  18. data/lib/sidekiq/extensions/class_methods.rb +7 -6
  19. data/lib/sidekiq/extensions/generic_proxy.rb +5 -3
  20. data/lib/sidekiq/fetch.rb +36 -27
  21. data/lib/sidekiq/job.rb +13 -0
  22. data/lib/sidekiq/job_logger.rb +13 -5
  23. data/lib/sidekiq/job_retry.rb +33 -21
  24. data/lib/sidekiq/job_util.rb +65 -0
  25. data/lib/sidekiq/launcher.rb +110 -28
  26. data/lib/sidekiq/logger.rb +109 -12
  27. data/lib/sidekiq/manager.rb +10 -12
  28. data/lib/sidekiq/middleware/chain.rb +17 -6
  29. data/lib/sidekiq/middleware/current_attributes.rb +57 -0
  30. data/lib/sidekiq/monitor.rb +3 -18
  31. data/lib/sidekiq/paginator.rb +7 -2
  32. data/lib/sidekiq/processor.rb +22 -24
  33. data/lib/sidekiq/rails.rb +27 -18
  34. data/lib/sidekiq/redis_connection.rb +19 -13
  35. data/lib/sidekiq/scheduled.rb +48 -12
  36. data/lib/sidekiq/sd_notify.rb +149 -0
  37. data/lib/sidekiq/systemd.rb +24 -0
  38. data/lib/sidekiq/testing.rb +14 -4
  39. data/lib/sidekiq/util.rb +40 -1
  40. data/lib/sidekiq/version.rb +1 -1
  41. data/lib/sidekiq/web/action.rb +2 -2
  42. data/lib/sidekiq/web/application.rb +41 -31
  43. data/lib/sidekiq/web/csrf_protection.rb +180 -0
  44. data/lib/sidekiq/web/helpers.rb +51 -33
  45. data/lib/sidekiq/web/router.rb +6 -5
  46. data/lib/sidekiq/web.rb +37 -73
  47. data/lib/sidekiq/worker.rb +133 -16
  48. data/lib/sidekiq.rb +29 -8
  49. data/sidekiq.gemspec +13 -6
  50. data/web/assets/images/apple-touch-icon.png +0 -0
  51. data/web/assets/javascripts/application.js +83 -64
  52. data/web/assets/javascripts/dashboard.js +53 -53
  53. data/web/assets/stylesheets/application-dark.css +143 -0
  54. data/web/assets/stylesheets/application-rtl.css +0 -4
  55. data/web/assets/stylesheets/application.css +43 -232
  56. data/web/locales/ar.yml +8 -2
  57. data/web/locales/de.yml +14 -2
  58. data/web/locales/en.yml +6 -1
  59. data/web/locales/es.yml +18 -2
  60. data/web/locales/fr.yml +10 -3
  61. data/web/locales/ja.yml +5 -0
  62. data/web/locales/lt.yml +83 -0
  63. data/web/locales/pl.yml +4 -4
  64. data/web/locales/ru.yml +4 -0
  65. data/web/locales/vi.yml +83 -0
  66. data/web/views/_footer.erb +1 -1
  67. data/web/views/_job_info.erb +3 -2
  68. data/web/views/_poll_link.erb +2 -5
  69. data/web/views/_summary.erb +7 -7
  70. data/web/views/busy.erb +54 -20
  71. data/web/views/dashboard.erb +22 -14
  72. data/web/views/dead.erb +3 -3
  73. data/web/views/layout.erb +3 -1
  74. data/web/views/morgue.erb +9 -6
  75. data/web/views/queue.erb +19 -10
  76. data/web/views/queues.erb +10 -2
  77. data/web/views/retries.erb +11 -8
  78. data/web/views/retry.erb +3 -3
  79. data/web/views/scheduled.erb +5 -2
  80. metadata +34 -54
  81. data/.circleci/config.yml +0 -61
  82. data/.github/contributing.md +0 -32
  83. data/.github/issue_template.md +0 -11
  84. data/.gitignore +0 -13
  85. data/.standard.yml +0 -20
  86. data/3.0-Upgrade.md +0 -70
  87. data/4.0-Upgrade.md +0 -53
  88. data/5.0-Upgrade.md +0 -56
  89. data/6.0-Upgrade.md +0 -70
  90. data/COMM-LICENSE +0 -97
  91. data/Ent-2.0-Upgrade.md +0 -37
  92. data/Ent-Changes.md +0 -250
  93. data/Gemfile +0 -24
  94. data/Gemfile.lock +0 -196
  95. data/Pro-2.0-Upgrade.md +0 -138
  96. data/Pro-3.0-Upgrade.md +0 -44
  97. data/Pro-4.0-Upgrade.md +0 -35
  98. data/Pro-5.0-Upgrade.md +0 -25
  99. data/Pro-Changes.md +0 -768
  100. data/Rakefile +0 -10
  101. data/code_of_conduct.md +0 -50
  102. 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::CommandError => ex
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 retryable && ex.message =~ /READONLY/
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(Hash[hash.map { |k, v| [k.to_s, v] }])
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(STDOUT, level: Logger::INFO)
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 = "http://sidekiq.org"
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 -Ev '^(test|myapp|examples)'`.split("\n")
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.add_dependency "redis", ">= 4.1.0"
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", ">= 2.0.0"
20
- gem.add_dependency "rack-protection", ">= 2.0.0"
27
+ gem.add_dependency "rack", "~> 2.0"
21
28
  end