sidekiq 6.0.0 → 6.1.1

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 (66) hide show
  1. checksums.yaml +4 -4
  2. data/.circleci/config.yml +13 -3
  3. data/6.0-Upgrade.md +3 -1
  4. data/Changes.md +155 -1
  5. data/Ent-Changes.md +27 -2
  6. data/Gemfile +2 -2
  7. data/Gemfile.lock +121 -109
  8. data/Pro-Changes.md +29 -2
  9. data/README.md +4 -5
  10. data/bin/sidekiq +26 -2
  11. data/bin/sidekiqload +8 -4
  12. data/bin/sidekiqmon +4 -5
  13. data/lib/generators/sidekiq/worker_generator.rb +11 -1
  14. data/lib/sidekiq/api.rb +130 -94
  15. data/lib/sidekiq/cli.rb +40 -24
  16. data/lib/sidekiq/client.rb +33 -12
  17. data/lib/sidekiq/extensions/active_record.rb +3 -2
  18. data/lib/sidekiq/extensions/class_methods.rb +5 -4
  19. data/lib/sidekiq/fetch.rb +26 -26
  20. data/lib/sidekiq/job_logger.rb +12 -4
  21. data/lib/sidekiq/job_retry.rb +23 -10
  22. data/lib/sidekiq/launcher.rb +35 -10
  23. data/lib/sidekiq/logger.rb +108 -12
  24. data/lib/sidekiq/manager.rb +3 -3
  25. data/lib/sidekiq/middleware/chain.rb +11 -2
  26. data/lib/sidekiq/monitor.rb +3 -18
  27. data/lib/sidekiq/paginator.rb +7 -2
  28. data/lib/sidekiq/processor.rb +22 -24
  29. data/lib/sidekiq/rails.rb +16 -18
  30. data/lib/sidekiq/redis_connection.rb +21 -13
  31. data/lib/sidekiq/scheduled.rb +13 -12
  32. data/lib/sidekiq/sd_notify.rb +149 -0
  33. data/lib/sidekiq/systemd.rb +24 -0
  34. data/lib/sidekiq/testing.rb +13 -1
  35. data/lib/sidekiq/util.rb +0 -2
  36. data/lib/sidekiq/version.rb +1 -1
  37. data/lib/sidekiq/web/application.rb +22 -21
  38. data/lib/sidekiq/web/csrf_protection.rb +153 -0
  39. data/lib/sidekiq/web/helpers.rb +25 -16
  40. data/lib/sidekiq/web/router.rb +2 -4
  41. data/lib/sidekiq/web.rb +16 -8
  42. data/lib/sidekiq/worker.rb +8 -11
  43. data/lib/sidekiq.rb +21 -7
  44. data/sidekiq.gemspec +3 -4
  45. data/web/assets/javascripts/application.js +25 -27
  46. data/web/assets/javascripts/dashboard.js +2 -2
  47. data/web/assets/stylesheets/application-dark.css +133 -0
  48. data/web/assets/stylesheets/application.css +14 -0
  49. data/web/locales/de.yml +14 -2
  50. data/web/locales/en.yml +2 -0
  51. data/web/locales/fr.yml +2 -2
  52. data/web/locales/ja.yml +2 -0
  53. data/web/locales/lt.yml +83 -0
  54. data/web/locales/pl.yml +4 -4
  55. data/web/locales/vi.yml +83 -0
  56. data/web/views/_job_info.erb +2 -1
  57. data/web/views/busy.erb +4 -1
  58. data/web/views/dead.erb +2 -2
  59. data/web/views/layout.erb +1 -0
  60. data/web/views/morgue.erb +4 -1
  61. data/web/views/queue.erb +10 -1
  62. data/web/views/queues.erb +8 -0
  63. data/web/views/retries.erb +4 -1
  64. data/web/views/retry.erb +2 -2
  65. data/web/views/scheduled.erb +4 -1
  66. metadata +16 -24
data/lib/sidekiq.rb CHANGED
@@ -20,6 +20,7 @@ module Sidekiq
20
20
  labels: [],
