sidekiq 5.1.3 → 7.3.1

Sign up to get free protection for your applications and to get access to all the features.
Files changed (157) hide show
  1. checksums.yaml +5 -5
  2. data/Changes.md +756 -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 +59 -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 +640 -330
  14. data/lib/sidekiq/capsule.rb +132 -0
  15. data/lib/sidekiq/cli.rb +244 -257
  16. data/lib/sidekiq/client.rb +132 -103
  17. data/lib/sidekiq/component.rb +68 -0
  18. data/lib/sidekiq/config.rb +293 -0
  19. data/lib/sidekiq/deploy.rb +64 -0
  20. data/lib/sidekiq/embedded.rb +63 -0
  21. data/lib/sidekiq/fetch.rb +49 -42
  22. data/lib/sidekiq/iterable_job.rb +55 -0
  23. data/lib/sidekiq/job/interrupt_handler.rb +24 -0
  24. data/lib/sidekiq/job/iterable/active_record_enumerator.rb +53 -0
  25. data/lib/sidekiq/job/iterable/csv_enumerator.rb +47 -0
  26. data/lib/sidekiq/job/iterable/enumerators.rb +135 -0
  27. data/lib/sidekiq/job/iterable.rb +231 -0
  28. data/lib/sidekiq/job.rb +385 -0
  29. data/lib/sidekiq/job_logger.rb +49 -12
  30. data/lib/sidekiq/job_retry.rb +167 -103
  31. data/lib/sidekiq/job_util.rb +109 -0
  32. data/lib/sidekiq/launcher.rb +209 -102
  33. data/lib/sidekiq/logger.rb +131 -0
  34. data/lib/sidekiq/manager.rb +43 -46
  35. data/lib/sidekiq/metrics/query.rb +158 -0
  36. data/lib/sidekiq/metrics/shared.rb +97 -0
  37. data/lib/sidekiq/metrics/tracking.rb +148 -0
  38. data/lib/sidekiq/middleware/chain.rb +113 -56
  39. data/lib/sidekiq/middleware/current_attributes.rb +113 -0
  40. data/lib/sidekiq/middleware/i18n.rb +7 -7
  41. data/lib/sidekiq/middleware/modules.rb +23 -0
  42. data/lib/sidekiq/monitor.rb +147 -0
  43. data/lib/sidekiq/paginator.rb +28 -16
  44. data/lib/sidekiq/processor.rb +175 -112
  45. data/lib/sidekiq/rails.rb +54 -39
  46. data/lib/sidekiq/redis_client_adapter.rb +114 -0
  47. data/lib/sidekiq/redis_connection.rb +65 -86
  48. data/lib/sidekiq/ring_buffer.rb +31 -0
  49. data/lib/sidekiq/scheduled.rb +139 -48
  50. data/lib/sidekiq/sd_notify.rb +149 -0
  51. data/lib/sidekiq/systemd.rb +26 -0
  52. data/lib/sidekiq/testing/inline.rb +6 -5
  53. data/lib/sidekiq/testing.rb +95 -94
  54. data/lib/sidekiq/transaction_aware_client.rb +51 -0
  55. data/lib/sidekiq/version.rb +3 -1
  56. data/lib/sidekiq/web/action.rb +22 -12
  57. data/lib/sidekiq/web/application.rb +225 -76
  58. data/lib/sidekiq/web/csrf_protection.rb +183 -0
  59. data/lib/sidekiq/web/helpers.rb +215 -118
  60. data/lib/sidekiq/web/router.rb +23 -19
  61. data/lib/sidekiq/web.rb +114 -106
  62. data/lib/sidekiq/worker_compatibility_alias.rb +13 -0
  63. data/lib/sidekiq.rb +95 -182
  64. data/sidekiq.gemspec +26 -23
  65. data/web/assets/images/apple-touch-icon.png +0 -0
  66. data/web/assets/javascripts/application.js +157 -61
  67. data/web/assets/javascripts/base-charts.js +106 -0
  68. data/web/assets/javascripts/chart.min.js +13 -0
  69. data/web/assets/javascripts/chartjs-plugin-annotation.min.js +7 -0
  70. data/web/assets/javascripts/dashboard-charts.js +192 -0
  71. data/web/assets/javascripts/dashboard.js +35 -283
  72. data/web/assets/javascripts/metrics.js +298 -0
  73. data/web/assets/stylesheets/application-dark.css +147 -0
  74. data/web/assets/stylesheets/application-rtl.css +10 -93
  75. data/web/assets/stylesheets/application.css +169 -522
  76. data/web/assets/stylesheets/bootstrap.css +2 -2
  77. data/web/locales/ar.yml +71 -64
  78. data/web/locales/cs.yml +62 -62
  79. data/web/locales/da.yml +60 -53
  80. data/web/locales/de.yml +65 -53
  81. data/web/locales/el.yml +43 -24
  82. data/web/locales/en.yml +86 -65
  83. data/web/locales/es.yml +70 -54
  84. data/web/locales/fa.yml +65 -65
  85. data/web/locales/fr.yml +83 -62
  86. data/web/locales/gd.yml +99 -0
  87. data/web/locales/he.yml +65 -64
  88. data/web/locales/hi.yml +59 -59
  89. data/web/locales/it.yml +53 -53
  90. data/web/locales/ja.yml +75 -64
  91. data/web/locales/ko.yml +52 -52
  92. data/web/locales/lt.yml +83 -0
  93. data/web/locales/nb.yml +61 -61
  94. data/web/locales/nl.yml +52 -52
  95. data/web/locales/pl.yml +45 -45
  96. data/web/locales/pt-br.yml +83 -55
  97. data/web/locales/pt.yml +51 -51
  98. data/web/locales/ru.yml +68 -63
  99. data/web/locales/sv.yml +53 -53
  100. data/web/locales/ta.yml +60 -60
  101. data/web/locales/tr.yml +101 -0
  102. data/web/locales/uk.yml +62 -61
  103. data/web/locales/ur.yml +64 -64
  104. data/web/locales/vi.yml +83 -0
  105. data/web/locales/zh-cn.yml +43 -16
  106. data/web/locales/zh-tw.yml +42 -8
  107. data/web/views/_footer.erb +18 -3
  108. data/web/views/_job_info.erb +21 -4
  109. data/web/views/_metrics_period_select.erb +12 -0
  110. data/web/views/_nav.erb +4 -18
  111. data/web/views/_paging.erb +2 -0
  112. data/web/views/_poll_link.erb +3 -6
  113. data/web/views/_summary.erb +7 -7
  114. data/web/views/busy.erb +79 -29
  115. data/web/views/dashboard.erb +49 -19
  116. data/web/views/dead.erb +3 -3
  117. data/web/views/filtering.erb +7 -0
  118. data/web/views/layout.erb +9 -7
  119. data/web/views/metrics.erb +91 -0
  120. data/web/views/metrics_for_job.erb +59 -0
  121. data/web/views/morgue.erb +14 -15
  122. data/web/views/queue.erb +33 -23
  123. data/web/views/queues.erb +19 -5
  124. data/web/views/retries.erb +19 -16
  125. data/web/views/retry.erb +3 -3
  126. data/web/views/scheduled.erb +17 -15
  127. metadata +84 -129
  128. data/.github/contributing.md +0 -32
  129. data/.github/issue_template.md +0 -11
  130. data/.gitignore +0 -13
  131. data/.travis.yml +0 -14
  132. data/3.0-Upgrade.md +0 -70
  133. data/4.0-Upgrade.md +0 -53
  134. data/5.0-Upgrade.md +0 -56
  135. data/COMM-LICENSE +0 -95
  136. data/Ent-Changes.md +0 -216
  137. data/Gemfile +0 -8
  138. data/LICENSE +0 -9
  139. data/Pro-2.0-Upgrade.md +0 -138
  140. data/Pro-3.0-Upgrade.md +0 -44
  141. data/Pro-4.0-Upgrade.md +0 -35
  142. data/Pro-Changes.md +0 -729
  143. data/Rakefile +0 -8
  144. data/bin/sidekiqctl +0 -99
  145. data/code_of_conduct.md +0 -50
  146. data/lib/generators/sidekiq/worker_generator.rb +0 -49
  147. data/lib/sidekiq/core_ext.rb +0 -1
  148. data/lib/sidekiq/delay.rb +0 -42
  149. data/lib/sidekiq/exception_handler.rb +0 -29
  150. data/lib/sidekiq/extensions/action_mailer.rb +0 -57
  151. data/lib/sidekiq/extensions/active_record.rb +0 -40
  152. data/lib/sidekiq/extensions/class_methods.rb +0 -40
  153. data/lib/sidekiq/extensions/generic_proxy.rb +0 -31
  154. data/lib/sidekiq/logging.rb +0 -122
  155. data/lib/sidekiq/middleware/server/active_record.rb +0 -23
  156. data/lib/sidekiq/util.rb +0 -66
  157. data/lib/sidekiq/worker.rb +0 -204
