sidekiq 7.1.4 → 8.0.9

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (128) hide show
  1. checksums.yaml +4 -4
  2. data/Changes.md +333 -0
  3. data/README.md +16 -13
  4. data/bin/multi_queue_bench +271 -0
  5. data/bin/sidekiqload +31 -22
  6. data/bin/webload +69 -0
  7. data/lib/active_job/queue_adapters/sidekiq_adapter.rb +121 -0
  8. data/lib/generators/sidekiq/job_generator.rb +2 -0
  9. data/lib/generators/sidekiq/templates/job.rb.erb +1 -1
  10. data/lib/sidekiq/api.rb +260 -67
  11. data/lib/sidekiq/capsule.rb +17 -8
  12. data/lib/sidekiq/cli.rb +19 -20
  13. data/lib/sidekiq/client.rb +48 -15
  14. data/lib/sidekiq/component.rb +64 -3
  15. data/lib/sidekiq/config.rb +60 -18
  16. data/lib/sidekiq/deploy.rb +4 -2
  17. data/lib/sidekiq/embedded.rb +4 -1
  18. data/lib/sidekiq/fetch.rb +2 -1
  19. data/lib/sidekiq/iterable_job.rb +56 -0
  20. data/lib/sidekiq/job/interrupt_handler.rb +24 -0
  21. data/lib/sidekiq/job/iterable/active_record_enumerator.rb +53 -0
  22. data/lib/sidekiq/job/iterable/csv_enumerator.rb +47 -0
  23. data/lib/sidekiq/job/iterable/enumerators.rb +135 -0
  24. data/lib/sidekiq/job/iterable.rb +322 -0
  25. data/lib/sidekiq/job.rb +16 -5
  26. data/lib/sidekiq/job_logger.rb +15 -12
  27. data/lib/sidekiq/job_retry.rb +41 -13
  28. data/lib/sidekiq/job_util.rb +7 -1
  29. data/lib/sidekiq/launcher.rb +23 -11
  30. data/lib/sidekiq/loader.rb +57 -0
  31. data/lib/sidekiq/logger.rb +25 -69
  32. data/lib/sidekiq/manager.rb +0 -1
  33. data/lib/sidekiq/metrics/query.rb +76 -45
  34. data/lib/sidekiq/metrics/shared.rb +23 -9
  35. data/lib/sidekiq/metrics/tracking.rb +32 -15
  36. data/lib/sidekiq/middleware/current_attributes.rb +39 -14
  37. data/lib/sidekiq/middleware/i18n.rb +2 -0
  38. data/lib/sidekiq/middleware/modules.rb +2 -0
  39. data/lib/sidekiq/monitor.rb +6 -9
  40. data/lib/sidekiq/paginator.rb +16 -3
  41. data/lib/sidekiq/processor.rb +37 -20
  42. data/lib/sidekiq/profiler.rb +73 -0
  43. data/lib/sidekiq/rails.rb +47 -57
  44. data/lib/sidekiq/redis_client_adapter.rb +25 -8
  45. data/lib/sidekiq/redis_connection.rb +49 -9
  46. data/lib/sidekiq/ring_buffer.rb +3 -0
  47. data/lib/sidekiq/scheduled.rb +2 -2
  48. data/lib/sidekiq/systemd.rb +2 -0
  49. data/lib/sidekiq/testing.rb +34 -15
  50. data/lib/sidekiq/transaction_aware_client.rb +20 -5
  51. data/lib/sidekiq/version.rb +6 -2
  52. data/lib/sidekiq/web/action.rb +149 -64
  53. data/lib/sidekiq/web/application.rb +367 -297
  54. data/lib/sidekiq/web/config.rb +120 -0
  55. data/lib/sidekiq/web/csrf_protection.rb +8 -5
  56. data/lib/sidekiq/web/helpers.rb +146 -64
  57. data/lib/sidekiq/web/router.rb +61 -74
  58. data/lib/sidekiq/web.rb +53 -106
  59. data/lib/sidekiq.rb +11 -4
  60. data/sidekiq.gemspec +6 -5
  61. data/web/assets/images/logo.png +0 -0
  62. data/web/assets/images/status.png +0 -0
  63. data/web/assets/javascripts/application.js +66 -24
  64. data/web/assets/javascripts/base-charts.js +30 -16
  65. data/web/assets/javascripts/chartjs-adapter-date-fns.min.js +7 -0
  66. data/web/assets/javascripts/dashboard-charts.js +37 -11
  67. data/web/assets/javascripts/dashboard.js +15 -11
  68. data/web/assets/javascripts/metrics.js +50 -34
  69. data/web/assets/stylesheets/style.css +776 -0
  70. data/web/locales/ar.yml +2 -0
  71. data/web/locales/cs.yml +2 -0
  72. data/web/locales/da.yml +2 -0
  73. data/web/locales/de.yml +2 -0
  74. data/web/locales/el.yml +2 -0
  75. data/web/locales/en.yml +12 -1
  76. data/web/locales/es.yml +25 -2
  77. data/web/locales/fa.yml +2 -0
  78. data/web/locales/fr.yml +2 -1
  79. data/web/locales/gd.yml +2 -1
  80. data/web/locales/he.yml +2 -0
  81. data/web/locales/hi.yml +2 -0
  82. data/web/locales/it.yml +41 -1
  83. data/web/locales/ja.yml +2 -1
  84. data/web/locales/ko.yml +2 -0
  85. data/web/locales/lt.yml +2 -0
  86. data/web/locales/nb.yml +2 -0
  87. data/web/locales/nl.yml +2 -0
  88. data/web/locales/pl.yml +2 -0
  89. data/web/locales/{pt-br.yml → pt-BR.yml} +4 -3
  90. data/web/locales/pt.yml +2 -0
  91. data/web/locales/ru.yml +2 -0
  92. data/web/locales/sv.yml +2 -0
  93. data/web/locales/ta.yml +2 -0
  94. data/web/locales/tr.yml +102 -0
  95. data/web/locales/uk.yml +29 -4
  96. data/web/locales/ur.yml +2 -0
  97. data/web/locales/vi.yml +2 -0
  98. data/web/locales/{zh-cn.yml → zh-CN.yml} +86 -74
  99. data/web/locales/{zh-tw.yml → zh-TW.yml} +3 -2
  100. data/web/views/_footer.erb +31 -22
  101. data/web/views/_job_info.erb +91 -89
  102. data/web/views/_metrics_period_select.erb +13 -10
  103. data/web/views/_nav.erb +14 -21
  104. data/web/views/_paging.erb +22 -21
  105. data/web/views/_poll_link.erb +2 -2
  106. data/web/views/_summary.erb +23 -23
  107. data/web/views/busy.erb +123 -125
  108. data/web/views/dashboard.erb +71 -82
  109. data/web/views/dead.erb +31 -27
  110. data/web/views/filtering.erb +6 -0
  111. data/web/views/layout.erb +13 -29
  112. data/web/views/metrics.erb +70 -68
  113. data/web/views/metrics_for_job.erb +30 -40
  114. data/web/views/morgue.erb +65 -70
  115. data/web/views/profiles.erb +43 -0
  116. data/web/views/queue.erb +54 -52
  117. data/web/views/queues.erb +43 -37
  118. data/web/views/retries.erb +70 -75
  119. data/web/views/retry.erb +32 -27
  120. data/web/views/scheduled.erb +63 -55
  121. data/web/views/scheduled_job_info.erb +3 -3
  122. metadata +49 -27
  123. data/web/assets/stylesheets/application-dark.css +0 -147
  124. data/web/assets/stylesheets/application-rtl.css +0 -153
  125. data/web/assets/stylesheets/application.css +0 -724
  126. data/web/assets/stylesheets/bootstrap-rtl.min.css +0 -9
  127. data/web/assets/stylesheets/bootstrap.css +0 -5
  128. data/web/views/_status.erb +0 -4
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 0a6064918f9c33be1d21f890b9cff080969fb44a916fe67ccb36958fe0a3b8f3
4
- data.tar.gz: baf268f21f27e0dac2fc287f247910afe493e4dcaee21aa769ccebbed03e7699
3
+ metadata.gz: ef51643693879cd574d6edd54ef41443defc4825c855d5eed0e07d42e35aa1cd
4
+ data.tar.gz: 2d9acb8d89326185356ee9818ca543e8a6992bac0a00262e06aa9394052978c1
5
5
  SHA512:
