sidekiq 5.2.4 → 7.2.4

Sign up to get free protection for your applications and to get access to all the features.
Files changed (153) hide show
  1. checksums.yaml +4 -4
  2. data/Changes.md +672 -8
  3. data/LICENSE.txt +9 -0
  4. data/README.md +48 -51
  5. data/bin/multi_queue_bench +271 -0
  6. data/bin/sidekiq +22 -3
  7. data/bin/sidekiqload +213 -115
  8. data/bin/sidekiqmon +11 -0
  9. data/lib/generators/sidekiq/job_generator.rb +57 -0
  10. data/lib/generators/sidekiq/templates/{worker.rb.erb → job.rb.erb} +2 -2
  11. data/lib/generators/sidekiq/templates/{worker_spec.rb.erb → job_spec.rb.erb} +1 -1
  12. data/lib/generators/sidekiq/templates/{worker_test.rb.erb → job_test.rb.erb} +1 -1
  13. data/lib/sidekiq/api.rb +623 -352
  14. data/lib/sidekiq/capsule.rb +127 -0
  15. data/lib/sidekiq/cli.rb +214 -229
  16. data/lib/sidekiq/client.rb +127 -102
  17. data/lib/sidekiq/component.rb +68 -0
  18. data/lib/sidekiq/config.rb +287 -0
  19. data/lib/sidekiq/deploy.rb +62 -0
  20. data/lib/sidekiq/embedded.rb +61 -0
  21. data/lib/sidekiq/fetch.rb +49 -42
  22. data/lib/sidekiq/job.rb +374 -0
  23. data/lib/sidekiq/job_logger.rb +33 -7
  24. data/lib/sidekiq/job_retry.rb +157 -108
  25. data/lib/sidekiq/job_util.rb +107 -0
  26. data/lib/sidekiq/launcher.rb +206 -106
  27. data/lib/sidekiq/logger.rb +131 -0
  28. data/lib/sidekiq/manager.rb +43 -46
  29. data/lib/sidekiq/metrics/query.rb +156 -0
  30. data/lib/sidekiq/metrics/shared.rb +95 -0
  31. data/lib/sidekiq/metrics/tracking.rb +140 -0
  32. data/lib/sidekiq/middleware/chain.rb +113 -56
  33. data/lib/sidekiq/middleware/current_attributes.rb +95 -0
  34. data/lib/sidekiq/middleware/i18n.rb +7 -7
  35. data/lib/sidekiq/middleware/modules.rb +21 -0
  36. data/lib/sidekiq/monitor.rb +146 -0
  37. data/lib/sidekiq/paginator.rb +28 -16
  38. data/lib/sidekiq/processor.rb +126 -117
  39. data/lib/sidekiq/rails.rb +52 -38
  40. data/lib/sidekiq/redis_client_adapter.rb +111 -0
  41. data/lib/sidekiq/redis_connection.rb +41 -112
  42. data/lib/sidekiq/ring_buffer.rb +29 -0
  43. data/lib/sidekiq/scheduled.rb +112 -50
  44. data/lib/sidekiq/sd_notify.rb +149 -0
  45. data/lib/sidekiq/systemd.rb +24 -0
  46. data/lib/sidekiq/testing/inline.rb +6 -5
  47. data/lib/sidekiq/testing.rb +91 -90
  48. data/lib/sidekiq/transaction_aware_client.rb +51 -0
  49. data/lib/sidekiq/version.rb +3 -1
  50. data/lib/sidekiq/web/action.rb +20 -11
  51. data/lib/sidekiq/web/application.rb +202 -80
  52. data/lib/sidekiq/web/csrf_protection.rb +183 -0
  53. data/lib/sidekiq/web/helpers.rb +165 -114
  54. data/lib/sidekiq/web/router.rb +23 -19
  55. data/lib/sidekiq/web.rb +68 -107
  56. data/lib/sidekiq/worker_compatibility_alias.rb +13 -0
  57. data/lib/sidekiq.rb +92 -182
  58. data/sidekiq.gemspec +25 -16
  59. data/web/assets/images/apple-touch-icon.png +0 -0
  60. data/web/assets/javascripts/application.js +152 -61
  61. data/web/assets/javascripts/base-charts.js +106 -0
  62. data/web/assets/javascripts/chart.min.js +13 -0
  63. data/web/assets/javascripts/chartjs-plugin-annotation.min.js +7 -0
  64. data/web/assets/javascripts/dashboard-charts.js +182 -0
  65. data/web/assets/javascripts/dashboard.js +35 -293
  66. data/web/assets/javascripts/metrics.js +298 -0
  67. data/web/assets/stylesheets/application-dark.css +147 -0
  68. data/web/assets/stylesheets/application-rtl.css +10 -93
  69. data/web/assets/stylesheets/application.css +124 -522
  70. data/web/assets/stylesheets/bootstrap.css +1 -1
  71. data/web/locales/ar.yml +71 -65
  72. data/web/locales/cs.yml +62 -62
  73. data/web/locales/da.yml +60 -53
  74. data/web/locales/de.yml +65 -53
  75. data/web/locales/el.yml +43 -24
  76. data/web/locales/en.yml +86 -66
  77. data/web/locales/es.yml +70 -54
  78. data/web/locales/fa.yml +65 -65
  79. data/web/locales/fr.yml +83 -62
  80. data/web/locales/gd.yml +99 -0
  81. data/web/locales/he.yml +65 -64
  82. data/web/locales/hi.yml +59 -59
  83. data/web/locales/it.yml +53 -53
  84. data/web/locales/ja.yml +75 -64
  85. data/web/locales/ko.yml +52 -52
  86. data/web/locales/lt.yml +83 -0
  87. data/web/locales/nb.yml +61 -61
  88. data/web/locales/nl.yml +52 -52
  89. data/web/locales/pl.yml +45 -45
  90. data/web/locales/pt-br.yml +83 -55
  91. data/web/locales/pt.yml +51 -51
  92. data/web/locales/ru.yml +68 -63
  93. data/web/locales/sv.yml +53 -53
  94. data/web/locales/ta.yml +60 -60
  95. data/web/locales/uk.yml +62 -61
  96. data/web/locales/ur.yml +64 -64
  97. data/web/locales/vi.yml +83 -0
  98. data/web/locales/zh-cn.yml +43 -16
  99. data/web/locales/zh-tw.yml +42 -8
  100. data/web/views/_footer.erb +18 -3
  101. data/web/views/_job_info.erb +21 -4
  102. data/web/views/_metrics_period_select.erb +12 -0
  103. data/web/views/_nav.erb +1 -1
  104. data/web/views/_paging.erb +2 -0
  105. data/web/views/_poll_link.erb +3 -6
  106. data/web/views/_summary.erb +7 -7
  107. data/web/views/busy.erb +79 -29
  108. data/web/views/dashboard.erb +48 -18
  109. data/web/views/dead.erb +3 -3
  110. data/web/views/filtering.erb +7 -0
  111. data/web/views/layout.erb +3 -1
  112. data/web/views/metrics.erb +91 -0
  113. data/web/views/metrics_for_job.erb +59 -0
  114. data/web/views/morgue.erb +14 -15
  115. data/web/views/queue.erb +33 -24
  116. data/web/views/queues.erb +19 -5
  117. data/web/views/retries.erb +16 -17
  118. data/web/views/retry.erb +3 -3
  119. data/web/views/scheduled.erb +17 -15
  120. metadata +71 -72
  121. data/.github/contributing.md +0 -32
  122. data/.github/issue_template.md +0 -11
  123. data/.gitignore +0 -15
  124. data/.travis.yml +0 -17
  125. data/3.0-Upgrade.md +0 -70
  126. data/4.0-Upgrade.md +0 -53
  127. data/5.0-Upgrade.md +0 -56
  128. data/Appraisals +0 -9
  129. data/COMM-LICENSE +0 -95
  130. data/Ent-Changes.md +0 -225
  131. data/Gemfile +0 -29
  132. data/LICENSE +0 -9
  133. data/Pro-2.0-Upgrade.md +0 -138
  134. data/Pro-3.0-Upgrade.md +0 -44
  135. data/Pro-4.0-Upgrade.md +0 -35
  136. data/Pro-Changes.md +0 -752
  137. data/Rakefile +0 -9
  138. data/bin/sidekiqctl +0 -237
  139. data/code_of_conduct.md +0 -50
  140. data/gemfiles/rails_4.gemfile +0 -31
  141. data/gemfiles/rails_5.gemfile +0 -31
  142. data/lib/generators/sidekiq/worker_generator.rb +0 -49
  143. data/lib/sidekiq/core_ext.rb +0 -1
  144. data/lib/sidekiq/delay.rb +0 -42
  145. data/lib/sidekiq/exception_handler.rb +0 -29
  146. data/lib/sidekiq/extensions/action_mailer.rb +0 -57
  147. data/lib/sidekiq/extensions/active_record.rb +0 -40
  148. data/lib/sidekiq/extensions/class_methods.rb +0 -40
  149. data/lib/sidekiq/extensions/generic_proxy.rb +0 -31
  150. data/lib/sidekiq/logging.rb +0 -122
  151. data/lib/sidekiq/middleware/server/active_record.rb +0 -23
  152. data/lib/sidekiq/util.rb +0 -66
  153. data/lib/sidekiq/worker.rb +0 -215