metadata CHANGED
@@ -1,227 +1,169 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: sidekiq
3
3
  version: !ruby/object:Gem::Version
4
- version: 5.1.3
4
+ version: 7.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Mike Perham
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2018-04-02 00:00:00.000000000 Z
11
+ date: 2024-08-15 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
- name: redis
14
+ name: redis-client
15
15
  requirement: !ruby/object:Gem::Requirement
16
16
  requirements:
17
17
  - - ">="
18
18
  - !ruby/object:Gem::Version
19
- version: 3.3.5
20
- - - "<"
21
- - !ruby/object:Gem::Version
22
- version: '5'
19
+ version: 0.22.2
23
20
  type: :runtime
24
21
  prerelease: false
25
22
  version_requirements: !ruby/object:Gem::Requirement
26
23
  requirements:
27
24
  - - ">="
28
25
  - !ruby/object:Gem::Version
29
- version: 3.3.5
30
- - - "<"
31
- - !ruby/object:Gem::Version
32
- version: '5'
26
+ version: 0.22.2
33
27
  - !ruby/object:Gem::Dependency
34
28
  name: connection_pool
35
29
  requirement: !ruby/object:Gem::Requirement
36
30
  requirements:
37
- - - "~>"
38
- - !ruby/object:Gem::Version
39
- version: '2.2'
40
31
  - - ">="