21
21
  concurrency: 10,
22
22
  require: ".",
23
+ strict: true,
23
24
  environment: nil,
24
25
  timeout: 25,
25
26
  poll_interval_average: nil,
@@ -30,16 +31,16 @@ module Sidekiq
30
31
  startup: [],
31
32
  quiet: [],
32
33
  shutdown: [],
33
- heartbeat: [],
34
+ heartbeat: []
34
35
  },
35
36
  dead_max_jobs: 10_000,
36
37
  dead_timeout_in_seconds: 180 * 24 * 60 * 60, # 6 months
37
- reloader: proc { |&block| block.call },
38
+ reloader: proc { |&block| block.call }
38
39
  }
39
40
 
40
41
  DEFAULT_WORKER_OPTIONS = {
41
42
  "retry" => true,
42
- "queue" => "default",
43
+ "queue" => "default"
43
44
  }
44
45
 
45
46
  FAKE_INFO = {
@@ -47,7 +48,7 @@ module Sidekiq
47
48
  "uptime_in_days" => "9999",
48
49
  "connected_clients" => "9999",
49
50
  "used_memory_human" => "9P",
50
- "used_memory_peak_human" => "9P",
51
+ "used_memory_peak_human" => "9P"
51
52
  }
52
53
 
53
54
  def self.❨╯°□°❩╯︵┻━┻
@@ -95,10 +96,11 @@ module Sidekiq
95
96
  retryable = true
96
97
  begin
97
98
  yield conn
98
- rescue Redis::CommandError => ex
99
+ rescue Redis::BaseError => ex
99
100
  # 2550 Failover can cause the server to become a replica, need
100
101
  # to disconnect and reopen the socket to get back to the primary.
101
- if retryable && ex.message =~ /READONLY/
102
+ # 4495 Use the same logic if we have a "Not enough replicas" error from the primary
103
+ if retryable && ex.message =~ /READONLY|NOREPLICAS/
102
104
  conn.disconnect!
103
105
  retryable = false
104
106
  retry
@@ -154,7 +156,7 @@ module Sidekiq
154
156
 
155
157
  def self.default_worker_options=(hash)
156
158
  # stringify
157
- @default_worker_options = default_worker_options.merge(Hash[hash.map { |k, v| [k.to_s, v] }])
159
+ @default_worker_options = default_worker_options.merge(hash.transform_keys(&:to_s))
158
160
  end
159
161
 
160
162
  def self.default_worker_options
@@ -192,6 +194,7 @@ module Sidekiq
192
194
 
193
195
  def self.log_formatter=(log_formatter)
194
196
  @log_formatter = log_formatter
197
+ logger.formatter = log_formatter
195
198
  end
196
199
 
197
200
  def self.logger
@@ -199,9 +202,20 @@ module Sidekiq
199
202
  end
200
203
 
201
204
  def self.logger=(logger)
205
+ if logger.nil?
206
+ self.logger.level = Logger::FATAL
207
+ return self.logger
208
+ end
209
+
210
+ logger.extend(Sidekiq::LoggingUtils)
211
+
202
212
  @logger = logger
203
213
  end
204
214
 
215
+ def self.pro?
216
+ defined?(Sidekiq::Pro)
217
+ end
218
+
205
219
  # How frequently Redis should be checked by a random Sidekiq process for
206
220
  # scheduled and retriable jobs. Each individual process will take turns by
207
221
  # waiting some multiple of this value.
data/sidekiq.gemspec CHANGED
@@ -8,14 +8,13 @@ Gem::Specification.new do |gem|
8
8
  gem.homepage = "http://sidekiq.org"
9
9
  gem.license = "LGPL-3.0"
10
10
 
11
- gem.executables = ["sidekiq"]
11
+ gem.executables = ["sidekiq", "sidekiqmon"]
12
12
  gem.files = `git ls-files | grep -Ev '^(test|myapp|examples)'`.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.add_dependency "redis", ">= 4.2.0"
18
18
  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"
19
+ gem.add_dependency "rack", "~> 2.0"
21
20
  end