6
- metadata.gz: c8f4e3caaeab143f20fdd592dc7939f09a302642867bddb4fcd02cbbaa0e734d7685ee3ad02543d3bb3ba6cbedaf2cbab3577a849c03d2f351aa7918d6eab73f
7
- data.tar.gz: 1cf71898600afb872ee717be6496da7a146aa8e2f528b6c73e3630a64f71869bc23bfa2d7130f021c7f5e12b473ed3b537cebb4a8fedcfbe517af48dde5bbea6
6
+ metadata.gz: 761f705abeb6b5deb31591d07d9d9ea0d79d5d6f74367f622842994aa0a57866bd3af9add1089ce2b29d8dd4a9cd110d839036504a1ae0830ac59dbca186ff26
7
+ data.tar.gz: 5df2e3b47cb7ed56a51ff90b1a8d23ea96f74e9fd64a9116d249a266c7a074ef2a4bac09d66202c66a4f631c6f15bcae167df8ae733f43020f0b53886ae3e564
data/Changes.md CHANGED
@@ -2,6 +2,334 @@
2
2
 
3
3
  [Sidekiq Changes](https://github.com/sidekiq/sidekiq/blob/main/Changes.md) | [Sidekiq Pro Changes](https://github.com/sidekiq/sidekiq/blob/main/Pro-Changes.md) | [Sidekiq Enterprise Changes](https://github.com/sidekiq/sidekiq/blob/main/Ent-Changes.md)
4
4
 
5
+ 8.0.9
6
+ ----------
7
+
8
+ - Implement idle Redis connection reaping, will be activated in 8.1 [#6663]
9
+ - Updated `Sidekiq::Process` API to provide capsule data. The `queues` and `weights`
10
+ data will be removed from Redis in Sidekiq 8.1, as this data can now be found in the
11
+ `capsules` element. [#6295]
12
+ - Restore bulk action buttons on Scheduled, Retry and Dead tabs [#6833, deve1212]
13
+ - Support logging additional job attributes [#6846, bschrag620]
14
+ - Fix display of long job args [#6836]
15
+ - Create development lifecycle (`docs/sdlc.md`) and security (`docs/SECURITY.md`) policy
16
+ documentation for Sidekiq's current workflows
17
+
18
+ 8.0.8
19
+ ----------
20
+
21
+ - Allow an optional global iteration max runtime. After executing for this length of time,
22
+ Sidekiq will re-queue the job to continue execution at a later time [#6819, fatkodima]
23
+ ```ruby
24
+ Sidekiq.configure_server do |cfg|
25
+ cfg[:max_iteration_runtime] = 600 # ten minutes
26
+ end
27
+ ```
28
+ - Add `discarded_at` attribute when discarding a job so death handlers can distinguish between
29
+ a job which was killed and one that was discarded. [#6820, gstokkink]
30
+ - `perform_bulk` now accepts an `:at` array of times to schedule each job at the corresponding time.
31
+ `perform_bulk(args: [[1], [2]], at: [Time.now, Time.now + 1])` [#6790, fatkodima]
32
+ - `perform_bulk` now accepts a `:spread_interval` value to schedule jobs over
33
+ the next N seconds. `perform_bulk(..., spread_interval: 60)` [#6792, fatkodima]
34
+ - Fix unintended display of flash messages in the Web UI due to session key collision
35
+ - Add support for lazy load hooks [#6825]
36
+
37
+ 8.0.7
38
+ ----------
39
+
40
+ - The `:discard` option for `sidekiq_retries_exhausted` and `sidekiq_retry_in`
41
+ now calls death handlers, otherwise it could break other Sidekiq
42
+ functionality. [#6741]
43
+ - Provide a Plain log formatter which does not colorize output [#6778]
44
+ - Job iteration now exposes `current_object` for easy access within the `around_iteration` callback [#6774]
45
+ - Fix JS race condition which could skip confirmation dialogs when Live Polling [#6768]
46
+ - Fix edge case which could lose CurrentAttributes [#6767]
47
+ - Update UK locale [#6776]
48
+
49
+ 8.0.6
50
+ ----------
51
+
52
+ - Adjust transactional client to use ActiveRecord 7.2's support for
53
+ `after_all_transactions_commit` when available. [#6765, rewritten]
54
+ - Fix Rails 7.0 and 7.1 compatibility [#6746, mlarraz]
55
+ - Flush metrics at `:exit` [#6764]
56
+
57
+ 8.0.5
58
+ ----------
59
+
60
+ - Add `stopping?` method to AJ adapter for compatibility with the new AJ::Continuations feature [#6732]
61
+ - Further improvements to Rails boot compatibility [#6710]
62
+ - Add ability to disable CSRF middleware. SameSite cookies prevent
63
+ CSRF in a cleaner manner and are default in most browsers now.
64
+ CSRF code will be removed in Sidekiq 9.0. [#6739]
65
+
66
+ 8.0.4
67
+ ----------
68
+
69
+ - Adjust Rails integration for various edge cases [6713]
70
+ - Flush job iteration state when an error is raised [#6704]
71
+ - Update Accept-Language parsing in Web UI [#6721]
72
+ - Remove fixed-width in Web UI [#6686]
73
+ - Adjust CSRF middleware ordering [#6688]
74
+ - Support proxies when POSTing profiles to profiler.firefox.com [#6687]
75
+ - Dont swallow NoMethodErrors in CurrentAttributes [#6685]
76
+
77
+ 8.0.3
78
+ ----------
79
+
80
+ - Configure Vernier output directory [#6674]
81
+ - Rework Rails integration [#6669]
82
+ - Implement flash messages for the Web UI [#6675]
83
+
84
+ 8.0.2
85
+ ----------
86
+
87
+ - Add `on(:exit)` event to run code right before the Sidekiq process exits [#6637]
88
+ - Metrics page crashes with Rack 3.1+ [#6646]
89
+
90
+ 8.0.1
91
+ ----------
92
+
93
+ - Relax Redis requirement to 7.0 for compatibility with AWS and Ubuntu 24.04 LTS. [#6630]
94
+
95
+ 8.0.0
96
+ ----------
97
+
98
+ - **WARNING** The underlying class name for Active Jobs has changed from `ActiveJob::QueueAdapters::SidekiqAdapter::JobWrapper` to `Sidekiq::ActiveJob::Wrapper`.
99
+ The old name will still work in 8.x.
100
+ - **WARNING** The `created_at`, `enqueued_at`, `failed_at` and `retried_at` attributes are now stored as epoch milliseconds, rather than epoch floats.
101
+ This is meant to avoid precision issues with JSON and JavaScript's 53-bit Floats.
102
+ Example: `"created_at" => 1234567890.123456` -> `"created_at" => 1234567890123`.
103
+ - **NEW FEATURE** Job Profiling is now supported with [Vernier](https://vernier.prof)
104
+ which makes it really easy to performance tune your slow jobs.
105
+ The Web UI contains a new **Profiles** tab to view any collected profile data.
106
+ Please read the new [Profiling](https://github.com/sidekiq/sidekiq/wiki/Profiling) wiki page for details.
107
+ - **NEW FEATURE** Job Metrics now store up to 72 hours of data and the Web UI allows display of 24/48/72 hours. [#6614]
108
+ - CurrentAttribute support now uses `ActiveJob::Arguments` to serialize the context object, supporting Symbols and GlobalID.
109
+ The change should be backwards compatible. [#6510]
110
+ - Freshen up `Sidekiq::Web` to simplify the code and improve security [#6532]
111
+ The CSS has been rewritten from scratch to remove the Bootstrap framework.
112
+ - Add `on_cancel` callback for iterable jobs [#6607]
113
+ - Add `cursor` reader to get the current cursor inside iterable jobs [#6606]
114
+ - Default error logging has been modified to use Ruby's `Exception#detailed_message` and `#full_message` APIs.
115
+ - CI now runs against Redis, Dragonfly and Valkey.
116
+ - Job tags now allow custom CSS display [#6595]
117
+ - The Web UI's language picker now shows options in the native language
118
+ - Remove global variable usage within the codebase
119
+ - Colorize and adjust logging for easier reading
120
+ - Adjust Sidekiq's default thread priority to -1 for a 50ms timeslice.
121
+ This can help avoid TimeoutErrors when Sidekiq is overloaded. [#6543]
122
+ - Use `Logger#with_level`, remove Sidekiq's custom impl
123
+ - Remove `base64` gem dependency
124
+ - Support: (Dragonfly 1.27+, Valkey 7.2+, Redis 7.2+), Ruby 3.2+, Rails 7.0+
125
+
126
+ 7.3.10
127
+ ----------
128
+
129
+ - Deprecate Redis :password as a String to avoid log disclosure. [#6625]
130
+ Use a Proc instead: `config.redis = { password: ->(username) { "password" } }`
131
+
132
+ 7.3.9
133
+ ----------
134
+
135
+ - Only require activejob if necessary [#6584]
136
+ You might get `uninitialized constant Sidekiq::ActiveJob` if you
137
+ `require 'sidekiq'` before `require 'rails'`.
138
+ - Fix iterable job cancellation [#6589]
139
+ - Web UI accessibility improvements [#6604]
140
+
141
+ 7.3.8
142
+ ----------
143
+
144
+ - Fix dead tag links [#6554]
145
+ - Massive Web UI performance improvement, some pages up to 15x faster [#6555]
146
+
147
+ 7.3.7
148
+ ----------
149
+
150
+ - Backport `Sidekiq::Web.configure` for compatibility with 8.0 [#6532]
151
+ - Backport `url_params(key)` and `route_params(key)` for compatibility with 8.0 [#6532]
152
+ - Various fixes for UI filtering [#6508]
153
+ - Tune `inspect` for internal S::Components to keep size managable [#6553]
154
+
155
+ 7.3.6
156
+ ----------
157
+
158
+ - Forward compatibility fixes for Ruby 3.4
159
+ - Filtering in the Web UI now works via GET so you can bookmark a filtered view. [#6497]
160
+
161
+ 7.3.5
162
+ ----------
163
+
164
+ - Reimplement `retry_all` and `kill_all` API methods to use ZPOPMIN,
165
+ approximately 30-60% faster. [#6481]
166
+ - Add preload testing binary at `examples/testing/sidekiq_boot` to verify your Rails app boots correctly with Sidekiq Enterprise's app preloading.
167
+ - Fix circular require with ActiveJob adapter [#6477]
168
+ - Fix potential race condition leading to incorrect serialized values for CurrentAttributes [#6475]
169
+ - Restore missing elapsed time when default job logging is disabled
170
+
171
+ 7.3.4
172
+ ----------
173
+
174
+ - Fix FrozenError when starting Sidekiq [#6470]
175
+
176
+ 7.3.3
177
+ ----------
178
+
179
+ - Freeze global configuration once boot is complete, to avoid configuration race conditions [#6466, #6465]
180
+ - Sidekiq now warns if a job iteration takes longer than the `-t` timeout setting (defaults to 25 seconds)
181
+ - Iteration callbacks now have easy access to job arguments via the `arguments` method:
182
+ ```ruby
183
+ def on_stop
184
+ p arguments # => `[123, "string", {"key" => "value"}]`
185
+ id, str, hash = arguments
186
+ end
187
+ ```
188
+ - Iterable jobs can be cancelled via `Sidekiq::Client#cancel!`:
189
+ ```ruby
190
+ c = Sidekiq::Client.new
191
+ jid = c.push("class" => SomeJob, "args" => [123])
192
+ c.cancel!(jid) # => true
193
+ ```
194
+ - Take over support for ActiveJob's `:sidekiq` adapter [#6430, fatkodima]
195
+ - Ensure CurrentAttributes are in scope when creating batch callbacks [#6455]
196
+ - Add `Sidekiq.gem_version` API.
197
+ - Update Ukranian translations
198
+
199
+ 7.3.2
200
+ ----------
201
+
202
+ - Adjust ActiveRecord batch iteration to restart an interrupted batch from the beginning.
203
+ Each batch should be processed as a single transaction in order to be idempotent. [#6405]
204
+ - Fix typo in Sidekiq::DeadSet#kill [#6397]
205
+ - Fix CSS issue with bottom bar in Web UI [#6414]
206
+
207
+ 7.3.1
208
+ ----------
209
+
210
+ - Don't count job interruptions as failures in metrics [#6386]
211
+ - Add frozen string literal to a number of .rb files.
212
+ - Fix frozen string error with style_tag and script_tag [#6371]
213
+ - Fix an error on Ruby 2.7 because of usage of `Hash#except` [#6376]
214
+
215
+ 7.3.0
216
+ ----------
217
+
218
+ - **NEW FEATURE** Add `Sidekiq::IterableJob`, iteration support for long-running jobs. [#6286, fatkodima]
219
+ Iterable jobs are interruptible and can restart quickly if
220
+ running during a deploy. You must ensure that `each_iteration`
221
+ doesn't take more than Sidekiq's `-t` timeout (default: 25 seconds). Iterable jobs must not implement `perform`.
222
+ ```ruby
223
+ class ProcessArrayJob
224
+ include Sidekiq::IterableJob
225
+ def build_enumerator(*args, **kwargs)
226
+ array_enumerator(args, **kwargs)
227
+ end
228
+ def each_iteration(arg)
229
+ puts arg
230
+ end
231
+ end
232
+ ProcessArrayJob.perform_async(1, 2, 3)
233
+ ```
234
+ See the [Iteration](//github.com/sidekiq/sidekiq/wiki/Iteration) wiki page and the RDoc in `Sidekiq::IterableJob`.
235
+ This feature should be considered BETA until the next minor release.
236
+ - **SECURITY** The Web UI no longer allows extensions to use `<script>`.
237
+ Adjust CSP to disallow inline scripts within the Web UI. Please see
238
+ `examples/webui-ext` for how to register Web UI extensions and use
239
+ dynamic CSS and JS. This will make Sidekiq immune to XSS attacks. [#6270]
240
+ - Add config option, `:skip_default_job_logging` to disable Sidekiq's default
241
+ start/finish job logging. [#6200]
242
+ - Allow `Sidekiq::Limiter.redis` to use Redis Cluster [#6288]
243
+ - Retain CurrentAttributeѕ after inline execution [#6307]
244
+ - Ignore non-existent CurrentAttributes attributes when restoring [#6341]
245
+ - Raise default Redis {read,write,connect} timeouts from 1 to 3 seconds
246
+ to minimize ReadTimeoutErrors [#6162]
247
+ - Add `logger` as a dependency since it will become bundled in Ruby 3.5 [#6320]
248
+ - Ignore unsupported locales in the Web UI [#6313]
249
+
250
+ 7.2.4
251
+ ----------
252
+
253
+ - Fix XSS in metrics filtering introduced in 7.2.0, CVE-2024-32887
254
+ Thanks to @UmerAdeemCheema for the security report.
255
+
256
+ 7.2.3
257
+ ----------
258
+
259
+ - [Support Dragonfly.io](https://www.mikeperham.com/2024/02/01/supporting-dragonfly/) as an alternative Redis implementation
260
+ - Fix error unpacking some compressed error backtraces [#6241]
261
+ - Fix potential heartbeat data leak [#6227]
262
+ - Add ability to find a currently running work by jid [#6212, fatkodima]
263
+
264
+ 7.2.2
265
+ ----------
266
+
267
+ - Add `Process.warmup` call in Ruby 3.3+
268
+ - Batch jobs now skip transactional push [#6160]
269
+
270
+ 7.2.1
271
+ ----------
272
+
273
+ - Add `Sidekiq::Work` type which replaces the raw Hash as the third parameter in
274
+ `Sidekiq::WorkSet#each { |pid, tid, hash| ... }` [#6145]
275
+ - **DEPRECATED**: direct access to the attributes within the `hash` block parameter above.
276
+ The `Sidekiq::Work` instance contains accessor methods to get at the same data, e.g.
277
+ ```ruby
278
+ work["queue"] # Old
279
+ work.queue # New
280
+ ```
281
+ - Fix Ruby 3.3 warnings around `base64` gem [#6151, earlopain]
282
+
283
+ 7.2.0
284
+ ----------
285
+
286
+ - `sidekiq_retries_exhausted` can return `:discard` to avoid the deadset
287
+ and all death handlers [#6091]
288
+ - Metrics filtering by job class in Web UI [#5974]
289
+ - Better readability and formatting for numbers within the Web UI [#6080]
290
+ - Add explicit error if user code tries to nest test modes [#6078]
291
+ ```ruby
292
+ Sidekiq::Testing.inline! # global setting
293
+ Sidekiq::Testing.fake! do # override within block
294
+ # ok
295
+ Sidekiq::Testing.inline! do # can't override the override
296
+ # not ok, nested
297
+ end
298
+ end
299
+ ```
300
+ - **SECURITY** Forbid inline JavaScript execution in Web UI [#6074]
301
+ - Adjust redis-client adapter to avoid `method_missing` [#6083]
302
+ This can result in app code breaking if your app's Redis API usage was
303
+ depending on Sidekiq's adapter to correct invalid redis-client API usage.
304
+ One example:
305
+ ```ruby
306
+ # bad, not redis-client native
307
+ # Unsupported command argument type: TrueClass (TypeError)
308
+ Sidekiq.redis { |c| c.set("key", "value", nx: true, ex: 15) }
309
+ # good
310
+ Sidekiq.redis { |c| c.set("key", "value", "nx", "ex", 15) }
311
+ ```
312
+
313
+ 7.1.6
314
+ ----------
315
+
316
+ - The block forms of testing modes (inline, fake) are now thread-safe so you can have
317
+ a multithreaded test suite which uses different modes for different tests. [#6069]
318
+ - Fix breakage with non-Proc error handlers [#6065]
319
+
320
+ 7.1.5
321
+ ----------
322
+
323
+ - **FEATURE**: Job filtering within the Web UI. This feature has been open
324
+ sourced from Sidekiq Pro. [#6052]
325
+ - **API CHANGE** Error handlers now take three arguments `->(ex, context, config)`.
326
+ The previous calling convention will work until Sidekiq 8.0 but will print
327
+ out a deprecation warning. [#6051]
328
+ - Fix issue with the `batch_size` and `at` options in `S::Client.push_bulk` [#6040]
329
+ - Fix inline testing firing batch callbacks early [#6057]
330
+ - Use new log broadcast API in Rails 7.1 [#6054]
331
+ - Crash if user tries to use RESP2 `protocol: 2` [#6061]
332
+
5
333
  7.1.4
6
334
  ----------
7
335
 
@@ -130,6 +458,11 @@ end
130
458
  - Job Execution metrics!!!
131
459
  - See `docs/7.0-Upgrade.md` for release notes
132
460
 
461
+ 6.5.{10,11,12}
462
+ ----------
463
+
464
+ - Fixes for Rails 7.1 [#6067, #6070]
465
+
133
466
  6.5.9
134
467
  ----------
135
468
 
data/README.md CHANGED
@@ -4,21 +4,23 @@ Sidekiq
4
4
  [![Gem Version](https://badge.fury.io/rb/sidekiq.svg)](https://rubygems.org/gems/sidekiq)
5
5
  ![Build](https://github.com/sidekiq/sidekiq/workflows/CI/badge.svg)
6
6
 
7
- Simple, efficient background processing for Ruby.
7
+ Simple, efficient background jobs for Ruby.
8
8
 
9
9
  Sidekiq uses threads to handle many jobs at the same time in the
10
- same process. It does not require Rails but will integrate tightly with
11
- Rails to make background processing dead simple.
10
+ same process. Sidekiq can be used by any Ruby application.
12
11
 
13
12
 
14
13
  Requirements
15
14
  -----------------
16
15
 
17
- - Redis: 6.2+
18
- - Ruby: MRI 2.7+ or JRuby 9.3+.
16
+ - Redis: Redis 7.0+, Valkey 7.2+ or Dragonfly 1.27+
17
+ - Ruby: MRI 3.2+ or JRuby 9.4+.
19
18
 
20
- Sidekiq 7.0 supports Rails 6.0+ but does not require it.
19
+ Sidekiq 8.0 supports Rails and Active Job 7.0+.
21
20
 
21
+ Sidekiq supports [Valkey](https://valkey.io) and [Dragonfly](https://www.dragonflydb.io) as Redis alternatives.
22
+ Redis 7.2.4 is considered to be the canonical implementation.
23
+ Incompatibilities with that version are considered bugs.
22
24
 
23
25
  Installation
24
26
  -----------------
@@ -42,6 +44,7 @@ The benchmark in `bin/sidekiqload` creates 500,000 no-op jobs and drains them as
42
44
  This requires a lot of Redis network I/O and JSON parsing.
43
45
  This benchmark is IO-bound so we increase the concurrency to 25.
44
46
  If your application is sending lots of emails or performing other network-intensive work, you could see a similar benefit but be careful not to saturate the CPU.
47
+ Real world applications will rarely if ever need to use concurrency greater than 10.
45
48
 
46
49
  Version | Time to process 500k jobs | Throughput (jobs/sec) | Ruby | Concurrency | Job Type
47
50
  -----------------|------|---------|---------|------------------------|---
@@ -62,7 +65,7 @@ Want to Upgrade?
62
65
  Use `bundle up sidekiq` to upgrade Sidekiq and all its dependencies.
63
66
  Upgrade notes between each major version can be found in the `docs/` directory.
64
67
 
65
- I also sell Sidekiq Pro and Sidekiq Enterprise, extensions to Sidekiq which provide more
68
+ I also sell [Sidekiq Pro](https://billing.contribsys.com/spro/) and [Sidekiq Enterprise](https://billing.contribsys.com/sent/new.cgi), extensions to Sidekiq which provide more
66
69
  features, a commercial-friendly license and allow you to support high
67
70
  quality open source development all at the same time. Please see the
68
71
  [Sidekiq](https://sidekiq.org/) homepage for more detail.
@@ -71,7 +74,7 @@ quality open source development all at the same time. Please see the
71
74
  Problems?
72
75
  -----------------
73
76
 
74
- **Please do not directly email any Sidekiq committers with questions or problems.**
77
+ **Do not directly email any Sidekiq committers with questions or problems.**
75
78
  A community is best served when discussions are held in public.
76
79
 
77
80
  If you have a problem, please review the [FAQ](https://github.com/sidekiq/sidekiq/wiki/FAQ) and [Troubleshooting](https://github.com/sidekiq/sidekiq/wiki/Problems-and-Troubleshooting) wiki pages.
@@ -83,24 +86,24 @@ You can purchase at https://sidekiq.org; email support@contribsys.com for help.
83
86
  Useful resources:
84
87
 
85
88
  * Product documentation is in the [wiki](https://github.com/sidekiq/sidekiq/wiki).
86
- * Occasional announcements are made to the [@sidekiq](https://twitter.com/sidekiq) Twitter account.
89
+ * Occasional announcements are made to the [@sidekiq](https://ruby.social/@sidekiq) Mastodon account.
87
90
  * The [Sidekiq tag](https://stackoverflow.com/questions/tagged/sidekiq) on Stack Overflow has lots of useful Q &amp; A.
88
91
 
89
- Every Friday morning is Sidekiq office hour: I video chat and answer questions.
92
+ Every Thursday morning is Sidekiq Office Hour: I video chat and answer questions.
90
93
  See the [Sidekiq support page](https://sidekiq.org/support.html) for details.
91
94
 
92
95
  Contributing
93
96
  -----------------
94
97
 
95
- Please see [the contributing guidelines](https://github.com/sidekiq/sidekiq/blob/main/.github/contributing.md).
98
+ See [the contributing guidelines](https://github.com/sidekiq/sidekiq/blob/main/.github/contributing.md).
96
99
 
97
100
  License
98
101
  -----------------
99
102
 
100
- Please see [LICENSE.txt](https://github.com/sidekiq/sidekiq/blob/main/LICENSE.txt) for licensing details.
103
+ See [LICENSE.txt](https://github.com/sidekiq/sidekiq/blob/main/LICENSE.txt) for licensing details.
101
104
  The license for Sidekiq Pro and Sidekiq Enterprise can be found in [COMM-LICENSE.txt](https://github.com/sidekiq/sidekiq/blob/main/COMM-LICENSE.txt).
102
105
 
103
106
  Author
104
107
  -----------------
105
108
 
106
- Mike Perham, [@getajobmike](https://twitter.com/getajobmike) / [@sidekiq](https://twitter.com/sidekiq), [https://www.mikeperham.com](https://www.mikeperham.com) / [https://www.contribsys.com](https://www.contribsys.com)
109
+ Mike Perham, [mastodon](https://ruby.social/@getajobmike), [https://www.mikeperham.com](https://www.mikeperham.com) / [https://www.contribsys.com](https://www.contribsys.com)