41
32
  - !ruby/object:Gem::Version
42
- version: 2.2.0
33
+ version: 2.3.0
43
34
  type: :runtime
44
35
  prerelease: false
45
36
  version_requirements: !ruby/object:Gem::Requirement
46
37
  requirements:
47
- - - "~>"
48
- - !ruby/object:Gem::Version
49
- version: '2.2'
50
38
  - - ">="
51
39
  - !ruby/object:Gem::Version
52
- version: 2.2.0
40
+ version: 2.3.0
53
41
  - !ruby/object:Gem::Dependency
54
- name: concurrent-ruby
55
- requirement: !ruby/object:Gem::Requirement
56
- requirements:
57
- - - "~>"
58
- - !ruby/object:Gem::Version
59
- version: '1.0'
60
- type: :runtime
61
- prerelease: false
62
- version_requirements: !ruby/object:Gem::Requirement
63
- requirements:
64
- - - "~>"
65
- - !ruby/object:Gem::Version
66
- version: '1.0'
67
- - !ruby/object:Gem::Dependency
68
- name: rack-protection
42
+ name: rack
69
43
  requirement: !ruby/object:Gem::Requirement
70
44
  requirements:
71
45
  - - ">="
72
46
  - !ruby/object:Gem::Version
73
- version: 1.5.0
47
+ version: 2.2.4
74
48
  type: :runtime
75
49
  prerelease: false
76
50
  version_requirements: !ruby/object:Gem::Requirement
77
51
  requirements:
78
52
  - - ">="
79
53
  - !ruby/object:Gem::Version
80
- version: 1.5.0
54
+ version: 2.2.4
81
55
  - !ruby/object:Gem::Dependency
82
- name: redis-namespace
83
- requirement: !ruby/object:Gem::Requirement
84
- requirements:
85
- - - "~>"
86
- - !ruby/object:Gem::Version
87
- version: '1.5'
88
- - - ">="
89
- - !ruby/object:Gem::Version
90
- version: 1.5.2
91
- type: :development
92
- prerelease: false
93
- version_requirements: !ruby/object:Gem::Requirement
94
- requirements:
95
- - - "~>"
96
- - !ruby/object:Gem::Version
97
- version: '1.5'
98
- - - ">="
99
- - !ruby/object:Gem::Version
100
- version: 1.5.2
101
- - !ruby/object:Gem::Dependency
102
- name: minitest
103
- requirement: !ruby/object:Gem::Requirement
104
- requirements:
105
- - - "~>"
106
- - !ruby/object:Gem::Version
107
- version: '5.10'
108
- - - ">="
109
- - !ruby/object:Gem::Version
110
- version: 5.10.1
111
- type: :development
112
- prerelease: false
113
- version_requirements: !ruby/object:Gem::Requirement
114
- requirements:
115
- - - "~>"
116
- - !ruby/object:Gem::Version
117
- version: '5.10'
118
- - - ">="
119
- - !ruby/object:Gem::Version
120
- version: 5.10.1
121
- - !ruby/object:Gem::Dependency
122
- name: rake
56
+ name: concurrent-ruby
123
57
  requirement: !ruby/object:Gem::Requirement
124
58
  requirements:
125
- - - "~>"
59
+ - - "<"
126
60
  - !ruby/object:Gem::Version
