sidekiq 3.4.1 → 7.3.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +5 -5
- data/Changes.md +1118 -4
- data/LICENSE.txt +9 -0
- data/README.md +55 -47
- data/bin/multi_queue_bench +271 -0
- data/bin/sidekiq +26 -3
- data/bin/sidekiqload +247 -0
- data/bin/sidekiqmon +11 -0
- 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/job_spec.rb.erb +6 -0
- data/lib/generators/sidekiq/templates/job_test.rb.erb +8 -0
- data/lib/sidekiq/api.rb +714 -312
- data/lib/sidekiq/capsule.rb +130 -0
- data/lib/sidekiq/cli.rb +275 -241
- data/lib/sidekiq/client.rb +141 -110
- data/lib/sidekiq/component.rb +68 -0
- data/lib/sidekiq/config.rb +291 -0
- data/lib/sidekiq/deploy.rb +62 -0
- data/lib/sidekiq/embedded.rb +61 -0
- data/lib/sidekiq/fetch.rb +53 -121
- data/lib/sidekiq/iterable_job.rb +53 -0
- data/lib/sidekiq/job/interrupt_handler.rb +22 -0
- data/lib/sidekiq/job/iterable/active_record_enumerator.rb +53 -0
- data/lib/sidekiq/job/iterable/csv_enumerator.rb +47 -0
- data/lib/sidekiq/job/iterable/enumerators.rb +135 -0
- data/lib/sidekiq/job/iterable.rb +231 -0
- data/lib/sidekiq/job.rb +385 -0
- data/lib/sidekiq/job_logger.rb +64 -0
- data/lib/sidekiq/job_retry.rb +305 -0
- data/lib/sidekiq/job_util.rb +107 -0
- data/lib/sidekiq/launcher.rb +241 -66
- data/lib/sidekiq/logger.rb +131 -0
- data/lib/sidekiq/manager.rb +91 -192
- data/lib/sidekiq/metrics/query.rb +156 -0
- data/lib/sidekiq/metrics/shared.rb +95 -0
- data/lib/sidekiq/metrics/tracking.rb +140 -0
- data/lib/sidekiq/middleware/chain.rb +114 -56
- data/lib/sidekiq/middleware/current_attributes.rb +111 -0
- data/lib/sidekiq/middleware/i18n.rb +8 -7
- data/lib/sidekiq/middleware/modules.rb +21 -0
- data/lib/sidekiq/monitor.rb +146 -0
- data/lib/sidekiq/paginator.rb +29 -16
- data/lib/sidekiq/processor.rb +248 -112
- data/lib/sidekiq/rails.rb +61 -27
- data/lib/sidekiq/redis_client_adapter.rb +114 -0
- data/lib/sidekiq/redis_connection.rb +68 -48
- data/lib/sidekiq/ring_buffer.rb +29 -0
- data/lib/sidekiq/scheduled.rb +173 -52
- data/lib/sidekiq/sd_notify.rb +149 -0
- data/lib/sidekiq/systemd.rb +24 -0
- data/lib/sidekiq/testing/inline.rb +7 -5
- data/lib/sidekiq/testing.rb +206 -65
- data/lib/sidekiq/transaction_aware_client.rb +51 -0
- data/lib/sidekiq/version.rb +4 -1
- data/lib/sidekiq/web/action.rb +99 -0
- data/lib/sidekiq/web/application.rb +479 -0
- data/lib/sidekiq/web/csrf_protection.rb +183 -0
- data/lib/sidekiq/web/helpers.rb +415 -0
- data/lib/sidekiq/web/router.rb +104 -0
- data/lib/sidekiq/web.rb +158 -200
- data/lib/sidekiq/worker_compatibility_alias.rb +13 -0
- data/lib/sidekiq.rb +100 -132
- data/sidekiq.gemspec +27 -23
- data/web/assets/images/apple-touch-icon.png +0 -0
- data/web/assets/images/favicon.ico +0 -0
- data/web/assets/javascripts/application.js +177 -72
- data/web/assets/javascripts/base-charts.js +106 -0
- data/web/assets/javascripts/chart.min.js +13 -0
- data/web/assets/javascripts/chartjs-plugin-annotation.min.js +7 -0
- data/web/assets/javascripts/dashboard-charts.js +192 -0
- data/web/assets/javascripts/dashboard.js +37 -286
- data/web/assets/javascripts/metrics.js +298 -0
- data/web/assets/stylesheets/application-dark.css +147 -0
- data/web/assets/stylesheets/application-rtl.css +163 -0
- data/web/assets/stylesheets/application.css +228 -247
- data/web/assets/stylesheets/bootstrap-rtl.min.css +9 -0
- data/web/assets/stylesheets/bootstrap.css +4 -8
- data/web/locales/ar.yml +87 -0
- data/web/locales/cs.yml +62 -52
- data/web/locales/da.yml +60 -53
- data/web/locales/de.yml +65 -53
- data/web/locales/el.yml +43 -24
- data/web/locales/en.yml +86 -61
- data/web/locales/es.yml +70 -53
- data/web/locales/fa.yml +80 -0
- data/web/locales/fr.yml +86 -56
- data/web/locales/gd.yml +99 -0
- data/web/locales/he.yml +80 -0
- data/web/locales/hi.yml +59 -59
- data/web/locales/it.yml +53 -53
- data/web/locales/ja.yml +78 -56
- data/web/locales/ko.yml +52 -52
- data/web/locales/lt.yml +83 -0
- data/web/locales/{no.yml → nb.yml} +62 -54
- data/web/locales/nl.yml +52 -52
- data/web/locales/pl.yml +45 -45
- data/web/locales/pt-br.yml +83 -55
- data/web/locales/pt.yml +51 -51
- data/web/locales/ru.yml +68 -60
- data/web/locales/sv.yml +53 -53
- data/web/locales/ta.yml +60 -60
- data/web/locales/tr.yml +101 -0
- data/web/locales/uk.yml +77 -0
- data/web/locales/ur.yml +80 -0
- data/web/locales/vi.yml +83 -0
- data/web/locales/zh-cn.yml +43 -16
- data/web/locales/zh-tw.yml +42 -8
- data/web/views/_footer.erb +22 -9
- data/web/views/_job_info.erb +27 -6
- data/web/views/_metrics_period_select.erb +12 -0
- data/web/views/_nav.erb +8 -22
- data/web/views/_paging.erb +3 -1
- data/web/views/_poll_link.erb +4 -0
- data/web/views/_summary.erb +7 -7
- data/web/views/busy.erb +91 -31
- data/web/views/dashboard.erb +52 -22
- data/web/views/dead.erb +5 -4
- data/web/views/filtering.erb +7 -0
- data/web/views/layout.erb +19 -7
- data/web/views/metrics.erb +91 -0
- data/web/views/metrics_for_job.erb +59 -0
- data/web/views/morgue.erb +26 -20
- data/web/views/queue.erb +36 -25
- data/web/views/queues.erb +24 -7
- data/web/views/retries.erb +29 -21
- data/web/views/retry.erb +6 -5
- data/web/views/scheduled.erb +20 -17
- data/web/views/scheduled_job_info.erb +2 -1
- metadata +101 -232
- data/.gitignore +0 -12
- data/.travis.yml +0 -16
- data/3.0-Upgrade.md +0 -70
- data/COMM-LICENSE +0 -85
- data/Contributing.md +0 -32
- data/Gemfile +0 -22
- data/LICENSE +0 -9
- data/Pro-2.0-Upgrade.md +0 -138
- data/Pro-Changes.md +0 -412
- data/Rakefile +0 -9
- data/bin/sidekiqctl +0 -93
- data/lib/generators/sidekiq/templates/worker_spec.rb.erb +0 -6
- data/lib/generators/sidekiq/templates/worker_test.rb.erb +0 -8
- data/lib/generators/sidekiq/worker_generator.rb +0 -49
- data/lib/sidekiq/actor.rb +0 -39
- data/lib/sidekiq/core_ext.rb +0 -105
- data/lib/sidekiq/exception_handler.rb +0 -30
- data/lib/sidekiq/extensions/action_mailer.rb +0 -56
- data/lib/sidekiq/extensions/active_record.rb +0 -39
- data/lib/sidekiq/extensions/class_methods.rb +0 -39
- data/lib/sidekiq/extensions/generic_proxy.rb +0 -24
- data/lib/sidekiq/logging.rb +0 -104
- data/lib/sidekiq/middleware/server/active_record.rb +0 -13
- data/lib/sidekiq/middleware/server/logging.rb +0 -35
- data/lib/sidekiq/middleware/server/retry_jobs.rb +0 -206
- data/lib/sidekiq/util.rb +0 -55
- data/lib/sidekiq/web_helpers.rb +0 -234
- data/lib/sidekiq/worker.rb +0 -89
- data/test/config.yml +0 -9
- data/test/env_based_config.yml +0 -11
- data/test/fake_env.rb +0 -0
- data/test/fixtures/en.yml +0 -2
- data/test/helper.rb +0 -39
- data/test/test_api.rb +0 -494
- data/test/test_cli.rb +0 -365
- data/test/test_client.rb +0 -269
- data/test/test_exception_handler.rb +0 -55
- data/test/test_extensions.rb +0 -120
- data/test/test_fetch.rb +0 -104
- data/test/test_logging.rb +0 -34
- data/test/test_manager.rb +0 -164
- data/test/test_middleware.rb +0 -159
- data/test/test_processor.rb +0 -166
- data/test/test_redis_connection.rb +0 -127
- data/test/test_retry.rb +0 -373
- data/test/test_scheduled.rb +0 -120
- data/test/test_scheduling.rb +0 -71
- data/test/test_sidekiq.rb +0 -69
- data/test/test_testing.rb +0 -82
- data/test/test_testing_fake.rb +0 -271
- data/test/test_testing_inline.rb +0 -93
- data/test/test_web.rb +0 -594
- data/test/test_web_helpers.rb +0 -52
- data/test/test_worker_generator.rb +0 -17
- data/web/assets/images/bootstrap/glyphicons-halflings-white.png +0 -0
- data/web/assets/images/bootstrap/glyphicons-halflings.png +0 -0
- data/web/assets/images/status/active.png +0 -0
- data/web/assets/images/status/idle.png +0 -0
- data/web/assets/javascripts/locales/README.md +0 -27
- data/web/assets/javascripts/locales/jquery.timeago.ar.js +0 -96
- data/web/assets/javascripts/locales/jquery.timeago.bg.js +0 -18
- data/web/assets/javascripts/locales/jquery.timeago.bs.js +0 -49
- data/web/assets/javascripts/locales/jquery.timeago.ca.js +0 -18
- data/web/assets/javascripts/locales/jquery.timeago.cs.js +0 -18
- data/web/assets/javascripts/locales/jquery.timeago.cy.js +0 -20
- data/web/assets/javascripts/locales/jquery.timeago.da.js +0 -18
- data/web/assets/javascripts/locales/jquery.timeago.de.js +0 -18
- data/web/assets/javascripts/locales/jquery.timeago.el.js +0 -18
- data/web/assets/javascripts/locales/jquery.timeago.en-short.js +0 -20
- data/web/assets/javascripts/locales/jquery.timeago.en.js +0 -20
- data/web/assets/javascripts/locales/jquery.timeago.es.js +0 -18
- data/web/assets/javascripts/locales/jquery.timeago.et.js +0 -18
- data/web/assets/javascripts/locales/jquery.timeago.fa.js +0 -22
- data/web/assets/javascripts/locales/jquery.timeago.fi.js +0 -28
- data/web/assets/javascripts/locales/jquery.timeago.fr-short.js +0 -16
- data/web/assets/javascripts/locales/jquery.timeago.fr.js +0 -17
- data/web/assets/javascripts/locales/jquery.timeago.he.js +0 -18
- data/web/assets/javascripts/locales/jquery.timeago.hr.js +0 -49
- data/web/assets/javascripts/locales/jquery.timeago.hu.js +0 -18
- data/web/assets/javascripts/locales/jquery.timeago.hy.js +0 -18
- data/web/assets/javascripts/locales/jquery.timeago.id.js +0 -18
- data/web/assets/javascripts/locales/jquery.timeago.it.js +0 -16
- data/web/assets/javascripts/locales/jquery.timeago.ja.js +0 -19
- data/web/assets/javascripts/locales/jquery.timeago.ko.js +0 -17
- data/web/assets/javascripts/locales/jquery.timeago.lt.js +0 -20
- data/web/assets/javascripts/locales/jquery.timeago.mk.js +0 -20
- data/web/assets/javascripts/locales/jquery.timeago.nl.js +0 -20
- data/web/assets/javascripts/locales/jquery.timeago.no.js +0 -18
- data/web/assets/javascripts/locales/jquery.timeago.pl.js +0 -31
- data/web/assets/javascripts/locales/jquery.timeago.pt-br.js +0 -16
- data/web/assets/javascripts/locales/jquery.timeago.pt.js +0 -16
- data/web/assets/javascripts/locales/jquery.timeago.ro.js +0 -18
- data/web/assets/javascripts/locales/jquery.timeago.rs.js +0 -49
- data/web/assets/javascripts/locales/jquery.timeago.ru.js +0 -34
- data/web/assets/javascripts/locales/jquery.timeago.sk.js +0 -18
- data/web/assets/javascripts/locales/jquery.timeago.sl.js +0 -44
- data/web/assets/javascripts/locales/jquery.timeago.sv.js +0 -18
- data/web/assets/javascripts/locales/jquery.timeago.th.js +0 -20
- data/web/assets/javascripts/locales/jquery.timeago.tr.js +0 -16
- data/web/assets/javascripts/locales/jquery.timeago.uk.js +0 -34
- data/web/assets/javascripts/locales/jquery.timeago.uz.js +0 -19
- data/web/assets/javascripts/locales/jquery.timeago.zh-cn.js +0 -20
- data/web/assets/javascripts/locales/jquery.timeago.zh-tw.js +0 -20
- data/web/views/_poll.erb +0 -10
- /data/web/assets/images/{status-sd8051fd480.png → status.png} +0 -0
data/Changes.md
CHANGED
@@ -1,3 +1,1117 @@
|
|
1
|
+
# Sidekiq Changes
|
2
|
+
|
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
|
+
|
5
|
+
7.3.0
|
6
|
+
----------
|
7
|
+
|
8
|
+
- **NEW FEATURE** Add `Sidekiq::IterableJob`, iteration support for long-running jobs. [#6286, fatkodima]
|
9
|
+
Iterable jobs are interruptible and can restart quickly if
|
10
|
+
running during a deploy. You must ensure that `each_iteration`
|
11
|
+
doesn't take more than Sidekiq's `-t` timeout (default: 25 seconds). Iterable jobs must not implement `perform`.
|
12
|
+
```ruby
|
13
|
+
class ProcessArrayJob
|
14
|
+
include Sidekiq::IterableJob
|
15
|
+
def build_enumerator(*args, **kwargs)
|
16
|
+
array_enumerator(args, **kwargs)
|
17
|
+
end
|
18
|
+
def each_iteration(arg)
|
19
|
+
puts arg
|
20
|
+
end
|
21
|
+
end
|
22
|
+
ProcessArrayJob.perform_async(1, 2, 3)
|
23
|
+
```
|
24
|
+
See the [Iteration](//github.com/sidekiq/sidekiq/wiki/Iteration) wiki page and the RDoc in `Sidekiq::IterableJob`.
|
25
|
+
This feature should be considered BETA until the next minor release.
|
26
|
+
- **SECURITY** The Web UI no longer allows extensions to use `<script>`.
|
27
|
+
Adjust CSP to disallow inline scripts within the Web UI. Please see
|
28
|
+
`examples/webui-ext` for how to register Web UI extensions and use
|
29
|
+
dynamic CSS and JS. This will make Sidekiq immune to XSS attacks. [#6270]
|
30
|
+
- Add config option, `:skip_default_job_logging` to disable Sidekiq's default
|
31
|
+
start/finish job logging. [#6200]
|
32
|
+
- Allow `Sidekiq::Limiter.redis` to use Redis Cluster [#6288]
|
33
|
+
- Retain CurrentAttributeѕ after inline execution [#6307]
|
34
|
+
- Ignore non-existent CurrentAttributes attributes when restoring [#6341]
|
35
|
+
- Raise default Redis {read,write,connect} timeouts from 1 to 3 seconds
|
36
|
+
to minimize ReadTimeoutErrors [#6162]
|
37
|
+
- Add `logger` as a dependency since it will become bundled in Ruby 3.5 [#6320]
|
38
|
+
- Ignore unsupported locales in the Web UI [#6313]
|
39
|
+
|
40
|
+
7.2.4
|
41
|
+
----------
|
42
|
+
|
43
|
+
- Fix XSS in metrics filtering introduced in 7.2.0, CVE-2024-32887
|
44
|
+
Thanks to @UmerAdeemCheema for the security report.
|
45
|
+
|
46
|
+
7.2.3
|
47
|
+
----------
|
48
|
+
|
49
|
+
- [Support Dragonfly.io](https://www.mikeperham.com/2024/02/01/supporting-dragonfly/) as an alternative Redis implementation
|
50
|
+
- Fix error unpacking some compressed error backtraces [#6241]
|
51
|
+
- Fix potential heartbeat data leak [#6227]
|
52
|
+
- Add ability to find a currently running work by jid [#6212, fatkodima]
|
53
|
+
|
54
|
+
7.2.2
|
55
|
+
----------
|
56
|
+
|
57
|
+
- Add `Process.warmup` call in Ruby 3.3+
|
58
|
+
- Batch jobs now skip transactional push [#6160]
|
59
|
+
|
60
|
+
7.2.1
|
61
|
+
----------
|
62
|
+
|
63
|
+
- Add `Sidekiq::Work` type which replaces the raw Hash as the third parameter in
|
64
|
+
`Sidekiq::WorkSet#each { |pid, tid, hash| ... }` [#6145]
|
65
|
+
- **DEPRECATED**: direct access to the attributes within the `hash` block parameter above.
|
66
|
+
The `Sidekiq::Work` instance contains accessor methods to get at the same data, e.g.
|
67
|
+
```ruby
|
68
|
+
work["queue"] # Old
|
69
|
+
work.queue # New
|
70
|
+
```
|
71
|
+
- Fix Ruby 3.3 warnings around `base64` gem [#6151, earlopain]
|
72
|
+
|
73
|
+
7.2.0
|
74
|
+
----------
|
75
|
+
|
76
|
+
- `sidekiq_retries_exhausted` can return `:discard` to avoid the deadset
|
77
|
+
and all death handlers [#6091]
|
78
|
+
- Metrics filtering by job class in Web UI [#5974]
|
79
|
+
- Better readability and formatting for numbers within the Web UI [#6080]
|
80
|
+
- Add explicit error if user code tries to nest test modes [#6078]
|
81
|
+
```ruby
|
82
|
+
Sidekiq::Testing.inline! # global setting
|
83
|
+
Sidekiq::Testing.fake! do # override within block
|
84
|
+
# ok
|
85
|
+
Sidekiq::Testing.inline! do # can't override the override
|
86
|
+
# not ok, nested
|
87
|
+
end
|
88
|
+
end
|
89
|
+
```
|
90
|
+
- **SECURITY** Forbid inline JavaScript execution in Web UI [#6074]
|
91
|
+
- Adjust redis-client adapter to avoid `method_missing` [#6083]
|
92
|
+
This can result in app code breaking if your app's Redis API usage was
|
93
|
+
depending on Sidekiq's adapter to correct invalid redis-client API usage.
|
94
|
+
One example:
|
95
|
+
```ruby
|
96
|
+
# bad, not redis-client native
|
97
|
+
# Unsupported command argument type: TrueClass (TypeError)
|
98
|
+
Sidekiq.redis { |c| c.set("key", "value", nx: true, ex: 15) }
|
99
|
+
# good
|
100
|
+
Sidekiq.redis { |c| c.set("key", "value", "nx", "ex", 15) }
|
101
|
+
```
|
102
|
+
|
103
|
+
7.1.6
|
104
|
+
----------
|
105
|
+
|
106
|
+
- The block forms of testing modes (inline, fake) are now thread-safe so you can have
|
107
|
+
a multithreaded test suite which uses different modes for different tests. [#6069]
|
108
|
+
- Fix breakage with non-Proc error handlers [#6065]
|
109
|
+
|
110
|
+
7.1.5
|
111
|
+
----------
|
112
|
+
|
113
|
+
- **FEATURE**: Job filtering within the Web UI. This feature has been open
|
114
|
+
sourced from Sidekiq Pro. [#6052]
|
115
|
+
- **API CHANGE** Error handlers now take three arguments `->(ex, context, config)`.
|
116
|
+
The previous calling convention will work until Sidekiq 8.0 but will print
|
117
|
+
out a deprecation warning. [#6051]
|
118
|
+
- Fix issue with the `batch_size` and `at` options in `S::Client.push_bulk` [#6040]
|
119
|
+
- Fix inline testing firing batch callbacks early [#6057]
|
120
|
+
- Use new log broadcast API in Rails 7.1 [#6054]
|
121
|
+
- Crash if user tries to use RESP2 `protocol: 2` [#6061]
|
122
|
+
|
123
|
+
7.1.4
|
124
|
+
----------
|
125
|
+
|
126
|
+
- Fix empty `retry_for` logic [#6035]
|
127
|
+
|
128
|
+
7.1.3
|
129
|
+
----------
|
130
|
+
|
131
|
+
- Add `sidekiq_options retry_for: 48.hours` to allow time-based retry windows [#6029]
|
132
|
+
- Support sidekiq_retry_in and sidekiq_retries_exhausted_block in ActiveJobs (#5994)
|
133
|
+
- Lowercase all Rack headers for Rack 3.0 [#5951]
|
134
|
+
- Validate Sidekiq::Web page refresh delay to avoid potential DoS,
|
135
|
+
CVE-2023-26141, thanks for reporting Keegan!
|
136
|
+
|
137
|
+
7.1.2
|
138
|
+
----------
|
139
|
+
|
140
|
+
- Mark Web UI assets as private so CDNs won't cache them [#5936]
|
141
|
+
- Fix stackoverflow when using Oj and the JSON log formatter [#5920]
|
142
|
+
- Remove spurious `enqueued_at` from scheduled ActiveJobs [#5937]
|
143
|
+
|
144
|
+
7.1.1
|
145
|
+
----------
|
146
|
+
|
147
|
+
- Support multiple CurrentAttributes [#5904]
|
148
|
+
- Speed up latency fetch with large queues on Redis <7 [#5910]
|
149
|
+
- Allow a larger default client pool [#5886]
|
150
|
+
- Ensure Sidekiq.options[:environment] == RAILS_ENV [#5932]
|
151
|
+
|
152
|
+
7.1.0
|
153
|
+
----------
|
154
|
+
|
155
|
+
- Improve display of ActiveJob arguments in Web UI [#5825, cover]
|
156
|
+
- Update `push_bulk` to push `batch_size` jobs at a time and allow laziness [#5827, fatkodima]
|
157
|
+
This allows Sidekiq::Client to push unlimited jobs as long as it has enough memory for the batch_size.
|
158
|
+
- Update `perform_bulk` to use `push_bulk` internally.
|
159
|
+
- Change return value of `push_bulk` to map 1-to-1 with arguments.
|
160
|
+
If you call `push_bulk(args: [[1], [2], [3]])`, you will now always get
|
161
|
+
an array of 3 values as the result: `["jid1", nil, "jid3"]` where nil means
|
162
|
+
that particular job did not push successfully (possibly due to middleware
|
163
|
+
stopping it). Previously nil values were removed so it was impossible to tell
|
164
|
+
which jobs pushed successfully and which did not.
|
165
|
+
- Migrate away from all deprecated Redis commands [#5788]
|
166
|
+
Sidekiq will now print a warning if you use one of those deprecated commands.
|
167
|
+
- Prefix all Sidekiq thread names [#5872]
|
168
|
+
|
169
|
+
7.0.9
|
170
|
+
----------
|
171
|
+
|
172
|
+
- Restore confirmation dialogs in Web UI [#5881, shevaun]
|
173
|
+
- Increase fetch timeout to minimize ReadTimeoutError [#5874]
|
174
|
+
- Reverse histogram tooltip ordering [#5868]
|
175
|
+
- Add Scottish Gaelic (gd) locale [#5867, GunChleoc]
|
176
|
+
|
177
|
+
7.0.8
|
178
|
+
----------
|
179
|
+
|
180
|
+
- **SECURITY** Sanitize `period` input parameter on Metrics pages.
|
181
|
+
Specially crafted values can lead to XSS. This functionality
|
182
|
+
was introduced in 7.0.4. Thank you to spercex @ huntr.dev [#5694]
|
183
|
+
- Add job hash as 3rd parameter to the `sidekiq_retry_in` block.
|
184
|
+
|
185
|
+
7.0.7
|
186
|
+
----------
|
187
|
+
|
188
|
+
- Fix redis-client API usage which could result in stuck Redis
|
189
|
+
connections [#5823]
|
190
|
+
- Fix AS::Duration with `sidekiq_retry_in` [#5806]
|
191
|
+
- Restore dumping config options on startup with `-v` [#5822]
|
192
|
+
|
193
|
+
7.0.5,7.0.6
|
194
|
+
----------
|
195
|
+
|
196
|
+
- More context for debugging json unsafe errors [#5787]
|
197
|
+
|
198
|
+
7.0.4
|
199
|
+
----------
|
200
|
+
|
201
|
+
- Performance and memory optimizations [#5768, fatkodima]
|
202
|
+
- Add 1-8 hour period selector to Metrics pages [#5694]
|
203
|
+
- Fix process display with `sidekiqmon` [#5733]
|
204
|
+
|
205
|
+
7.0.3
|
206
|
+
----------
|
207
|
+
|
208
|
+
- Don't warn about memory policy on Redis Enterprise [#5712]
|
209
|
+
- Don't allow Quiet/Stop on embedded Sidekiq instances [#5716]
|
210
|
+
- Fix `size: X` for configuring the default Redis pool size [#5702]
|
211
|
+
- Improve the display of queue weights on Busy page [#5642]
|
212
|
+
- Freeze CurrentAttributes on a job once initially set [#5692]
|
213
|
+
|
214
|
+
7.0.2
|
215
|
+
----------
|
216
|
+
|
217
|
+
- Improve compatibility with custom loggers [#5673]
|
218
|
+
- Add queue weights on Busy page [#5640]
|
219
|
+
- Add BID link on job_info page if job is part of a Batch [#5623]
|
220
|
+
- Allow custom extensions to add rows/links within Job detail pages [#5624]
|
221
|
+
```ruby
|
222
|
+
Sidekiq::Web.custom_job_info_rows << AddAccountLink.new
|
223
|
+
|
224
|
+
class AddAccountLink
|
225
|
+
include CGI::Util
|
226
|
+
def add_pair(job)
|
227
|
+
# yield a (name, value) pair
|
228
|
+
# You can include HTML tags and CSS, Sidekiq does not do any
|
229
|
+
# escaping so beware user data injection! Note how we use CGI's
|
230
|
+
# `h` escape helper.
|
231
|
+
aid = job["account_id"]
|
232
|
+
yield "Account", "<a href='/accounts/#{h aid}'>#{h aid}</a>" if aid
|
233
|
+
end
|
234
|
+
end
|
235
|
+
```
|
236
|
+
|
237
|
+
7.0.1
|
238
|
+
----------
|
239
|
+
|
240
|
+
- Allow an embedding process to reuse its own heartbeat thread
|
241
|
+
- Update zh-cn localization
|
242
|
+
|
243
|
+
7.0.0
|
244
|
+
----------
|
245
|
+
|
246
|
+
- Embedded mode!
|
247
|
+
- Capsules!!
|
248
|
+
- Job Execution metrics!!!
|
249
|
+
- See `docs/7.0-Upgrade.md` for release notes
|
250
|
+
|
251
|
+
6.5.{10,11,12}
|
252
|
+
----------
|
253
|
+
|
254
|
+
- Fixes for Rails 7.1 [#6067, #6070]
|
255
|
+
|
256
|
+
6.5.9
|
257
|
+
----------
|
258
|
+
|
259
|
+
- Ensure Sidekiq.options[:environment] == RAILS_ENV [#5932]
|
260
|
+
|
261
|
+
6.5.8
|
262
|
+
----------
|
263
|
+
|
264
|
+
- Fail if using a bad version of scout_apm [#5616]
|
265
|
+
- Add pagination to Busy page [#5556]
|
266
|
+
- Speed up WorkSet#each [#5559]
|
267
|
+
- Adjust CurrentAttributes to work with the String class name so we aren't referencing the Class within a Rails initializer [#5536]
|
268
|
+
|
269
|
+
6.5.7
|
270
|
+
----------
|
271
|
+
|
272
|
+
- Updates for JA and ZH locales
|
273
|
+
- Further optimizations for scheduled polling [#5513]
|
274
|
+
|
275
|
+
6.5.6
|
276
|
+
----------
|
277
|
+
|
278
|
+
- Fix deprecation warnings with redis-rb 4.8.0 [#5484]
|
279
|
+
- Lock redis-rb to < 5.0 as we are moving to redis-client in Sidekiq 7.0
|
280
|
+
|
281
|
+
6.5.5
|
282
|
+
----------
|
283
|
+
|
284
|
+
- Fix require issue with job_retry.rb [#5462]
|
285
|
+
- Improve Sidekiq::Web compatibility with Rack 3.x
|
286
|
+
|
287
|
+
6.5.4
|
288
|
+
----------
|
289
|
+
|
290
|
+
- Fix invalid code on Ruby 2.5 [#5460]
|
291
|
+
- Fix further metrics dependency issues [#5457]
|
292
|
+
|
293
|
+
6.5.3
|
294
|
+
----------
|
295
|
+
|
296
|
+
- Don't require metrics code without explicit opt-in [#5456]
|
297
|
+
|
298
|
+
6.5.2
|
299
|
+
----------
|
300
|
+
|
301
|
+
- [Job Metrics are under active development, help wanted!](https://github.com/sidekiq/sidekiq/wiki/Metrics#contributing) **BETA**
|
302
|
+
- Add `Context` column on queue page which shows any CurrentAttributes [#5450]
|
303
|
+
- `sidekiq_retry_in` may now return `:discard` or `:kill` to dynamically stop job retries [#5406]
|
304
|
+
- Smarter sorting of processes in /busy Web UI [#5398]
|
305
|
+
- Fix broken hamburger menu in mobile UI [#5428]
|
306
|
+
- Require redis-rb 4.5.0. Note that Sidekiq will break if you use the
|
307
|
+
[`Redis.exists_returns_integer = false`](https://github.com/redis/redis-rb/blob/master/CHANGELOG.md#450) flag. [#5394]
|
308
|
+
|
309
|
+
6.5.1
|
310
|
+
----------
|
311
|
+
|
312
|
+
- Fix `push_bulk` breakage [#5387]
|
313
|
+
|
314
|
+
6.5.0
|
315
|
+
---------
|
316
|
+
|
317
|
+
- Substantial refactoring of Sidekiq server internals, part of a larger effort
|
318
|
+
to reduce Sidekiq's internal usage of global methods and data, see [docs/global_to_local.md](docs/global_to_local.md) and [docs/middleware.md](docs/middleware.md).
|
319
|
+
- **Add beta support for the `redis-client` gem**. This will become the default Redis driver in Sidekiq 7.0. [#5298]
|
320
|
+
Read more: https://github.com/sidekiq/sidekiq/wiki/Using-redis-client
|
321
|
+
- **Add beta support for DB transaction-aware client** [#5291]
|
322
|
+
Add this line to your initializer and any jobs created during a transaction
|
323
|
+
will only be pushed to Redis **after the transaction commits**. You will need to add the
|
324
|
+
`after_commit_everywhere` gem to your Gemfile.
|
325
|
+
```ruby
|
326
|
+
Sidekiq.transactional_push!
|
327
|
+
```
|
328
|
+
This feature does not have a lot of production usage yet; please try it out and let us
|
329
|
+
know if you have any issues. It will be fully supported in Sidekiq 7.0 or removed if it
|
330
|
+
proves problematic.
|
331
|
+
- Fix regression with middleware arguments [#5312]
|
332
|
+
|
333
|
+
6.4.2
|
334
|
+
---------
|
335
|
+
|
336
|
+
- Strict argument checking now runs after client-side middleware [#5246]
|
337
|
+
- Fix page events with live polling [#5184]
|
338
|
+
- Many under-the-hood changes to remove all usage of the term "worker"
|
339
|
+
from the Sidekiq codebase and APIs. This mostly involved RDoc and local
|
340
|
+
variable names but a few constants and public APIs were changed. The old
|
341
|
+
APIs will be removed in Sidekiq 7.0.
|
342
|
+
```
|
343
|
+
Sidekiq::DEFAULT_WORKER_OPTIONS -> Sidekiq.default_job_options
|
344
|
+
Sidekiq.default_worker_options -> Sidekiq.default_job_options
|
345
|
+
Sidekiq::Queues["default"].jobs_by_worker(HardJob) -> Sidekiq::Queues["default"].jobs_by_class(HardJob)
|
346
|
+
```
|
347
|
+
|
348
|
+
6.4.1
|
349
|
+
---------
|
350
|
+
|
351
|
+
- Fix pipeline/multi deprecations in redis-rb 4.6
|
352
|
+
- Fix sidekiq.yml YAML load errors on Ruby 3.1 [#5141]
|
353
|
+
- Sharding support for `perform_bulk` [#5129]
|
354
|
+
- Refactor job logger for SPEEEEEEED
|
355
|
+
|
356
|
+
6.4.0
|
357
|
+
---------
|
358
|
+
|
359
|
+
- **SECURITY**: Validate input to avoid possible DoS in Web UI.
|
360
|
+
- Add **strict argument checking** [#5071]
|
361
|
+
Sidekiq will now log a warning if JSON-unsafe arguments are passed to `perform_async`.
|
362
|
+
Add `Sidekiq.strict_args!(false)` to your initializer to disable this warning.
|
363
|
+
This warning will switch to an exception in Sidekiq 7.0.
|
364
|
+
- Note that Delayed Extensions will be removed in Sidekiq 7.0 [#5076]
|
365
|
+
- Add `perform_{inline,sync}` in Sidekiq::Job to run a job synchronously [#5061, hasan-ally]
|
366
|
+
```ruby
|
367
|
+
SomeJob.perform_async(args...)
|
368
|
+
SomeJob.perform_sync(args...)
|
369
|
+
SomeJob.perform_inline(args...)
|
370
|
+
```
|
371
|
+
You can also dynamically redirect a job to run synchronously:
|
372
|
+
```ruby
|
373
|
+
SomeJob.set("sync": true).perform_async(args...) # will run via perform_inline
|
374
|
+
```
|
375
|
+
- Replace Sidekiq::Worker `app/workers` generator with Sidekiq::Job `app/sidekiq` generator [#5055]
|
376
|
+
```
|
377
|
+
bin/rails generate sidekiq:job ProcessOrderJob
|
378
|
+
```
|
379
|
+
- Fix job retries losing CurrentAttributes [#5090]
|
380
|
+
- Tweak shutdown to give long-running threads time to cleanup [#5095]
|
381
|
+
|
382
|
+
6.3.1
|
383
|
+
---------
|
384
|
+
|
385
|
+
- Fix keyword arguments error with CurrentAttributes on Ruby 3.0 [#5048]
|
386
|
+
|
387
|
+
6.3.0
|
388
|
+
---------
|
389
|
+
|
390
|
+
- **BREAK**: The Web UI has been refactored to remove jQuery. Any UI extensions
|
391
|
+
which use jQuery will break.
|
392
|
+
- **FEATURE**: Sidekiq.logger has been enhanced so any `Rails.logger`
|
393
|
+
output in jobs now shows up in the Sidekiq console. Remove any logger
|
394
|
+
hacks in your initializer and see if it Just Works™ now. [#5021]
|
395
|
+
- **FEATURE**: Add `Sidekiq::Job` alias for `Sidekiq::Worker`, to better
|
396
|
+
reflect industry standard terminology. You can now do this:
|
397
|
+
```ruby
|
398
|
+
class MyJob
|
399
|
+
include Sidekiq::Job
|
400
|
+
sidekiq_options ...
|
401
|
+
def perform(args)
|
402
|
+
end
|
403
|
+
end
|
404
|
+
```
|
405
|
+
- **FEATURE**: Support for serializing ActiveSupport::CurrentAttributes into each job. [#4982]
|
406
|
+
```ruby
|
407
|
+
# config/initializers/sidekiq.rb
|
408
|
+
require "sidekiq/middleware/current_attributes"
|
409
|
+
Sidekiq::CurrentAttributes.persist(Myapp::Current) # Your AS::CurrentAttributes singleton
|
410
|
+
```
|
411
|
+
- **FEATURE**: Add `Sidekiq::Worker.perform_bulk` for enqueuing jobs in bulk,
|
412
|
+
similar to `Sidekiq::Client.push_bulk` [#5042]
|
413
|
+
```ruby
|
414
|
+
MyJob.perform_bulk([[1], [2], [3]])
|
415
|
+
```
|
416
|
+
- Implement `queue_as`, `wait` and `wait_until` for ActiveJob compatibility [#5003]
|
417
|
+
- Scheduler now uses Lua to reduce Redis load and network roundtrips [#5044]
|
418
|
+
- Retry Redis operation if we get an `UNBLOCKED` Redis error [#4985]
|
419
|
+
- Run existing signal traps, if any, before running Sidekiq's trap [#4991]
|
420
|
+
- Fix fetch bug when using weighted queues which caused Sidekiq to stop
|
421
|
+
processing queues randomly [#5031]
|
422
|
+
|
423
|
+
6.2.2
|
424
|
+
---------
|
425
|
+
|
426
|
+
- Reduce retry jitter, add jitter to `sidekiq_retry_in` values [#4957]
|
427
|
+
- Minimize scheduler load on Redis at scale [#4882]
|
428
|
+
- Improve logging of delay jobs [#4904, BuonOno]
|
429
|
+
- Minor CSS improvements for buttons and tables, design PRs always welcome!
|
430
|
+
- Tweak Web UI `Cache-Control` header [#4966]
|
431
|
+
- Rename internal API class `Sidekiq::Job` to `Sidekiq::JobRecord` [#4955]
|
432
|
+
|
433
|
+
6.2.1
|
434
|
+
---------
|
435
|
+
|
436
|
+
- Update RTT warning logic to handle transient RTT spikes [#4851]
|
437
|
+
- Fix very low priority CVE on unescaped queue name [#4852]
|
438
|
+
- Add note about sessions and Rails apps in API mode
|
439
|
+
|
440
|
+
6.2.0
|
441
|
+
---------
|
442
|
+
|
443
|
+
- Store Redis RTT and log if poor [#4824]
|
444
|
+
- Add process/thread stats to Busy page [#4806]
|
445
|
+
- Improve Web UI on mobile devices [#4840]
|
446
|
+
- **Refactor Web UI session usage** [#4804]
|
447
|
+
Numerous people have hit "Forbidden" errors and struggled with Sidekiq's
|
448
|
+
Web UI session requirement. If you have code in your initializer for
|
449
|
+
Web sessions, it's quite possible it will need to be removed. Here's
|
450
|
+
an overview:
|
451
|
+
```
|
452
|
+
Sidekiq::Web needs a valid Rack session for CSRF protection. If this is a Rails app,
|
453
|
+
make sure you mount Sidekiq::Web *inside* your routes in `config/routes.rb` so
|
454
|
+
Sidekiq can reuse the Rails session:
|
455
|
+
|
456
|
+
Rails.application.routes.draw do
|
457
|
+
mount Sidekiq::Web => "/sidekiq"
|
458
|
+
....
|
459
|
+
end
|
460
|
+
|
461
|
+
If this is a bare Rack app, use a session middleware before Sidekiq::Web:
|
462
|
+
|
463
|
+
# first, use IRB to create a shared secret key for sessions and commit it
|
464
|
+
require 'securerandom'; File.open(".session.key", "w") {|f| f.write(SecureRandom.hex(32)) }
|
465
|
+
|
466
|
+
# now, update your Rack app to include the secret with a session cookie middleware
|
467
|
+
use Rack::Session::Cookie, secret: File.read(".session.key"), same_site: true, max_age: 86400
|
468
|
+
run Sidekiq::Web
|
469
|
+
|
470
|
+
If this is a Rails app in API mode, you need to enable sessions.
|
471
|
+
|
472
|
+
https://guides.rubyonrails.org/api_app.html#using-session-middlewares
|
473
|
+
```
|
474
|
+
|
475
|
+
6.1.3
|
476
|
+
---------
|
477
|
+
|
478
|
+
- Warn if Redis is configured to evict data under memory pressure [#4752]
|
479
|
+
- Add process RSS on the Busy page [#4717]
|
480
|
+
|
481
|
+
6.1.2
|
482
|
+
---------
|
483
|
+
|
484
|
+
- Improve readability in dark mode Web UI [#4674]
|
485
|
+
- Fix Web UI crash with corrupt session [#4672]
|
486
|
+
- Allow middleware to yield arguments [#4673, @eugeneius]
|
487
|
+
- Migrate CI from CircleCI to GitHub Actions [#4677]
|
488
|
+
|
489
|
+
6.1.1
|
490
|
+
---------
|
491
|
+
|
492
|
+
- Jobs are now sorted by age in the Busy Workers table. [#4641]
|
493
|
+
- Fix "check all" JS logic in Web UI [#4619]
|
494
|
+
|
495
|
+
6.1.0
|
496
|
+
---------
|
497
|
+
|
498
|
+
- Web UI - Dark Mode fixes [#4543, natematykiewicz]
|
499
|
+
- Ensure `Rack::ContentLength` is loaded as middleware for correct Web UI responses [#4541]
|
500
|
+
- Avoid exception dumping SSL store in Redis connection logging [#4532]
|
501
|
+
- Better error messages in Sidekiq::Client [#4549]
|
502
|
+
- Remove rack-protection, reimplement CSRF protection [#4588]
|
503
|
+
- Require redis-rb 4.2 [#4591]
|
504
|
+
- Update to jquery 1.12.4 [#4593]
|
505
|
+
- Refactor internal fetch logic and API [#4602]
|
506
|
+
|
507
|
+
6.0.7
|
508
|
+
---------
|
509
|
+
|
510
|
+
- Refactor systemd integration to work better with custom binaries [#4511]
|
511
|
+
- Don't connect to Redis at process exit if not needed [#4502]
|
512
|
+
- Remove Redis connection naming [#4479]
|
513
|
+
- Fix Redis Sentinel password redaction [#4499]
|
514
|
+
- Add Vietnamese locale (vi) [#4528]
|
515
|
+
|
516
|
+
6.0.6
|
517
|
+
---------
|
518
|
+
|
519
|
+
- **Integrate with systemd's watchdog and notification features** [#4488]
|
520
|
+
Set `Type=notify` in [sidekiq.service](https://github.com/sidekiq/sidekiq/blob/4b8a8bd3ae42f6e48ae1fdaf95ed7d7af18ed8bb/examples/systemd/sidekiq.service#L30-L39). The integration works automatically.
|
521
|
+
- Use `setTimeout` rather than `setInterval` to avoid thundering herd [#4480]
|
522
|
+
- Fix edge case where a job can be pushed without a queue.
|
523
|
+
- Flush job stats at exit [#4498]
|
524
|
+
- Check RAILS_ENV before RACK_ENV [#4493]
|
525
|
+
- Add Lithuanian locale [#4476]
|
526
|
+
|
527
|
+
6.0.5
|
528
|
+
---------
|
529
|
+
|
530
|
+
- Fix broken Web UI response when using NewRelic and Rack 2.1.2+. [#4440]
|
531
|
+
- Update APIs to use `UNLINK`, not `DEL`. [#4449]
|
532
|
+
- Fix Ruby 2.7 warnings [#4412]
|
533
|
+
- Add support for `APP_ENV` [[95fa5d9]](https://github.com/sidekiq/sidekiq/commit/95fa5d90192148026e52ca2902f1b83c70858ce8)
|
534
|
+
|
535
|
+
6.0.4
|
536
|
+
---------
|
537
|
+
|
538
|
+
- Fix ActiveJob's `sidekiq_options` integration [#4404]
|
539
|
+
- Sidekiq Pro users will now see a Pause button next to each queue in
|
540
|
+
the Web UI, allowing them to pause queues manually [#4374, shayonj]
|
541
|
+
- Fix Sidekiq::Workers API unintentional change in 6.0.2 [#4387]
|
542
|
+
|
543
|
+
|
544
|
+
6.0.3
|
545
|
+
---------
|
546
|
+
|
547
|
+
- Fix `Sidekiq::Client.push_bulk` API which was erroneously putting
|
548
|
+
invalid `at` values in the job payloads [#4321]
|
549
|
+
|
550
|
+
6.0.2
|
551
|
+
---------
|
552
|
+
|
553
|
+
- Fix Sidekiq Enterprise's rolling restart functionality, broken by refactoring in 6.0.0. [#4334]
|
554
|
+
- More internal refactoring and performance tuning [fatkodima]
|
555
|
+
|
556
|
+
6.0.1
|
557
|
+
---------
|
558
|
+
|
559
|
+
- **Performance tuning**, Sidekiq should be 10-15% faster now [#4303, 4299,
|
560
|
+
4269, fatkodima]
|
561
|
+
- **Dark Mode support in Web UI** (further design polish welcome!) [#4227, mperham,
|
562
|
+
fatkodima, silent-e]
|
563
|
+
- **Job-specific log levels**, allowing you to turn on debugging for
|
564
|
+
problematic workers. [fatkodima, #4287]
|
565
|
+
```ruby
|
566
|
+
MyWorker.set(log_level: :debug).perform_async(...)
|
567
|
+
```
|
568
|
+
- **Ad-hoc job tags**. You can tag your jobs with, e.g, subdomain, tenant, country,
|
569
|
+
locale, application, version, user/client, "alpha/beta/pro/ent", types of jobs,
|
570
|
+
teams/people responsible for jobs, additional metadata, etc.
|
571
|
+
Tags are shown on different pages with job listings. Sidekiq Pro users
|
572
|
+
can filter based on them [fatkodima, #4280]
|
573
|
+
```ruby
|
574
|
+
class MyWorker
|
575
|
+
include Sidekiq::Worker
|
576
|
+
sidekiq_options tags: ['bank-ops', 'alpha']
|
577
|
+
...
|
578
|
+
end
|
579
|
+
```
|
580
|
+
- Fetch scheduled jobs in batches before pushing into specific queues.
|
581
|
+
This will decrease enqueueing time of scheduled jobs by a third. [fatkodima, #4273]
|
582
|
+
```
|
583
|
+
ScheduledSet with 10,000 jobs
|
584
|
+
Before: 56.6 seconds
|
585
|
+
After: 39.2 seconds
|
586
|
+
```
|
587
|
+
- Compress error backtraces before pushing into Redis, if you are
|
588
|
+
storing error backtraces, this will halve the size of your RetrySet
|
589
|
+
in Redis [fatkodima, #4272]
|
590
|
+
```
|
591
|
+
RetrySet with 100,000 jobs
|
592
|
+
Before: 261 MB
|
593
|
+
After: 129 MB
|
594
|
+
```
|
595
|
+
- Support display of ActiveJob 6.0 payloads in the Web UI [#4263]
|
596
|
+
- Add `SortedSet#scan` for pattern based scanning. For large sets this API will be **MUCH** faster
|
597
|
+
than standard iteration using each. [fatkodima, #4262]
|
598
|
+
```ruby
|
599
|
+
Sidekiq::DeadSet.new.scan("UnreliableApi") do |job|
|
600
|
+
job.retry
|
601
|
+
end
|
602
|
+
```
|
603
|
+
- Dramatically speed up SortedSet#find\_job(jid) by using Redis's ZSCAN
|
604
|
+
support, approx 10x faster. [fatkodima, #4259]
|
605
|
+
```
|
606
|
+
zscan 0.179366 0.047727 0.227093 ( 1.161376)
|
607
|
+
enum 8.522311 0.419826 8.942137 ( 9.785079)
|
608
|
+
```
|
609
|
+
- Respect rails' generators `test_framework` option and gracefully handle extra `worker` suffix on generator [fatkodima, #4256]
|
610
|
+
- Add ability to sort 'Enqueued' page on Web UI by position in the queue [fatkodima, #4248]
|
611
|
+
- Support `Client.push_bulk` with different delays [fatkodima, #4243]
|
612
|
+
```ruby
|
613
|
+
Sidekiq::Client.push_bulk("class" => FooJob, "args" => [[1], [2]], "at" => [1.minute.from_now.to_f, 5.minutes.from_now.to_f])
|
614
|
+
```
|
615
|
+
- Easier way to test enqueuing specific ActionMailer and ActiveRecord delayed jobs. Instead of manually
|
616
|
+
parsing embedded class, you can now test by fetching jobs for specific classes. [fatkodima, #4292]
|
617
|
+
```ruby
|
618
|
+
assert_equal 1, Sidekiq::Extensions::DelayedMailer.jobs_for(FooMailer).size
|
619
|
+
```
|
620
|
+
- Add `sidekiqmon` to gemspec executables [#4242]
|
621
|
+
- Gracefully handle `Sidekiq.logger = nil` [#4240]
|
622
|
+
- Inject Sidekiq::LogContext module if user-supplied logger does not include it [#4239]
|
623
|
+
|
624
|
+
6.0
|
625
|
+
---------
|
626
|
+
|
627
|
+
This release has major breaking changes. Read and test carefully in production.
|
628
|
+
|
629
|
+
- With Rails 6.0.2+, ActiveJobs can now use `sidekiq_options` directly to configure Sidekiq
|
630
|
+
features/internals like the retry subsystem. [#4213, pirj]
|
631
|
+
```ruby
|
632
|
+
class MyJob < ActiveJob::Base
|
633
|
+
queue_as :myqueue
|
634
|
+
sidekiq_options retry: 10, backtrace: 20
|
635
|
+
def perform(...)
|
636
|
+
end
|
637
|
+
end
|
638
|
+
```
|
639
|
+
- Logging has been redesigned to allow for pluggable log formatters:
|
640
|
+
```ruby
|
641
|
+
Sidekiq.configure_server do |config|
|
642
|
+
config.log_formatter = Sidekiq::Logger::Formatters::JSON.new
|
643
|
+
end
|
644
|
+
```
|
645
|
+
See the [Logging wiki page](https://github.com/sidekiq/sidekiq/wiki/Logging) for more details.
|
646
|
+
- **BREAKING CHANGE** Validate proper usage of the `REDIS_PROVIDER`
|
647
|
+
variable. This variable is meant to hold the name of the environment
|
648
|
+
variable which contains your Redis URL, so that you can switch Redis
|
649
|
+
providers quickly and easily with a single variable change. It is not
|
650
|
+
meant to hold the actual Redis URL itself. If you want to manually set
|
651
|
+
the Redis URL (not recommended as it implies you have no failover),
|
652
|
+
then you may set `REDIS_URL` directly. [#3969]
|
653
|
+
- **BREAKING CHANGE** Increase default shutdown timeout from 8 seconds
|
654
|
+
to 25 seconds. Both Heroku and ECS now use 30 second shutdown timeout
|
655
|
+
by default and we want Sidekiq to take advantage of this time. If you
|
656
|
+
have deployment scripts which depend on the old default timeout, use `-t 8` to
|
657
|
+
get the old behavior. [#3968]
|
658
|
+
- **BREAKING CHANGE** Remove the daemonization, logfile and pidfile
|
659
|
+
arguments to Sidekiq. Use a proper process supervisor (e.g. systemd or
|
660
|
+
foreman) to manage Sidekiq. See the Deployment wiki page for links to
|
661
|
+
more resources.
|
662
|
+
- Integrate the StandardRB code formatter to ensure consistent code
|
663
|
+
styling. [#4114, gearnode]
|
664
|
+
|
665
|
+
5.2.10
|
666
|
+
---------
|
667
|
+
|
668
|
+
- Backport fix for CVE-2022-23837.
|
669
|
+
- Migrate to `exists?` for redis-rb.
|
670
|
+
- Lock redis-rb to <4.6 to avoid deprecations.
|
671
|
+
|
672
|
+
5.2.9
|
673
|
+
---------
|
674
|
+
|
675
|
+
- Release Rack lock due to a cascade of CVEs. [#4566]
|
676
|
+
Pro-tip: don't lock Rack.
|
677
|
+
|
678
|
+
5.2.8
|
679
|
+
---------
|
680
|
+
|
681
|
+
- Lock to Rack 2.0.x to prevent future incompatibilities
|
682
|
+
- Fix invalid reference in `sidekiqctl`
|
683
|
+
|
684
|
+
5.2.7
|
685
|
+
---------
|
686
|
+
|
687
|
+
- Fix stale `enqueued_at` when retrying [#4149]
|
688
|
+
- Move build to [Circle CI](https://circleci.com/gh/mperham/sidekiq) [#4120]
|
689
|
+
|
690
|
+
5.2.6
|
691
|
+
---------
|
692
|
+
|
693
|
+
- Fix edge case where a job failure during Redis outage could result in a lost job [#4141]
|
694
|
+
- Better handling of malformed job arguments in payload [#4095]
|
695
|
+
- Restore bootstap's dropdown css component [#4099, urkle]
|
696
|
+
- Display human-friendly time diff for longer queue latencies [#4111, interlinked]
|
697
|
+
- Allow `Sidekiq::Worker#set` to be chained
|
698
|
+
|
699
|
+
5.2.5
|
700
|
+
---------
|
701
|
+
|
702
|
+
- Fix default usage of `config/sidekiq.yml` [#4077, Tensho]
|
703
|
+
|
704
|
+
5.2.4
|
705
|
+
---------
|
706
|
+
|
707
|
+
- Add warnings for various deprecations and changes coming in Sidekiq 6.0.
|
708
|
+
See the 6-0 branch. [#4056]
|
709
|
+
- Various improvements to the Sidekiq test suite and coverage [#4026, #4039, Tensho]
|
710
|
+
|
711
|
+
5.2.3
|
712
|
+
---------
|
713
|
+
|
714
|
+
- Warning message on invalid REDIS\_PROVIDER [#3970]
|
715
|
+
- Add `sidekiqctl status` command [#4003, dzunk]
|
716
|
+
- Update elapsed time calculatons to use monotonic clock [#3999]
|
717
|
+
- Fix a few issues with mobile Web UI styling [#3973, navied]
|
718
|
+
- Jobs with `retry: false` now go through the global `death_handlers`,
|
719
|
+
meaning you can take action on failed ephemeral jobs. [#3980, Benjamin-Dobell]
|
720
|
+
- Fix race condition in defining Workers. [#3997, mattbooks]
|
721
|
+
|
722
|
+
5.2.2
|
723
|
+
---------
|
724
|
+
|
725
|
+
- Raise error for duplicate queue names in config to avoid unexpected fetch algorithm change [#3911]
|
726
|
+
- Fix concurrency bug on JRuby [#3958, mattbooks]
|
727
|
+
- Add "Kill All" button to the retries page [#3938]
|
728
|
+
|
729
|
+
5.2.1
|
730
|
+
-----------
|
731
|
+
|
732
|
+
- Fix concurrent modification error during heartbeat [#3921]
|
733
|
+
|
734
|
+
5.2.0
|
735
|
+
-----------
|
736
|
+
|
737
|
+
- **Decrease default concurrency from 25 to 10** [#3892]
|
738
|
+
- Verify connection pool sizing upon startup [#3917]
|
739
|
+
- Smoother scheduling for large Sidekiq clusters [#3889]
|
740
|
+
- Switch Sidekiq::Testing impl from alias\_method to Module#prepend, for resiliency [#3852]
|
741
|
+
- Update Sidekiq APIs to use SCAN for scalability [#3848, ffiller]
|
742
|
+
- Remove concurrent-ruby gem dependency [#3830]
|
743
|
+
- Optimize Web UI's bootstrap.css [#3914]
|
744
|
+
|
745
|
+
5.1.3
|
746
|
+
-----------
|
747
|
+
|
748
|
+
- Fix version comparison so Ruby 2.2.10 works. [#3808, nateberkopec]
|
749
|
+
|
750
|
+
5.1.2
|
751
|
+
-----------
|
752
|
+
|
753
|
+
- Add link to docs in Web UI footer
|
754
|
+
- Fix crash on Ctrl-C in Windows [#3775, Bernica]
|
755
|
+
- Remove `freeze` calls on String constants. This is superfluous with Ruby
|
756
|
+
2.3+ and `frozen_string_literal: true`. [#3759]
|
757
|
+
- Fix use of AR middleware outside of Rails [#3787]
|
758
|
+
- Sidekiq::Worker `sidekiq_retry_in` block can now return nil or 0 to use
|
759
|
+
the default backoff delay [#3796, dsalahutdinov]
|
760
|
+
|
761
|
+
5.1.1
|
762
|
+
-----------
|
763
|
+
|
764
|
+
- Fix Web UI incompatibility with Redis 3.x gem [#3749]
|
765
|
+
|
766
|
+
5.1.0
|
767
|
+
-----------
|
768
|
+
|
769
|
+
- **NEW** Global death handlers - called when your job exhausts all
|
770
|
+
retries and dies. Now you can take action when a job fails permanently. [#3721]
|
771
|
+
- **NEW** Enable ActiveRecord query cache within jobs by default [#3718, sobrinho]
|
772
|
+
This will prevent duplicate SELECTS; cache is cleared upon any UPDATE/INSERT/DELETE.
|
773
|
+
See the issue for how to bypass the cache or disable it completely.
|
774
|
+
- Scheduler timing is now more accurate, 15 -> 5 seconds [#3734]
|
775
|
+
- Exceptions during the :startup event will now kill the process [#3717]
|
776
|
+
- Make `Sidekiq::Client.via` reentrant [#3715]
|
777
|
+
- Fix use of Sidekiq logger outside of the server process [#3714]
|
778
|
+
- Tweak `constantize` to better match Rails class lookup. [#3701, caffeinated-tech]
|
779
|
+
|
780
|
+
5.0.5
|
781
|
+
-----------
|
782
|
+
|
783
|
+
- Update gemspec to allow newer versions of the Redis gem [#3617]
|
784
|
+
- Refactor Worker.set so it can be memoized [#3602]
|
785
|
+
- Fix display of Redis URL in web footer, broken in 5.0.3 [#3560]
|
786
|
+
- Update `Sidekiq::Job#display_args` to avoid mutation [#3621]
|
787
|
+
|
788
|
+
5.0.4
|
789
|
+
-----------
|
790
|
+
|
791
|
+
- Fix "slow startup" performance regression from 5.0.2. [#3525]
|
792
|
+
- Allow users to disable ID generation since some redis providers disable the CLIENT command. [#3521]
|
793
|
+
|
794
|
+
5.0.3
|
795
|
+
-----------
|
796
|
+
|
797
|
+
- Fix overriding `class_attribute` core extension from ActiveSupport with Sidekiq one [PikachuEXE, #3499]
|
798
|
+
- Allow job logger to be overridden [AlfonsoUceda, #3502]
|
799
|
+
- Set a default Redis client identifier for debugging [#3516]
|
800
|
+
- Fix "Uninitialized constant" errors on startup with the delayed extensions [#3509]
|
801
|
+
|
802
|
+
5.0.2
|
803
|
+
-----------
|
804
|
+
|
805
|
+
- fix broken release, thanks @nateberkopec
|
806
|
+
|
807
|
+
5.0.1
|
808
|
+
-----------
|
809
|
+
|
810
|
+
- Fix incorrect server identity when daemonizing [jwilm, #3496]
|
811
|
+
- Work around error running Web UI against Redis Cluster [#3492]
|
812
|
+
- Remove core extensions, Sidekiq is now monkeypatch-free! [#3474]
|
813
|
+
- Reimplement Web UI's HTTP\_ACCEPT\_LANGUAGE parsing because the spec is utterly
|
814
|
+
incomprehensible for various edge cases. [johanlunds, natematykiewicz, #3449]
|
815
|
+
- Update `class_attribute` core extension to avoid warnings
|
816
|
+
- Expose `job_hash_context` from `Sidekiq::Logging` to support log customization
|
817
|
+
|
818
|
+
5.0.0
|
819
|
+
-----------
|
820
|
+
|
821
|
+
- **BREAKING CHANGE** Job dispatch was refactored for safer integration with
|
822
|
+
Rails 5. The **Logging** and **RetryJobs** server middleware were removed and
|
823
|
+
functionality integrated directly into Sidekiq::Processor. These aren't
|
824
|
+
commonly used public APIs so this shouldn't impact most users.
|
825
|
+
```
|
826
|
+
Sidekiq::Middleware::Server::RetryJobs -> Sidekiq::JobRetry
|
827
|
+
Sidekiq::Middleware::Server::Logging -> Sidekiq::JobLogger
|
828
|
+
```
|
829
|
+
- Quieting Sidekiq is now done via the TSTP signal, the USR1 signal is deprecated.
|
830
|
+
- The `delay` extension APIs are no longer available by default, you
|
831
|
+
must opt into them.
|
832
|
+
- The Web UI is now BiDi and can render RTL languages like Arabic, Farsi and Hebrew.
|
833
|
+
- Rails 3.2 and Ruby 2.0 and 2.1 are no longer supported.
|
834
|
+
- The `SomeWorker.set(options)` API was re-written to avoid thread-local state. [#2152]
|
835
|
+
- Sidekiq Enterprise's encrypted jobs now display "[encrypted data]" in the Web UI instead
|
836
|
+
of random hex bytes.
|
837
|
+
- Please see the [5.0 Upgrade notes](docs/5.0-Upgrade.md) for more detail.
|
838
|
+
|
839
|
+
4.2.10
|
840
|
+
-----------
|
841
|
+
|
842
|
+
- Scheduled jobs can now be moved directly to the Dead queue via API [#3390]
|
843
|
+
- Fix edge case leading to job duplication when using Sidekiq Pro's
|
844
|
+
reliability feature [#3388]
|
845
|
+
- Fix error class name display on retry page [#3348]
|
846
|
+
- More robust latency calculation [#3340]
|
847
|
+
|
848
|
+
4.2.9
|
849
|
+
-----------
|
850
|
+
|
851
|
+
- Rollback [#3303] which broke Heroku Redis users [#3311]
|
852
|
+
- Add support for TSTP signal, for Sidekiq 5.0 forward compatibility. [#3302]
|
853
|
+
|
854
|
+
4.2.8
|
855
|
+
-----------
|
856
|
+
|
857
|
+
- Fix rare edge case with Redis driver that can create duplicate jobs [#3303]
|
858
|
+
- Fix Rails 5 loading issue [#3275]
|
859
|
+
- Restore missing tooltips to timestamps in Web UI [#3310]
|
860
|
+
- Work on **Sidekiq 5.0** is now active! [#3301]
|
861
|
+
|
862
|
+
4.2.7
|
863
|
+
-----------
|
864
|
+
|
865
|
+
- Add new integration testing to verify code loading and job execution
|
866
|
+
in development and production modes with Rails 4 and 5 [#3241]
|
867
|
+
- Fix delayed extensions in development mode [#3227, DarthSim]
|
868
|
+
- Use Worker's `retry` default if job payload does not have a retry
|
869
|
+
attribute [#3234, mlarraz]
|
870
|
+
|
871
|
+
4.2.6
|
872
|
+
-----------
|
873
|
+
|
874
|
+
- Run Rails Executor when in production [#3221, eugeneius]
|
875
|
+
|
876
|
+
4.2.5
|
877
|
+
-----------
|
878
|
+
|
879
|
+
- Re-enable eager loading of all code when running non-development Rails 5. [#3203]
|
880
|
+
- Better root URL handling for zany web servers [#3207]
|
881
|
+
|
882
|
+
4.2.4
|
883
|
+
-----------
|
884
|
+
|
885
|
+
- Log errors coming from the Rails 5 reloader. [#3212, eugeneius]
|
886
|
+
- Clone job data so middleware changes don't appear in Busy tab
|
887
|
+
|
888
|
+
4.2.3
|
889
|
+
-----------
|
890
|
+
|
891
|
+
- Disable use of Rails 5's Reloader API in non-development modes, it has proven
|
892
|
+
to be unstable under load [#3154]
|
893
|
+
- Allow disabling of Sidekiq::Web's cookie session to handle the
|
894
|
+
case where the app provides a session already [#3180, inkstak]
|
895
|
+
```ruby
|
896
|
+
Sidekiq::Web.set :sessions, false
|
897
|
+
```
|
898
|
+
- Fix Web UI sharding support broken in 4.2.2. [#3169]
|
899
|
+
- Fix timestamps not updating during UI polling [#3193, shaneog]
|
900
|
+
- Relax rack-protection version to >= 1.5.0
|
901
|
+
- Provide consistent interface to exception handlers, changing the structure of the context hash. [#3161]
|
902
|
+
|
903
|
+
4.2.2
|
904
|
+
-----------
|
905
|
+
|
906
|
+
- Fix ever-increasing cookie size with nginx [#3146, cconstantine]
|
907
|
+
- Fix so Web UI works without trailing slash [#3158, timdorr]
|
908
|
+
|
909
|
+
4.2.1
|
910
|
+
-----------
|
911
|
+
|
912
|
+
- Ensure browser does not cache JSON/AJAX responses. [#3136]
|
913
|
+
- Support old Sinatra syntax for setting config [#3139]
|
914
|
+
|
915
|
+
4.2.0
|
916
|
+
-----------
|
917
|
+
|
918
|
+
- Enable development-mode code reloading. **With Rails 5.0+, you don't need
|
919
|
+
to restart Sidekiq to pick up your Sidekiq::Worker changes anymore!** [#2457]
|
920
|
+
- **Remove Sinatra dependency**. Sidekiq's Web UI now uses Rack directly.
|
921
|
+
Thank you to Sidekiq's newest committer, **badosu**, for writing the code
|
922
|
+
and doing a lot of testing to ensure compatibility with many different
|
923
|
+
3rd party plugins. If your Web UI works with 4.1.4 but fails with
|
924
|
+
4.2.0, please open an issue. [#3075]
|
925
|
+
- Allow tuning of concurrency with the `RAILS_MAX_THREADS` env var. [#2985]
|
926
|
+
This is the same var used by Puma so you can tune all of your systems
|
927
|
+
the same way:
|
928
|
+
```sh
|
929
|
+
web: RAILS_MAX_THREADS=5 bundle exec puma ...
|
930
|
+
worker: RAILS_MAX_THREADS=10 bundle exec sidekiq ...
|
931
|
+
```
|
932
|
+
Using `-c` or `config/sidekiq.yml` overrides this setting. I recommend
|
933
|
+
adjusting your `config/database.yml` to use it too so connections are
|
934
|
+
auto-scaled:
|
935
|
+
```yaml
|
936
|
+
pool: <%= ENV['RAILS_MAX_THREADS'] || 5 %>
|
937
|
+
```
|
938
|
+
|
939
|
+
4.1.4
|
940
|
+
-----------
|
941
|
+
|
942
|
+
- Unlock Sinatra so a Rails 5.0 compatible version may be used [#3048]
|
943
|
+
- Fix race condition on startup with JRuby [#3043]
|
944
|
+
|
945
|
+
|
946
|
+
4.1.3
|
947
|
+
-----------
|
948
|
+
|
949
|
+
- Please note the Redis 3.3.0 gem has a [memory leak](https://github.com/redis/redis-rb/issues/612),
|
950
|
+
Redis 3.2.2 is recommended until that issue is fixed.
|
951
|
+
- Sinatra 1.4.x is now a required dependency, avoiding cryptic errors
|
952
|
+
and old bugs due to people not upgrading Sinatra for years. [#3042]
|
953
|
+
- Fixed race condition in heartbeat which could rarely lead to lingering
|
954
|
+
processes on the Busy tab. [#2982]
|
955
|
+
```ruby
|
956
|
+
# To clean up lingering processes, modify this as necessary to connect to your Redis.
|
957
|
+
# After 60 seconds, lingering processes should disappear from the Busy page.
|
958
|
+
|
959
|
+
require 'redis'
|
960
|
+
r = Redis.new(url: "redis://localhost:6379/0")
|
961
|
+
# uncomment if you need a namespace
|
962
|
+
#require 'redis-namespace'
|
963
|
+
#r = Redis::Namespace.new("foo", r)
|
964
|
+
r.smembers("processes").each do |pro|
|
965
|
+
r.expire(pro, 60)
|
966
|
+
r.expire("#{pro}:workers", 60)
|
967
|
+
end
|
968
|
+
```
|
969
|
+
|
970
|
+
|
971
|
+
4.1.2
|
972
|
+
-----------
|
973
|
+
|
974
|
+
- Fix Redis data leak with worker data when a busy Sidekiq process
|
975
|
+
crashes. You can find and expire leaked data in Redis with this
|
976
|
+
script:
|
977
|
+
```bash
|
978
|
+
$ redis-cli keys "*:workers" | while read LINE ; do TTL=`redis-cli expire "$LINE" 60`; echo "$LINE"; done;
|
979
|
+
```
|
980
|
+
Please note that `keys` can be dangerous to run on a large, busy Redis. Caveat runner.
|
981
|
+
- Freeze all string literals with Ruby 2.3. [#2741]
|
982
|
+
- Client middleware can now stop bulk job push. [#2887]
|
983
|
+
|
984
|
+
4.1.1
|
985
|
+
-----------
|
986
|
+
|
987
|
+
- Much better behavior when Redis disappears and comes back. [#2866]
|
988
|
+
- Update FR locale [dbachet]
|
989
|
+
- Don't fill logfile in case of Redis downtime [#2860]
|
990
|
+
- Allow definition of a global retries_exhausted handler. [#2807]
|
991
|
+
```ruby
|
992
|
+
Sidekiq.configure_server do |config|
|
993
|
+
config.default_retries_exhausted = -> (job, ex) do
|
994
|
+
Sidekiq.logger.info "#{job['class']} job is now dead"
|
995
|
+
end
|
996
|
+
end
|
997
|
+
```
|
998
|
+
|
999
|
+
4.1.0
|
1000
|
+
-----------
|
1001
|
+
|
1002
|
+
- Tag quiet processes in the Web UI [#2757, jcarlson]
|
1003
|
+
- Pass last exception to sidekiq\_retries\_exhausted block [#2787, Nowaker]
|
1004
|
+
```ruby
|
1005
|
+
class MyWorker
|
1006
|
+
include Sidekiq::Worker
|
1007
|
+
sidekiq_retries_exhausted do |job, exception|
|
1008
|
+
end
|
1009
|
+
end
|
1010
|
+
```
|
1011
|
+
- Add native support for ActiveJob's `set(options)` method allowing
|
1012
|
+
you to override worker options dynamically. This should make it
|
1013
|
+
even easier to switch between ActiveJob and Sidekiq's native APIs [#2780]
|
1014
|
+
```ruby
|
1015
|
+
class MyWorker
|
1016
|
+
include Sidekiq::Worker
|
1017
|
+
sidekiq_options queue: 'default', retry: true
|
1018
|
+
|
1019
|
+
def perform(*args)
|
1020
|
+
# do something
|
1021
|
+
end
|
1022
|
+
end
|
1023
|
+
|
1024
|
+
MyWorker.set(queue: 'high', retry: false).perform_async(1)
|
1025
|
+
```
|
1026
|
+
|
1027
|
+
4.0.2
|
1028
|
+
-----------
|
1029
|
+
|
1030
|
+
- Better Japanese translations
|
1031
|
+
- Remove `json` gem dependency from gemspec. [#2743]
|
1032
|
+
- There's a new testing API based off the `Sidekiq::Queues` namespace. All
|
1033
|
+
assertions made against the Worker class still work as expected.
|
1034
|
+
[#2676, brandonhilkert]
|
1035
|
+
```ruby
|
1036
|
+
assert_equal 0, Sidekiq::Queues["default"].size
|
1037
|
+
HardWorker.perform_async("log")
|
1038
|
+
assert_equal 1, Sidekiq::Queues["default"].size
|
1039
|
+
assert_equal "log", Sidekiq::Queues["default"].first['args'][0]
|
1040
|
+
Sidekiq::Queues.clear_all
|
1041
|
+
```
|
1042
|
+
|
1043
|
+
4.0.1
|
1044
|
+
-----------
|
1045
|
+
|
1046
|
+
- Yank new queue-based testing API [#2663]
|
1047
|
+
- Fix invalid constant reference in heartbeat
|
1048
|
+
|
1049
|
+
4.0.0
|
1050
|
+
-----------
|
1051
|
+
|
1052
|
+
- Sidekiq's internals have been completely overhauled for performance
|
1053
|
+
and to remove dependencies. This has resulted in major speedups, as
|
1054
|
+
[detailed on my blog](http://www.mikeperham.com/2015/10/14/optimizing-sidekiq/).
|
1055
|
+
- See the [4.0 upgrade notes](docs/4.0-Upgrade.md) for more detail.
|
1056
|
+
|
1057
|
+
3.5.4
|
1058
|
+
-----------
|
1059
|
+
|
1060
|
+
- Ensure exception message is a string [#2707]
|
1061
|
+
- Revert racy Process.kill usage in sidekiqctl
|
1062
|
+
|
1063
|
+
3.5.3
|
1064
|
+
-----------
|
1065
|
+
|
1066
|
+
- Adjust shutdown event to run in parallel with the rest of system shutdown. [#2635]
|
1067
|
+
|
1068
|
+
3.5.2
|
1069
|
+
-----------
|
1070
|
+
|
1071
|
+
- **Sidekiq 3 is now in maintenance mode**, only major bugs will be fixed.
|
1072
|
+
- The exception triggering a retry is now passed into `sidekiq_retry_in`,
|
1073
|
+
allowing you to retry more frequently for certain types of errors.
|
1074
|
+
[#2619, kreynolds]
|
1075
|
+
```ruby
|
1076
|
+
sidekiq_retry_in do |count, ex|
|
1077
|
+
case ex
|
1078
|
+
when RuntimeError
|
1079
|
+
5 * count
|
1080
|
+
else
|
1081
|
+
10 * count
|
1082
|
+
end
|
1083
|
+
end
|
1084
|
+
```
|
1085
|
+
|
1086
|
+
3.5.1
|
1087
|
+
-----------
|
1088
|
+
|
1089
|
+
- **FIX MEMORY LEAK** Under rare conditions, threads may leak [#2598, gazay]
|
1090
|
+
- Add Ukrainian locale [#2561, elrakita]
|
1091
|
+
- Disconnect and retry Redis operations if we see a READONLY error [#2550]
|
1092
|
+
- Add server middleware testing harness; see [wiki](https://github.com/sidekiq/sidekiq/wiki/Testing#testing-server-middleware) [#2534, ryansch]
|
1093
|
+
|
1094
|
+
3.5.0
|
1095
|
+
-----------
|
1096
|
+
|
1097
|
+
- Polished new banner! [#2522, firedev]
|
1098
|
+
- Upgrade to Celluloid 0.17. [#2420, digitalextremist]
|
1099
|
+
- Activate sessions in Sinatra for CSRF protection, requires Rails
|
1100
|
+
monkeypatch due to rails/rails#15843. [#2460, jc00ke]
|
1101
|
+
|
1102
|
+
3.4.2
|
1103
|
+
-----------
|
1104
|
+
|
1105
|
+
- Don't allow `Sidekiq::Worker` in ActiveJob::Base classes. [#2424]
|
1106
|
+
- Safer display of job data in Web UI [#2405]
|
1107
|
+
- Fix CSRF vulnerability in Web UI, thanks to Egor Homakov for
|
1108
|
+
reporting. [#2422] If you are running the Web UI as a standalone Rack app,
|
1109
|
+
ensure you have a [session middleware
|
1110
|
+
configured](https://github.com/sidekiq/sidekiq/wiki/Monitoring#standalone):
|
1111
|
+
```ruby
|
1112
|
+
use Rack::Session::Cookie, :secret => "some unique secret string here"
|
1113
|
+
```
|
1114
|
+
|
1
1115
|
3.4.1
|
2
1116
|
-----------
|
3
1117
|
|
@@ -205,7 +1319,7 @@ sidekiq_options :dead => false, :retry => 5
|
|
205
1319
|
3.0.0
|
206
1320
|
-----------
|
207
1321
|
|
208
|
-
Please see [3.0-Upgrade.md](3.0-Upgrade.md) for more comprehensive upgrade notes.
|
1322
|
+
Please see [3.0-Upgrade.md](docs/3.0-Upgrade.md) for more comprehensive upgrade notes.
|
209
1323
|
|
210
1324
|
- **Dead Job Queue** - jobs which run out of retries are now moved to a dead
|
211
1325
|
job queue. These jobs must be retried manually or they will expire
|
@@ -249,7 +1363,7 @@ Sidekiq::Client.via(ConnectionPool.new { Redis.new }) do
|
|
249
1363
|
end
|
250
1364
|
```
|
251
1365
|
**Sharding support does require a breaking change to client-side
|
252
|
-
middleware, see 3.0-Upgrade.md.**
|
1366
|
+
middleware, see docs/3.0-Upgrade.md.**
|
253
1367
|
- New Chinese, Greek, Swedish and Czech translations for the Web UI.
|
254
1368
|
- Updated most languages translations for the new UI features.
|
255
1369
|
- **Remove official Capistrano integration** - this integration has been
|
@@ -377,10 +1491,10 @@ middleware, see 3.0-Upgrade.md.**
|
|
377
1491
|
appear to be doing any work. [#1194]
|
378
1492
|
- Sidekiq's testing behavior is now dynamic. You can choose between
|
379
1493
|
`inline` and `fake` behavior in your tests. See
|
380
|
-
[Testing](https://github.com/
|
1494
|
+
[Testing](https://github.com/sidekiq/sidekiq/wiki/Testing) for detail. [#1193]
|
381
1495
|
- The Retries table has a new column for the error message.
|
382
1496
|
- The Web UI topbar now contains the status and live poll button.
|
383
|
-
- Orphaned worker records are now auto-vacuumed when you
|
1497
|
+
- Orphaned worker records are now auto-vacuumed when you visit the
|
384
1498
|
Workers page in the Web UI.
|
385
1499
|
- Sidekiq.default\_worker\_options allows you to configure default
|
386
1500
|
options for all Sidekiq worker types.
|