data/Pro-Changes.md DELETED
@@ -1,752 +0,0 @@
1
- # Sidekiq Pro Changelog
2
-
3
- [Sidekiq Changes](https://github.com/mperham/sidekiq/blob/master/Changes.md) | [Sidekiq Pro Changes](https://github.com/mperham/sidekiq/blob/master/Pro-Changes.md) | [Sidekiq Enterprise Changes](https://github.com/mperham/sidekiq/blob/master/Ent-Changes.md)
4
-
5
- Please see [http://sidekiq.org/](http://sidekiq.org/) for more details and how to buy.
6
-
7
- HEAD
8
- ---------
9
-
10
- - Better handling of invalid job JSON by reliable scheduler [#4053]
11
- - Added ZH, PT, JA and RU translations, see issues [#3949](https://github.com/mperham/sidekiq/issues/3949) and [#3951](https://github.com/mperham/sidekiq/issues/3951) to add your own language.
12
-
13
- 4.0.4
14
- ---------
15
-
16
- - Update Sidekiq::Client patches to work with new Module#prepend
17
- mechanism in Sidekiq 5.2.0. [#3930]
18
-
19
- 4.0.3
20
- ---------
21
-
22
- - Add at\_exit handler to push any saved jobs in `reliable_push` when exiting. [#3823]
23
- - Implement batch death callback. This is fired the first time a job within a batch dies. [#3841]
24
- ```ruby
25
- batch = Sidekiq::Batch.new
26
- batch.on(:death, ...)
27
- ```
28
-
29
- 4.0.2
30
- ---------
31
-
32
- - Remove super\_fetch edge case leading to an unnecessary `sleep(1)`
33
- call and resulting latency [#3790]
34
- - Fix possible bad statsd metric call on super\_fetch startup
35
- - Remove superfluous `freeze` calls on Strings [#3759]
36
-
37
- 4.0.1
38
- ---------
39
-
40
- - Fix incompatibility with the statsd-ruby gem [#3740]
41
- - Add tags to Statsd metrics when using Datadog [#3744]
42
-
43
- 4.0.0
44
- ---------
45
-
46
- - See the [Sidekiq Pro 4.0](Pro-4.0-Upgrade.md) release notes.
47
-
48
-
49
- 3.7.1
50
- ---------
51
-
52
- - Deprecate timed\_fetch. Switch to super\_fetch:
53
- ```ruby
54
- config.super_fetch!
55
- ```
56
-
57
-
58
- 3.7.0
59
- ---------
60
-
61
- - Refactor batch job success/failure to gracefully handle several edge
62
- cases with regard to Sidekiq::Shutdown. This should greatly reduce
63
- the chances of seeing the long-standing "negative pending count" problem. [#3710]
64
-
65
-
66
- 3.6.1
67
- ---------
68
-
69
- - Add support for Datadog::Statsd, it is the recommended Statsd client. [#3699]
70
- ```ruby
71
- Sidekiq::Pro.dogstatsd = ->{ Datadog::Statsd.new("metrics.example.com", 8125) }
72
- ```
73
- - Size the statsd connection pool based on Sidekiq's concurrency [#3700]
74
-
75
-
76
- 3.6.0
77
- ---------
78
-
79
- This release overhauls the Statsd metrics support and adds more
80
- metrics for tracking Pro feature usage. In your initializer:
81
- ```ruby
82
- Sidekiq::Pro.statsd = ->{ ::Statsd.new("127.0.0.1", 8125) }
83
- ```
84
- Sidekiq Pro will emit more metrics to Statsd:
85
- ```
86
- jobs.expired - when a job is expired
87
- jobs.recovered.push - when a job is recovered by reliable_push after network outage
88
- jobs.recovered.fetch - when a job is recovered by super_fetch after process crash
89
- batch.created - when a batch is created
90
- batch.complete - when a batch is completed
91
- batch.success - when a batch is successful
92
- ```
93
- Sidekiq Pro's existing Statsd middleware has been rewritten to leverage the new API.
94
- Everything should be backwards compatible with one deprecation notice.
95
-
96
-
97
- 3.5.4
98
- ---------
99
-
100
- - Fix case in SuperFetch where Redis downtime can lead to processor thread death [#3684]
101
- - Fix case where TimedFetch might not recover some pending jobs
102
- - Fix edge case in Batch::Status#poll leading to premature completion [#3640]
103
- - Adjust scan API to check 100 elements at a time, to minimize network round trips
104
- when scanning large sets.
105
-
106
- 3.5.3
107
- ---------
108
-
109
- - Restore error check for super\_fetch's job ack [#3601]
110
- - Trim error messages saved in Batch's failure hash, preventing huge
111
- messages from bloating Redis. [#3570]
112
-
113
- 3.5.2
114
- ---------
115
-
116
- - Fix `Status#completed?` when run against a Batch that had succeeded
117
- and was deleted. [#3519]
118
-
119
- 3.5.1
120
- ---------
121
-
122
- - Work with Sidekiq 5.0.2+
123
- - Improve performance of super\_fetch with weighted queues [#3489]
124
-
125
- 3.5.0
126
- ---------
127
-
128
- - Add queue pause/unpause endpoints for scripting via curl [#3445]
129
- - Change how super\_fetch names private queues to avoid hostname/queue clashes. [#3443]
130
- - Re-implement `Sidekiq::Queue#delete_job` to avoid O(n) runtime [#3408]
131
- - Batch page displays Pending JIDs if less than 10 [#3130]
132
- - Batch page has a Search button to find associated Retries [#3130]
133
- - Make Batch UI progress bar more friendly to the colorblind [#3387]
134
-
135
- 3.4.5
136
- ---------
137
-
138
- - Fix potential job loss with reliable scheduler when lots of jobs are scheduled
139
- at precisely the same time. Thanks to raivil for his hard work in
140
- reproducing the bug. [#3371]
141
-
142
- 3.4.4
143
- ---------
144
-
145
- - Optimize super\_fetch shutdown to restart jobs quicker [#3249]
146
-
147
- 3.4.3
148
- ---------
149
-
150
- - Limit reliable scheduler to enqueue up to 100 jobs per call, minimizing Redis latency [#3332]
151
- - Fix bug in super\_fetch logic for queues with `_` in the name [#3339]
152
-
153
- 3.4.2
154
- ---------
155
-
156
- - Add `Batch::Status#invalidated?` API which returns true if any/all
157
- JIDs were invalidated within the batch. [#3326]
158
-
159
- 3.4.1
160
- ---------
161
-
162
- - Allow super\_fetch's orphan job check to happen as often as every hour [#3273]
163
- - Officially deprecate reliable\_fetch algorithm, I now recommend you use `super_fetch` instead:
164
- ```ruby
165
- Sidekiq.configure_server do |config|
166
- config.super_fetch!
167
- end
168
- ```
169
- Also note that Sidekiq's `-i/--index` option is no longer used/relevant with super\_fetch.
170
- - Don't display "Delete/Retry All" buttons when filtering in Web UI [#3243]
171
- - Reimplement Sidekiq::JobSet#find\_job with ZSCAN [#3197]
172
-
173
- 3.4.0
174
- ---------
175
-
176
- - Introducing the newest reliable fetching algorithm: `super_fetch`! This
177
- algorithm will replace reliable\_fetch in Pro 4.0. super\_fetch is
178
- bullet-proof across all environments, no longer requiring stable
179
- hostnames or an index to be set per-process. [#3077]
180
- ```ruby
181
- Sidekiq.configure_server do |config|
182
- config.super_fetch!
183
- end
184
- ```
185
- Thank you to @jonhyman for code review and the Sidekiq Pro customers that
186
- beta tested super\_fetch.
187
-
188
- 3.3.3
189
- ---------
190
-
191
- - Update Web UI extension to work with Sidekiq 4.2.0's new Web UI. [#3075]
192
-
193
- 3.3.2
194
- ---------
195
-
196
- - Minimize batch memory usage after success [#3083]
197
- - Extract batch's 24 hr linger expiry to a LINGER constant so it can be tuned. [#3011]
198
-
199
- 3.3.1
200
- ---------
201
-
202
- - If environment is unset, treat it as development so reliable\_fetch works as before 3.2.2.
203
-
204
- 3.3.0
205
- ---------
206
-
207
- - Don't delete batches immediately upon success but set a 24 hr expiry, this allows
208
- Sidekiq::Batch::Status#poll to work, even after batch success. [#3011]
209
- - New `Sidekiq::PendingSet#destroy(jid)` API to remove poison pill jobs [#3015]
210
-
211
- 3.2.2
212
- ---------
213
-
214
- - A default value for -i is only set in development now, staging or
215
- other environments must set an index if you wish to use reliable\_fetch. [#2971]
216
- - Fix nil dereference when checking for jobs over timeout in timed\_fetch
217
-
218
-
219
- 3.2.1
220
- ---------
221
-
222
- - timed\_fetch now works with namespaces. [ryansch]
223
-
224
-
225
- 3.2.0
226
- ---------
227
-
228
- - Fixed detection of missing batches, `NoSuchBatch` should be raised
229
- properly now if `Sidekiq::Batch.new(bid)` is called on a batch no
230
- longer in Redis.
231
- - Remove support for Pro 1.x format batches. This version will no
232
- longer seamlessly process batches created with Sidekiq Pro 1.x.
233
- As always, upgrade one major version at a time to ensure a smooth
234
- transition.
235
- - Fix edge case where a parent batch could expire before a child batch
236
- was finished processing, leading to missing batches [#2889]
237
-
238
- 2.1.5
239
- ---------
240
-
241
- - Fix edge case where a parent batch could expire before a child batch
242
- was finished processing, leading to missing batches [#2889]
243
-
244
- 3.1.0
245
- ---------
246
-
247
- - New container-friendly fetch algorithm: `timed_fetch`. See the
248
- [wiki documentation](https://github.com/mperham/sidekiq/wiki/Pro-Reliability-Server)
249
- for trade offs between the two reliability options. You should
250
- use this if you are on Heroku, Docker, Amazon ECS or EBS or
251
- another container-based system.
252
-
253
-
254
- 3.0.6
255
- ---------
256
-
257
- - Fix race condition on reliable fetch shutdown
258
-
259
- 3.0.5
260
- ---------
261
-
262
- - Statsd metrics now account for ActiveJob class names
263
- - Allow reliable fetch internals to be overridden [jonhyman]
264
-
265
- 3.0.4
266
- ---------
267
-
268
- - Queue pausing no longer requires reliable fetch. [#2786]
269
-
270
- 3.0.3, 2.1.4
271
- ------------
272
-
273
- - Convert Lua-based `Sidekiq::Queue#delete_by_class` to Ruby-based, to
274
- avoid O(N^2) performance and possible Redis failure. [#2806]
275
-
276
- 3.0.2
277
- -----------
278
-
279
- - Make job registration with batch part of the atomic push so batch
280
- metadata can't get out of sync with the job data. [#2714]
281
-
282
- 3.0.1
283
- -----------
284
-
285
- - Remove a number of Redis version checks since we can assume 2.8+ now.
286
- - Fix expiring jobs client middleware not loaded on server
287
-
288
- 3.0.0
289
- -----------
290
-
291
- - See the [Pro 3.0 release notes](Pro-3.0-Upgrade.md).
292
-
293
- 2.1.3
294
- -----------
295
-
296
- - Don't enable strict priority if using weighted queueing like `-q a,1 -q b,1`
297
- - Safer JSON mangling in Lua [#2639]
298
-
299
- 2.1.2
300
- -----------
301
-
302
- - Lock Sidekiq Pro 2.x to Sidekiq 3.x.
303
-
304
- 2.1.1
305
- -----------
306
-
307
- - Make ShardSet lazier so Redis can first be initialized at startup. [#2603]
308
-
309
-
310
- 2.1.0
311
- -----------
312
-
313
- - Explicit support for sharding batches. You list your Redis shards and
314
- Sidekiq Pro will randomly spread batches across the shards. The BID
315
- will indicate which shard contains the batch data. Jobs within a
316
- batch may be spread across all shards too. [#2548, jonhyman]
317
- - Officially deprecate Sidekiq::Notifications code. Notifications have
318
- been undocumented for months now. [#2575]
319
-
320
-
321
- 2.0.8
322
- -----------
323
-
324
- - Fix reliable scheduler mangling large numeric arguments. Lua's CJSON
325
- library cannot accurately encode numbers larger than 14 digits! [#2478]
326
-
327
- 2.0.7
328
- -----------
329
-
330
- - Optimize delete of enormous batches (100,000s of jobs) [#2458]
331
-
332
- 2.0.6, 1.9.3
333
- --------------
334
-
335
- - CSRF protection in Sidekiq 3.4.2 broke job filtering in the Web UI [#2442]
336
- - Sidekiq Pro 1.x is now limited to Sidekiq < 3.5.0.
337
-
338
- 2.0.5
339
- -----------
340
-
341
- - Atomic scheduler now sets `enqueued_at` [#2414]
342
- - Batches now account for jobs which are stopped by client middleware [#2406]
343
- - Ignore redundant calls to `Sidekiq::Client.reliable_push!` [#2408]
344
-
345
- 2.0.4
346
- -----------
347
-
348
- - Reliable push now supports sharding [#2409]
349
- - Reliable push now only catches Redis exceptions [#2307]
350
-
351
- 2.0.3
352
- -----------
353
-
354
- - Display Batch callback data on the Batch details page. [#2347]
355
- - Fix incompatibility with Pro Web and Rack middleware. [#2344] Thank
356
- you to Jason Clark for the tip on how to fix it.
357
-
358
- 2.0.2
359
- -----------
360
-
361
- - Multiple Web UIs can now run in the same process. [#2267] If you have
362
- multiple Redis shards, you can mount UIs for all in the same process:
363
- ```ruby
364
- POOL1 = ConnectionPool.new { Redis.new(:url => "redis://localhost:6379/0") }
365
- POOL2 = ConnectionPool.new { Redis.new(:url => "redis://localhost:6378/0") }
366
-
367
- mount Sidekiq::Pro::Web => '/sidekiq' # default
368
- mount Sidekiq::Pro::Web.with(redis_pool: POOL1), at: '/sidekiq1', as: 'sidekiq1' # shard1
369
- mount Sidekiq::Pro::Web.with(redis_pool: POOL2), at: '/sidekiq2', as: 'sidekiq2' # shard2
370
- ```
371
- - **SECURITY** Fix batch XSS in error data. Thanks to moneybird.com for
372
- reporting the issue.
373
-
374
- 2.0.1
375
- -----------
376
-
377
- - Add `batch.callback_queue` so batch callbacks can use a higher
378
- priority queue than jobs. [#2200]
379
- - Gracefully recover if someone runs `SCRIPT FLUSH` on Redis. [#2240]
380
- - Ignore errors when attempting `bulk_requeue`, allowing clean shutdown
381
-
382
- 2.0.0
383
- -----------
384
-
385
- - See [the Upgrade Notes](Pro-2.0-Upgrade.md) for detailed notes.
386
-
387
- 1.9.2
388
- -----------
389
-
390
- - As of 1/1/2015, Sidekiq Pro is hosted on a new dedicated server.
391
- Happy new year and let's hope for 100% uptime!
392
- - Fix bug in reliable\_fetch where jobs could be duplicated if a Sidekiq
393
- process crashed and you were using weighted queues. [#2120]
394
-
395
- 1.9.1
396
- -----------
397
-
398
- - **SECURITY** Fix XSS in batch description, thanks to intercom.io for reporting the
399
- issue. If you don't use batch descriptions, you don't need the fix.
400
-
401
- 1.9.0
402
- -----------
403
-
404
- - Add new expiring jobs feature [#1982]
405
- - Show batch expiration on Batch details page [#1981]
406
- - Add '$' batch success token to the pubsub support. [#1953]
407
-
408
-
409
- 1.8.0
410
- -----------
411
-
412
- - Fix race condition where Batches can complete
413
- before they have been fully defined or only half-defined. Requires
414
- Sidekiq 3.2.3. [#1919]
415
-
416
-
417
- 1.7.6
418
- -----------
419
-
420
- - Quick release to verify #1919
421
-
422
-
423
- 1.7.5
424
- -----------
425
-
426
- - Fix job filtering within the Dead tab.
427
- - Add APIs and wiki documentation for invalidating jobs within a batch.
428
-
429
-
430
- 1.7.4
431
- -----------
432
-
433
- - Awesome ANSI art startup banner!
434
-
435
-
436
- 1.7.3
437
- -----------
438
-
439
- - Batch callbacks should use the same queue as the associated jobs.
440
-
441
- 1.7.2
442
- -----------
443
-
444
- - **DEPRECATION** Use `Batch#on(:complete)` instead of `Batch#notify`.
445
- The specific Campfire, HipChat, email and other notification schemes
446
- will be removed in 2.0.0.
447
- - Remove batch from UI when successful. [#1745]
448
- - Convert batch callbacks to be asynchronous jobs for error handling [#1744]
449
-
450
- 1.7.1
451
- -----------
452
-
453
- - Fix for paused queues being processed for a few seconds when starting
454
- a new Sidekiq process.
455
- - Add a 5 sec delay when starting reliable fetch on Heroku to minimize
456
- any duplicate job processing with another process shutting down.
457
-
458
- 1.7.0
459
- -----------
460
-
461
- - Add ability to pause reliable queues via API.
462
- ```ruby
463
- q = Sidekiq::Queue.new("critical")
464
- q.pause!
465
- q.paused? # => true
466
- q.unpause!
467
- ```
468
-
469
- Sidekiq polls Redis every 10 seconds for paused queues so pausing will take
470
- a few seconds to take effect.
471
-
472
- 1.6.0
473
- -----------
474
-
475
- - Compatible with Sidekiq 3.
476
-
477
- 1.5.1
478
- -----------
479
-
480
- - Due to a breaking API change in Sidekiq 3.0, this version is limited
481
- to Sidekiq 2.x.
482
-
483
- 1.5.0
484
- -----------
485
-
486
- - Fix issue on Heroku where reliable fetch could orphan jobs [#1573]
487
-
488
-
489
- 1.4.3
490
- -----------
491
-
492
- - Reverse sorting of Batches in Web UI [#1098]
493
- - Refactoring for Sidekiq 3.0, Pro now requires Sidekiq 2.17.5
494
-
495
- 1.4.2
496
- -----------
497
-
498
- - Tolerate expired Batches in the web UI.
499
- - Fix 100% CPU usage when using weighted queues and reliable fetch.
500
-
501
- 1.4.1
502
- -----------
503
-
504
- - Add batch progress bar to batch detail page. [#1398]
505
- - Fix race condition in initializing Lua scripts
506
-
507
-
508
- 1.4.0
509
- -----------
510
-
511
- - Default batch expiration has been extended to 3 days, from 1 day previously.
512
- - Batches now sort in the Web UI according to expiry time, not creation time.
513
- - Add user-configurable batch expiry. If your batches might take longer
514
- than 72 hours to process, you can extend the expiration date.
515
-
516
- ```ruby
517
- b = Sidekiq::Batch.new
518
- b.expires_in 5.days
519
- ...
520
- ```
521
-
522
- 1.3.2
523
- -----------
524
-
525
- - Lazy load Lua scripts so a Redis connection is not required on bootup.
526
-
527
- 1.3.1
528
- -----------
529
-
530
- - Fix a gemspec packaging issue which broke the Batch UI.
531
-
532
- 1.3.0
533
- -----------
534
-
535
- Thanks to @jonhyman for his contributions to this Sidekiq Pro release.
536
-
537
- This release includes new functionality based on the SCAN command newly
538
- added to Redis 2.8. Pro still works with Redis 2.4 but some
539
- functionality will be unavailable.
540
-
541
- - Job Filtering in the Web UI!
542
- You can now filter retries and scheduled jobs in the Web UI so you
543
- only see the jobs relevant to your needs. Queues cannot be filtered;
544
- Redis does not provide the same SCAN operation on the LIST type.
545
- **Redis 2.8**
546
- ![Filtering](https://f.cloud.github.com/assets/2911/1619465/f47529f2-5657-11e3-8cd1-33899eb72aad.png)
547
- - SCAN support in the Sidekiq::SortedSet API. Here's an example that
548
- finds all jobs which contain the substring "Warehouse::OrderShip"
549
- and deletes all matching retries. If the set is large, this API
550
- will be **MUCH** faster than standard iteration using each.
551
- **Redis 2.8**
552
- ```ruby
553
- Sidekiq::RetrySet.new.scan("Warehouse::OrderShip") do |job|
554
- job.delete
555
- end
556
- ```
557
-
558
- - Sidekiq::Batch#jobs now returns the set of JIDs added to the batch.
559
- - Sidekiq::Batch#jids returns the complete set of JIDs associated with the batch.
560
- - Sidekiq::Batch#remove\_jobs(jid, jid, ...) removes JIDs from the set, allowing early termination of jobs if they become irrelevant according to application logic.
561
- - Sidekiq::Batch#include?(jid) allows jobs to check if they are still
562
- relevant to a Batch and exit early if not.
563
- - Sidekiq::SortedSet#find\_job(jid) now uses server-side Lua if possible **Redis 2.6** [jonhyman]
564
- - The statsd integration now sets global job counts:
565
- ```ruby
566
- jobs.count
567
- jobs.success
568
- jobs.failure
569
- ```
570
-
571
- - Change shutdown logic to push leftover jobs in the private queue back
572
- into the public queue when shutting down with Reliable Fetch. This
573
- allows the safe decommission of a Sidekiq Pro process when autoscaling. [jonhyman]
574
- - Add support for weighted random fetching with Reliable Fetch [jonhyman]
575
- - Pro now requires Sidekiq 2.17.0
576
-
577
- 1.2.5
578
- -----------
579
-
580
- - Convert Batch UI to use Sidekiq 2.16's support for extension localization.
581
- - Update reliable\_push to work with Sidekiq::Client refactoring in 2.16
582
- - Pro now requires Sidekiq 2.16.0
583
-
584
- 1.2.4
585
- -----------
586
-
587
- - Convert Batch UI to Bootstrap 3
588
- - Pro now requires Sidekiq 2.15.0
589
- - Add Sidekiq::Batch::Status#delete [#1205]
590
-
591
- 1.2.3
592
- -----------
593
-
594
- - Pro now requires Sidekiq 2.14.0
595
- - Fix bad exception handling in batch callbacks [#1134]
596
- - Convert Batch UI to ERB
597
-
598
- 1.2.2
599
- -----------
600
-
601
- - Problem with reliable fetch which could lead to lost jobs when Sidekiq
602
- is shut down normally. Thanks to MikaelAmborn for the report. [#1109]
603
-
604
- 1.2.1
605
- -----------
606
-
607
- - Forgot to push paging code necessary for `delete_job` performance.
608
-
609
- 1.2.0
610
- -----------
611
-
612
- - **LEAK** Fix batch key which didn't expire in Redis. Keys match
613
- /b-[a-f0-9]{16}-pending/, e.g. "b-4f55163ddba10aa0-pending" [#1057]
614
- - **Reliable fetch now supports multiple queues**, using the algorithm spec'd
615
- by @jackrg [#1102]
616
- - Fix issue with reliable\_push where it didn't return the JID for a pushed
617
- job when sending previously cached jobs to Redis.
618
- - Add fast Sidekiq::Queue#delete\_job(jid) API which leverages Lua so job lookup is
619
- 100% server-side. Benchmark vs Sidekiq's Job#delete API. **Redis 2.6**
620
-
621
- ```
622
- Sidekiq Pro API
623
- 0.030000 0.020000 0.050000 ( 1.640659)
624
- Sidekiq API
625
- 17.250000 2.220000 19.470000 ( 22.193300)
626
- ```
627
-
628
- - Add fast Sidekiq::Queue#delete\_by\_class(klass) API to remove all
629
- jobs of a given type. Uses server-side Lua for performance. **Redis 2.6**
630
-
631
- 1.1.0
632
- -----------
633
-
634
- - New `sidekiq/pro/reliable_push` which makes Sidekiq::Client resiliant
635
- to Redis network failures. [#793]
636
- - Move `sidekiq/reliable_fetch` to `sidekiq/pro/reliable_fetch`
637
-
638
-
639
- 1.0.0
640
- -----------
641
-
642
- - Sidekiq Pro changelog moved to mperham/sidekiq for public visibility.
643
- - Add new Rack endpoint for easy polling of batch status via JavaScript. See `sidekiq/rack/batch_status`
644
-
645
- 0.9.3
646
- -----------
647
-
648
- - Fix bad /batches path in Web UI
649
- - Fix Sinatra conflict with sidekiq-failures
650
-
651
- 0.9.2
652
- -----------
653
-
654
- - Fix issue with lifecycle notifications not firing.
655
-
656
- 0.9.1
657
- -----------
658
-
659
- - Update due to Sidekiq API changes.
660
-
661
- 0.9.0
662
- -----------
663
-
664
- - Rearchitect Sidekiq's Fetch code to support different fetch
665
- strategies. Add a ReliableFetch strategy which works with Redis'
666
- RPOPLPUSH to ensure we don't lose messages, even when the Sidekiq
667
- process crashes unexpectedly. [mperham/sidekiq#607]
668
-
669
- 0.8.2
670
- -----------
671
-
672
- - Reimplement existing notifications using batch on_complete events.
673
-
674
- 0.8.1
675
- -----------
676
-
677
- - Rejigger batch callback notifications.
678
-
679
-
680
- 0.8.0
681
- -----------
682
-
683
- - Add new Batch 'callback' notification support, for in-process
684
- notification.
685
- - Symbolize option keys passed to Pony [mperham/sidekiq#603]
686
- - Batch no longer requires the Web UI since Web UI usage is optional.
687
- You must require is manually in your Web process:
688
-
689
- ```ruby
690
- require 'sidekiq/web'
691
- require 'sidekiq/batch/web'
692
- mount Sidekiq::Web => '/sidekiq'
693
- ```
694
-
695
-
696
- 0.7.1
697
- -----------
698
-
699
- - Worker instances can access the associated jid and bid via simple
700
- accessors.
701
- - Batches can now be modified while being processed so, e.g. a batch
702
- job can add additional jobs to its own batch.
703
-
704
- ```ruby
705
- def perform(...)
706
- batch = Sidekiq::Batch.new(bid) # instantiate batch associated with this job
707
- batch.jobs do
708
- SomeWorker.perform_async # add another job
709
- end
710
- end
711
- ```
712
-
713
- - Save error backtraces in batch's failure info for display in Web UI.
714
- - Clean up email notification a bit.
715
-
716
-
717
- 0.7.0
718
- -----------
719
-
720
- - Add optional batch description
721
- - Mutable batches. Batches can now be modified to add additional jobs
722
- at runtime. Example would be a batch job which needs to create more
723
- jobs based on the data it is processing.
724
-
725
- ```ruby
726
- batch = Sidekiq::Batch.new(bid)
727
- batch.jobs do
728
- # define more jobs here
729
- end
730
- ```
731
- - Fix issues with symbols vs strings in option hashes
732
-
733
-
734
- 0.6.1
735
- -----------
736
-
737
- - Webhook notification support
738
-
739
-
740
- 0.6
741
- -----------
742
-
743
- - Redis pubsub
744
- - Email polish
745
-
746
-
747
- 0.5
748
- -----------
749
-
750
- - Batches
751
- - Notifications
752
- - Statsd middleware