127
- version: '10.0'
128
- type: :development
61
+ version: '2'
62
+ type: :runtime
129
63
  prerelease: false
130
64
  version_requirements: !ruby/object:Gem::Requirement
131
65
  requirements:
132
- - - "~>"
66
+ - - "<"
133
67
  - !ruby/object:Gem::Version
134
- version: '10.0'
68
+ version: '2'
135
69
  - !ruby/object:Gem::Dependency
136
- name: rails
70
+ name: logger
137
71
  requirement: !ruby/object:Gem::Requirement
138
72
  requirements:
139
73
  - - ">="
140
74
  - !ruby/object:Gem::Version
141
- version: 3.2.0
142
- type: :development
75
+ version: '0'
76
+ type: :runtime
143
77
  prerelease: false
144
78
  version_requirements: !ruby/object:Gem::Requirement
145
79
  requirements:
146
80
  - - ">="
147
81
  - !ruby/object:Gem::Version
148
- version: 3.2.0
82
+ version: '0'
149
83
  description: Simple, efficient background processing for Ruby.
150
84
  email:
151
- - mperham@gmail.com
85
+ - info@contribsys.com
152
86
  executables:
153
87
  - sidekiq
154
- - sidekiqctl
88
+ - sidekiqmon
155
89
  extensions: []
156
90
  extra_rdoc_files: []
157
91
  files:
158
- - ".github/contributing.md"
159
- - ".github/issue_template.md"
160
- - ".gitignore"
161
- - ".travis.yml"
162
- - 3.0-Upgrade.md
163
- - 4.0-Upgrade.md
164
- - 5.0-Upgrade.md
165
- - COMM-LICENSE
166
92
  - Changes.md
167
- - Ent-Changes.md
168
- - Gemfile
169
- - LICENSE
170
- - Pro-2.0-Upgrade.md
171
- - Pro-3.0-Upgrade.md
172
- - Pro-4.0-Upgrade.md
173
- - Pro-Changes.md
93
+ - LICENSE.txt
174
94
  - README.md
175
- - Rakefile
95
+ - bin/multi_queue_bench
176
96
  - bin/sidekiq
177
- - bin/sidekiqctl
178
97
  - bin/sidekiqload
179
- - code_of_conduct.md
180
- - lib/generators/sidekiq/templates/worker.rb.erb
181
- - lib/generators/sidekiq/templates/worker_spec.rb.erb
182
- - lib/generators/sidekiq/templates/worker_test.rb.erb
183
- - lib/generators/sidekiq/worker_generator.rb
98
+ - bin/sidekiqmon
99
+ - lib/generators/sidekiq/job_generator.rb
100
+ - lib/generators/sidekiq/templates/job.rb.erb
101
+ - lib/generators/sidekiq/templates/job_spec.rb.erb
102
+ - lib/generators/sidekiq/templates/job_test.rb.erb
184
103
  - lib/sidekiq.rb
185
104
  - lib/sidekiq/api.rb
105
+ - lib/sidekiq/capsule.rb
186
106
  - lib/sidekiq/cli.rb
187
107
  - lib/sidekiq/client.rb
188
- - lib/sidekiq/core_ext.rb
189
- - lib/sidekiq/delay.rb
190
- - lib/sidekiq/exception_handler.rb
191
- - lib/sidekiq/extensions/action_mailer.rb
192
- - lib/sidekiq/extensions/active_record.rb
193
- - lib/sidekiq/extensions/class_methods.rb
194
- - lib/sidekiq/extensions/generic_proxy.rb
108
+ - lib/sidekiq/component.rb
109
+ - lib/sidekiq/config.rb
110
+ - lib/sidekiq/deploy.rb
111
+ - lib/sidekiq/embedded.rb
195
112
  - lib/sidekiq/fetch.rb
113
+ - lib/sidekiq/iterable_job.rb
114
+ - lib/sidekiq/job.rb
115
+ - lib/sidekiq/job/interrupt_handler.rb
116
+ - lib/sidekiq/job/iterable.rb
117
+ - lib/sidekiq/job/iterable/active_record_enumerator.rb
118
+ - lib/sidekiq/job/iterable/csv_enumerator.rb
119
+ - lib/sidekiq/job/iterable/enumerators.rb
196
120
  - lib/sidekiq/job_logger.rb
197
121
  - lib/sidekiq/job_retry.rb
122
+ - lib/sidekiq/job_util.rb
198
123
  - lib/sidekiq/launcher.rb
199
- - lib/sidekiq/logging.rb
124
+ - lib/sidekiq/logger.rb
200
125
  - lib/sidekiq/manager.rb
126
+ - lib/sidekiq/metrics/query.rb
127
+ - lib/sidekiq/metrics/shared.rb
128
+ - lib/sidekiq/metrics/tracking.rb
201
129
  - lib/sidekiq/middleware/chain.rb
130
+ - lib/sidekiq/middleware/current_attributes.rb
202
131
  - lib/sidekiq/middleware/i18n.rb
203
- - lib/sidekiq/middleware/server/active_record.rb
132
+ - lib/sidekiq/middleware/modules.rb
133
+ - lib/sidekiq/monitor.rb
204
134
  - lib/sidekiq/paginator.rb
205
135
  - lib/sidekiq/processor.rb
206
136
  - lib/sidekiq/rails.rb
137
+ - lib/sidekiq/redis_client_adapter.rb
207
138
  - lib/sidekiq/redis_connection.rb
139
+ - lib/sidekiq/ring_buffer.rb
208
140
  - lib/sidekiq/scheduled.rb
141
+ - lib/sidekiq/sd_notify.rb
142
+ - lib/sidekiq/systemd.rb
209
143
  - lib/sidekiq/testing.rb
210
144
  - lib/sidekiq/testing/inline.rb
211
- - lib/sidekiq/util.rb
145
+ - lib/sidekiq/transaction_aware_client.rb
212
146
  - lib/sidekiq/version.rb
213
147
  - lib/sidekiq/web.rb
214
148
  - lib/sidekiq/web/action.rb
215
149
  - lib/sidekiq/web/application.rb
150
+ - lib/sidekiq/web/csrf_protection.rb
216
151
  - lib/sidekiq/web/helpers.rb
217
152
  - lib/sidekiq/web/router.rb
218
- - lib/sidekiq/worker.rb
153
+ - lib/sidekiq/worker_compatibility_alias.rb
219
154
  - sidekiq.gemspec
155
+ - web/assets/images/apple-touch-icon.png
220
156
  - web/assets/images/favicon.ico
221
157
  - web/assets/images/logo.png
222
158
  - web/assets/images/status.png
223
159
  - web/assets/javascripts/application.js
160
+ - web/assets/javascripts/base-charts.js
161
+ - web/assets/javascripts/chart.min.js
162
+ - web/assets/javascripts/chartjs-plugin-annotation.min.js
163
+ - web/assets/javascripts/dashboard-charts.js
224
164
  - web/assets/javascripts/dashboard.js
165
+ - web/assets/javascripts/metrics.js
166
+ - web/assets/stylesheets/application-dark.css
225
167
  - web/assets/stylesheets/application-rtl.css
226
168
  - web/assets/stylesheets/application.css
227
169
  - web/assets/stylesheets/bootstrap-rtl.min.css
@@ -235,11 +177,13 @@ files:
235
177
  - web/locales/es.yml
236
178
  - web/locales/fa.yml
237
179
  - web/locales/fr.yml
180
+ - web/locales/gd.yml
238
181
  - web/locales/he.yml
239
182
  - web/locales/hi.yml
240
183
  - web/locales/it.yml
241
184
  - web/locales/ja.yml
242
185
  - web/locales/ko.yml
186
+ - web/locales/lt.yml
243
187
  - web/locales/nb.yml
244
188
  - web/locales/nl.yml
245
189
  - web/locales/pl.yml
@@ -248,12 +192,15 @@ files:
248
192
  - web/locales/ru.yml
249
193
  - web/locales/sv.yml
250
194
  - web/locales/ta.yml
195
+ - web/locales/tr.yml
251
196
  - web/locales/uk.yml
252
197
  - web/locales/ur.yml
198
+ - web/locales/vi.yml
253
199
  - web/locales/zh-cn.yml
254
200
  - web/locales/zh-tw.yml
255
201
  - web/views/_footer.erb
256
202
  - web/views/_job_info.erb
203
+ - web/views/_metrics_period_select.erb
257
204
  - web/views/_nav.erb
258
205
  - web/views/_paging.erb
259
206
  - web/views/_poll_link.erb
@@ -262,7 +209,10 @@ files:
262
209
  - web/views/busy.erb
263
210
  - web/views/dashboard.erb
264
211
  - web/views/dead.erb
212
+ - web/views/filtering.erb
265
213
  - web/views/layout.erb
214
+ - web/views/metrics.erb
215
+ - web/views/metrics_for_job.erb
266
216
  - web/views/morgue.erb
267
217
  - web/views/queue.erb
268
218
  - web/views/queues.erb
@@ -270,11 +220,17 @@ files:
270
220
  - web/views/retry.erb
271
221
  - web/views/scheduled.erb
272
222
  - web/views/scheduled_job_info.erb
273
- homepage: http://sidekiq.org
223
+ homepage: https://sidekiq.org
274
224
  licenses:
275
225
  - LGPL-3.0
276
- metadata: {}
277
- post_install_message:
226
+ metadata:
227
+ homepage_uri: https://sidekiq.org
228
+ bug_tracker_uri: https://github.com/sidekiq/sidekiq/issues
229
+ documentation_uri: https://github.com/sidekiq/sidekiq/wiki
230
+ changelog_uri: https://github.com/sidekiq/sidekiq/blob/main/Changes.md
231
+ source_code_uri: https://github.com/sidekiq/sidekiq
232
+ rubygems_mfa_required: 'true'
233
+ post_install_message:
278
234
  rdoc_options: []
279
235
  require_paths:
280
236
  - lib
@@ -282,16 +238,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
282
238
  requirements:
283
239
  - - ">="
284
240
  - !ruby/object:Gem::Version
285
- version: 2.2.2
241
+ version: 2.7.0
286
242
  required_rubygems_version: !ruby/object:Gem::Requirement
287
243
  requirements:
288
244
  - - ">="
289
245
  - !ruby/object:Gem::Version
290
246
  version: '0'
291
247
  requirements: []
292
- rubyforge_project:
293
- rubygems_version: 2.6.13
294
- signing_key:
248
+ rubygems_version: 3.5.11
249
+ signing_key:
295
250
  specification_version: 4
296
251
  summary: Simple, efficient background processing for Ruby
297
252
  test_files: []
@@ -1,32 +0,0 @@
1
- # Contributing
2
-
3
- ## Issues
4
-
5
- When opening an issue:
6
-
7
- * include the full **backtrace** with your error
8
- * include your Sidekiq initializer
9
- * list versions you are using: Ruby, Rails, Sidekiq, OS, etc.
10
-
11
- It's always better to include more info rather than less.
12
-
13
- ## Code
14
-
15
- It's always best to open an issue before investing a lot of time into a
16
- fix or new functionality. Functionality must meet my design goals and
17
- vision for the project to be accepted; I would be happy to discuss how
18
- your idea can best fit into Sidekiq.
19
-
20
- ## Legal
21
-
22
- By submitting a Pull Request, you disavow any rights or claims to any changes
23
- submitted to the Sidekiq project and assign the copyright of
24
- those changes to Contributed Systems LLC.
25
-
26
- If you cannot or do not want to reassign those rights (your employment
27
- contract for your employer may not allow this), you should not submit a PR.
28
- Open an issue and someone else can do the work.
29
-
30
- This is a legal way of saying "If you submit a PR to us, that code becomes ours".
31
- 99.9% of the time that's what you intend anyways; we hope it doesn't scare you
32
- away from contributing.
@@ -1,11 +0,0 @@
1
- Ruby version:
2
- Sidekiq / Pro / Enterprise version(s):
3
-
4
- Please include your initializer and any error message with the full backtrace.
5
-
6
- Are you using an old version?
7
- Have you checked the changelogs to see if your issue has been fixed in a later version?
8
-
9
- https://github.com/mperham/sidekiq/blob/master/Changes.md
10
- https://github.com/mperham/sidekiq/blob/master/Pro-Changes.md
11
- https://github.com/mperham/sidekiq/blob/master/Ent-Changes.md
data/.gitignore DELETED
@@ -1,13 +0,0 @@
1
- .rvmrc
2
- .ruby-version
3
- tags
4
- Gemfile.lock
5
- *.swp
6
- dump.rdb
7
- .rbx
8
- coverage/
9
- vendor/
10
- .bundle/
11
- .sass-cache/
12
- tmp/
13
- pkg/*.gem
data/.travis.yml DELETED
@@ -1,14 +0,0 @@
1
- language: ruby
2
- sudo: false
3
- cache: bundler
4
- services:
5
- - redis-server
6
- before_install:
7
- - gem install bundler
8
- - gem update bundler
9
- rvm:
10
- - 2.2.10
11
- - 2.3.7
12
- - 2.4.4
13
- - 2.5.1
14
- - jruby-9.1.16.0
data/3.0-Upgrade.md DELETED
@@ -1,70 +0,0 @@
1
- # Upgrading to Sidekiq 3.0
2
-
3
- Sidekiq 3.0 brings several new features but also removes old APIs and
4
- changes a few data elements in Redis. To upgrade cleanly:
5
-
6
- * Upgrade to the latest Sidekiq 2.x and run it for a few weeks.
7
- `gem 'sidekiq', '< 3'`
8
- This is only needed if you have retries pending.
9
- * 3rd party gems which use **client-side middleware** will need to update
10
- due to an API change. The Redis connection for a particular job is
11
- passed thru the middleware to handle sharding where jobs can
12
- be pushed to different redis server instances.
13
-
14
- `def call(worker_class, msg, queue, redis_pool)`
15
-
16
- Client-side middleware should use `redis_pool.with { |conn| ... }` to
17
- perform Redis operations and **not** `Sidekiq.redis`.
18
- * If you used the capistrano integration, you'll need to pull in the
19
- new [capistrano-sidekiq](https://github.com/seuros/capistrano-sidekiq)
20
- gem and use it in your deploy.rb.
21
- * API changes:
22
- - `Sidekiq::Client.registered_workers` replaced by `Sidekiq::Workers.new`
23
- - `Sidekiq::Client.registered_queues` replaced by `Sidekiq::Queue.all`
24
- - `Sidekiq::Worker#retries_exhausted` replaced by `Sidekiq::Worker.sidekiq_retries_exhausted`
25
- - `Sidekiq::Workers#each` has changed significantly with a reworking
26
- of Sidekiq's internal process/thread data model.
27
- * `sidekiq/api` is no longer automatically required. If your code uses
28
- the API, you will need to require it.
29
- * Redis-to-Go is no longer transparently activated on Heroku so as to not play
30
- favorites with any particular Redis service. You need to set a config option
31
- for your app:
32
- `heroku config:set REDIS_PROVIDER=REDISTOGO_URL`. You may also use
33
- the generic `REDIS_URL`. See
34
- [Advanced Options: Setting the Location of your Redis server][1]
35
- for details.
36
- * Anyone using Airbrake, Honeybadger, Exceptional or ExceptionNotifier
37
- will need to update their error gem version to the latest to pull in
38
- Sidekiq support. Sidekiq will not provide explicit support for these
39
- services so as to not play favorites with any particular error service.
40
- * MRI 1.9 is no longer officially supported. Sidekiq's official
41
- support policy is to support the current and previous major releases
42
- of MRI and Rails. As of February 2014, that's MRI 2.1, MRI 2.0, JRuby 1.7, Rails 4.0
43
- and Rails 3.2. I will consider PRs to fix issues found by users for
44
- other platforms/versions.
45
-
46
- ## Error Service Providers
47
-
48
- If you previously provided a middleware to capture job errors, you
49
- should instead provide a global error handler with Sidekiq 3.0. This
50
- ensures **any** error within Sidekiq will be logged appropriately, not
51
- just during job execution.
52
-
53
- ```ruby
54
- if Sidekiq::VERSION < '3'
55
- # old behavior
56
- Sidekiq.configure_server do |config|
57
- config.server_middleware do |chain|
58
- chain.add MyErrorService::Middleware
59
- end
60
- end
61
- else
62
- Sidekiq.configure_server do |config|
63
- config.error_handlers << proc {|ex,context| MyErrorService.notify(ex, context) }
64
- end
65
- end
66
- ```
67
-
68
- Your error handler must respond to `call(exception, context_hash)`.
69
-
70
- [1]: https://github.com/mperham/sidekiq/wiki/Advanced-Options#via-env-variable
data/4.0-Upgrade.md DELETED
@@ -1,53 +0,0 @@
1
- # Welcome to Sidekiq 4.0!
2
-
3
- Sidekiq 4.0 contains a redesigned, more efficient core with less overhead per job.
4
- See my blog for [an overview of Sidekiq 4's higher performance](http://www.mikeperham.com/2015/10/14/optimizing-sidekiq/).
5
-
6
- ## What's New
7
-
8
- * Sidekiq no longer uses Celluloid. If your application code uses Celluloid,
9
- you will need to pull it in yourself.
10
-
11
- * `redis-namespace` has been removed from Sidekiq's gem dependencies. If
12
- you want to use namespacing ([and I strongly urge you not to](http://www.mikeperham.com/2015/09/24/storing-data-with-redis/)), you'll need to add the gem to your Gemfile:
13
- ```ruby
14
- gem 'redis-namespace'
15
- ```
16
-
17
- * **Redis 2.8.0 or greater is required.** Redis 2.8 was released two years
18
- ago and contains **many** useful features which Sidekiq couldn't
19
- leverage until now. **Redis 3.0.3 or greater is recommended** for large
20
- scale use [#2431](https://github.com/mperham/sidekiq/issues/2431).
21
-
22
- * Jobs are now fetched from Redis in parallel, making Sidekiq more
23
- resilient to high network latency. This means that Sidekiq requires
24
- more Redis connections per process. You must have a minimum of
25
- `concurrency + 2` connections in your pool or Sidekiq will exit.
26
- When in doubt, let Sidekiq size the connection pool for you.
27
-
28
- * Worker data is no longer updated in real-time but rather upon every
29
- heartbeat. Don't expect the `Sidekiq::Workers` API to be millisecond-precise.
30
-
31
- * There's a new testing API based off the `Sidekiq::Queues` namespace. All
32
- assertions made against the Worker class still work as expected.
33
- ```ruby
34
- assert_equal 0, Sidekiq::Queues["default"].size
35
- HardWorker.perform_async("log")
36
- assert_equal 1, Sidekiq::Queues["default"].size
37
- assert_equal "log", Sidekiq::Queues["default"].first['args'][0]
38
- Sidekiq::Queues.clear_all
39
- ```
40
-
41
- ## Upgrade
42
-
43
- First, make sure you are using Redis 2.8 or greater. Next:
44
-
45
- * Upgrade to the latest Sidekiq 3.x.
46
- ```ruby
47
- gem 'sidekiq', '< 4'
48
- ```
49
- * Fix any deprecation warnings you see.
50
- * Upgrade to 4.x.
51
- ```ruby
52
- gem 'sidekiq', '< 5'
53
- ```
data/5.0-Upgrade.md DELETED
@@ -1,56 +0,0 @@
1
- # Welcome to Sidekiq 5.0!
2
-
3
- Sidekiq 5.0 contains a reworked job dispatch and execution core to integrate
4
- better with the new Rails 5.0 Executor. It also drops support for older
5
- versions of Ruby and Rails and adds support for RTL languages in the Web UI.
6
-
7
- ## What's New
8
-
9
- * Integrate job logging and retry logic directly in with the job
10
- execution logic in Sidekiq::Processor. Previously this logic was
11
- defined as middleware. In Rails 5.0, ActiveSupport::Executor handles ActiveRecord
12
- connection management, job callbacks, development mode class loading,
13
- etc. Because of its extensive responsibilities, the Executor can't be
14
- integrated as Sidekiq middleware; the logging/retry logic had to be pulled out
15
- too. Sidekiq 4.2 had a hack to make it work but this redesign provides
16
- a cleaner integration. [#3235]
17
- * The Delayed Extensions `delay`, `delay_in` and `delay_until` APIs are
18
- no longer available by default. The extensions allow you to marshal
19
- job arguments as YAML, leading to cases where job payloads could be many
20
- 100s of KB or larger if not careful, leading to Redis networking
21
- timeouts or other problems. As noted in the Best Practices wiki page,
22
- Sidekiq is designed for jobs with small, simple arguments.
23
-
24
- Add this line to your initializer to re-enable them and get the old behavior:
25
- ```ruby
26
- Sidekiq::Extensions.enable_delay!
27
- ```
28
- The old `Sidekiq.remove_delay!` API has been removed as it is now the default. [#3299]
29
- * Sidekiq's quiet signal is now `TSTP` (think of it as **T**hread
30
- **ST**o**P**) instead of USR1 as USR1 is not available on JRuby.
31
- USR1 will continue to be supported in Sidekiq 5.x for backwards
32
- compatibility and will be removed in Sidekiq 6.x. [#3302]
33
- * The Web UI is now bi-directional - it can render either LTR
34
- (left-to-right) or RTL languages. With this change, **Farsi, Arabic,
35
- Hebrew and Urdu** are officially supported. [#3381]
36
- * Jobs which can't be parsed due to invalid JSON are now pushed
37
- immediately to the Dead set since they require manual intervention and
38
- will never execute successfully as is. The Web UI has been updated to
39
- more gracefully display these jobs. [#3296]
40
- * **Rails 3.2** is no longer supported.
41
- * **Ruby 2.0 and Ruby 2.1** are no longer supported. Ruby 2.2.2+ is required.
42
-
43
- ## Upgrade
44
-
45
- As always, please upgrade Sidekiq **one major version at a time**.
46
- If you are already running Sidekiq 4.x, then:
47
-
48
- * Upgrade to the latest Sidekiq 4.x.
49
- ```ruby
50
- gem 'sidekiq', '< 5'
51
- ```
52
- * Fix any deprecation warnings you see.
53
- * Upgrade to 5.x.
54
- ```ruby
55
- gem 'sidekiq', '< 6'
56
- ```