sidekiq 6.2.2 → 8.1.5

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (181) hide show
  1. checksums.yaml +4 -4
  2. data/Changes.md +726 -11
  3. data/LICENSE.txt +9 -0
  4. data/README.md +70 -39
  5. data/bin/kiq +17 -0
  6. data/bin/lint-herb +13 -0
  7. data/bin/multi_queue_bench +271 -0
  8. data/bin/sidekiq +4 -9
  9. data/bin/sidekiqload +214 -115
  10. data/bin/sidekiqmon +4 -1
  11. data/bin/webload +69 -0
  12. data/lib/active_job/queue_adapters/sidekiq_adapter.rb +124 -0
  13. data/lib/generators/sidekiq/job_generator.rb +71 -0
  14. data/lib/generators/sidekiq/templates/{worker.rb.erb → job.rb.erb} +3 -3
  15. data/lib/generators/sidekiq/templates/{worker_spec.rb.erb → job_spec.rb.erb} +1 -1
  16. data/lib/generators/sidekiq/templates/{worker_test.rb.erb → job_test.rb.erb} +1 -1
  17. data/lib/sidekiq/api.rb +729 -264
  18. data/lib/sidekiq/capsule.rb +135 -0
  19. data/lib/sidekiq/cli.rb +124 -100
  20. data/lib/sidekiq/client.rb +153 -106
  21. data/lib/sidekiq/component.rb +132 -0
  22. data/lib/sidekiq/config.rb +320 -0
  23. data/lib/sidekiq/deploy.rb +64 -0
  24. data/lib/sidekiq/embedded.rb +64 -0
  25. data/lib/sidekiq/fetch.rb +27 -26
  26. data/lib/sidekiq/iterable_job.rb +56 -0
  27. data/lib/sidekiq/job/interrupt_handler.rb +24 -0
  28. data/lib/sidekiq/job/iterable/active_record_enumerator.rb +53 -0
  29. data/lib/sidekiq/job/iterable/csv_enumerator.rb +47 -0
  30. data/lib/sidekiq/job/iterable/enumerators.rb +135 -0
  31. data/lib/sidekiq/job/iterable.rb +322 -0
  32. data/lib/sidekiq/job.rb +397 -5
  33. data/lib/sidekiq/job_logger.rb +23 -32
  34. data/lib/sidekiq/job_retry.rb +141 -68
  35. data/lib/sidekiq/job_util.rb +113 -0
  36. data/lib/sidekiq/launcher.rb +122 -98
  37. data/lib/sidekiq/loader.rb +57 -0
  38. data/lib/sidekiq/logger.rb +27 -106
  39. data/lib/sidekiq/manager.rb +41 -43
  40. data/lib/sidekiq/metrics/query.rb +184 -0
  41. data/lib/sidekiq/metrics/shared.rb +109 -0
  42. data/lib/sidekiq/metrics/tracking.rb +153 -0
  43. data/lib/sidekiq/middleware/chain.rb +96 -51
  44. data/lib/sidekiq/middleware/current_attributes.rb +120 -0
  45. data/lib/sidekiq/middleware/i18n.rb +8 -4
  46. data/lib/sidekiq/middleware/modules.rb +23 -0
  47. data/lib/sidekiq/monitor.rb +16 -6
  48. data/lib/sidekiq/paginator.rb +37 -10
  49. data/lib/sidekiq/processor.rb +105 -87
  50. data/lib/sidekiq/profiler.rb +73 -0
  51. data/lib/sidekiq/rails.rb +49 -36
  52. data/lib/sidekiq/redis_client_adapter.rb +117 -0
  53. data/lib/sidekiq/redis_connection.rb +55 -86
  54. data/lib/sidekiq/ring_buffer.rb +32 -0
  55. data/lib/sidekiq/scheduled.rb +106 -50
  56. data/lib/sidekiq/systemd.rb +2 -0
  57. data/lib/sidekiq/test_api.rb +331 -0
  58. data/lib/sidekiq/testing/inline.rb +2 -30
  59. data/lib/sidekiq/testing.rb +2 -342
  60. data/lib/sidekiq/transaction_aware_client.rb +59 -0
  61. data/lib/sidekiq/tui/controls.rb +53 -0
  62. data/lib/sidekiq/tui/filtering.rb +53 -0
  63. data/lib/sidekiq/tui/tabs/base_tab.rb +204 -0
  64. data/lib/sidekiq/tui/tabs/busy.rb +118 -0
  65. data/lib/sidekiq/tui/tabs/dead.rb +19 -0
  66. data/lib/sidekiq/tui/tabs/home.rb +144 -0
  67. data/lib/sidekiq/tui/tabs/metrics.rb +131 -0
  68. data/lib/sidekiq/tui/tabs/queues.rb +95 -0
  69. data/lib/sidekiq/tui/tabs/retries.rb +19 -0
  70. data/lib/sidekiq/tui/tabs/scheduled.rb +19 -0
  71. data/lib/sidekiq/tui/tabs/set_tab.rb +96 -0
  72. data/lib/sidekiq/tui/tabs.rb +15 -0
  73. data/lib/sidekiq/tui.rb +382 -0
  74. data/lib/sidekiq/version.rb +6 -1
  75. data/lib/sidekiq/web/action.rb +149 -64
  76. data/lib/sidekiq/web/application.rb +376 -268
  77. data/lib/sidekiq/web/config.rb +117 -0
  78. data/lib/sidekiq/web/helpers.rb +213 -87
  79. data/lib/sidekiq/web/router.rb +61 -74
  80. data/lib/sidekiq/web.rb +71 -100
  81. data/lib/sidekiq/worker_compatibility_alias.rb +13 -0
  82. data/lib/sidekiq.rb +95 -196
  83. data/sidekiq.gemspec +14 -11
  84. data/web/assets/images/logo.png +0 -0
  85. data/web/assets/images/status.png +0 -0
  86. data/web/assets/javascripts/application.js +171 -57
  87. data/web/assets/javascripts/base-charts.js +120 -0
  88. data/web/assets/javascripts/chart.min.js +13 -0
  89. data/web/assets/javascripts/chartjs-adapter-date-fns.min.js +7 -0
  90. data/web/assets/javascripts/chartjs-plugin-annotation.min.js +7 -0
  91. data/web/assets/javascripts/dashboard-charts.js +194 -0
  92. data/web/assets/javascripts/dashboard.js +41 -274
  93. data/web/assets/javascripts/metrics.js +280 -0
  94. data/web/assets/stylesheets/style.css +776 -0
  95. data/web/locales/ar.yml +72 -70
  96. data/web/locales/cs.yml +64 -62
  97. data/web/locales/da.yml +62 -53
  98. data/web/locales/de.yml +67 -65
  99. data/web/locales/el.yml +45 -24
  100. data/web/locales/en.yml +93 -69
  101. data/web/locales/es.yml +91 -68
  102. data/web/locales/fa.yml +67 -65
  103. data/web/locales/fr.yml +82 -67
  104. data/web/locales/gd.yml +110 -0
  105. data/web/locales/he.yml +67 -64
  106. data/web/locales/hi.yml +61 -59
  107. data/web/locales/it.yml +94 -54
  108. data/web/locales/ja.yml +74 -68
  109. data/web/locales/ko.yml +54 -52
  110. data/web/locales/lt.yml +68 -66
  111. data/web/locales/nb.yml +63 -61
  112. data/web/locales/nl.yml +54 -52
  113. data/web/locales/pl.yml +47 -45
  114. data/web/locales/{pt-br.yml → pt-BR.yml} +85 -56
  115. data/web/locales/pt.yml +53 -51
  116. data/web/locales/ru.yml +69 -66
  117. data/web/locales/sv.yml +55 -53
  118. data/web/locales/ta.yml +62 -60
  119. data/web/locales/tr.yml +102 -0
  120. data/web/locales/uk.yml +87 -61
  121. data/web/locales/ur.yml +66 -64
  122. data/web/locales/vi.yml +69 -67
  123. data/web/locales/zh-CN.yml +107 -0
  124. data/web/locales/{zh-tw.yml → zh-TW.yml} +44 -9
  125. data/web/views/_footer.html.erb +32 -0
  126. data/web/views/_job_info.html.erb +115 -0
  127. data/web/views/_metrics_period_select.html.erb +15 -0
  128. data/web/views/_nav.html.erb +45 -0
  129. data/web/views/_paging.html.erb +26 -0
  130. data/web/views/_poll_link.html.erb +4 -0
  131. data/web/views/_summary.html.erb +40 -0
  132. data/web/views/busy.html.erb +151 -0
  133. data/web/views/dashboard.html.erb +104 -0
  134. data/web/views/dead.html.erb +38 -0
  135. data/web/views/filtering.html.erb +6 -0
  136. data/web/views/layout.html.erb +26 -0
  137. data/web/views/metrics.html.erb +85 -0
  138. data/web/views/metrics_for_job.html.erb +58 -0
  139. data/web/views/morgue.html.erb +69 -0
  140. data/web/views/profiles.html.erb +43 -0
  141. data/web/views/queue.html.erb +57 -0
  142. data/web/views/queues.html.erb +46 -0
  143. data/web/views/retries.html.erb +77 -0
  144. data/web/views/retry.html.erb +39 -0
  145. data/web/views/scheduled.html.erb +64 -0
  146. data/web/views/{scheduled_job_info.erb → scheduled_job_info.html.erb} +3 -3
  147. metadata +130 -61
  148. data/LICENSE +0 -9
  149. data/lib/generators/sidekiq/worker_generator.rb +0 -57
  150. data/lib/sidekiq/delay.rb +0 -41
  151. data/lib/sidekiq/exception_handler.rb +0 -27
  152. data/lib/sidekiq/extensions/action_mailer.rb +0 -48
  153. data/lib/sidekiq/extensions/active_record.rb +0 -43
  154. data/lib/sidekiq/extensions/class_methods.rb +0 -43
  155. data/lib/sidekiq/extensions/generic_proxy.rb +0 -33
  156. data/lib/sidekiq/util.rb +0 -95
  157. data/lib/sidekiq/web/csrf_protection.rb +0 -180
  158. data/lib/sidekiq/worker.rb +0 -244
  159. data/web/assets/stylesheets/application-dark.css +0 -147
  160. data/web/assets/stylesheets/application-rtl.css +0 -246
  161. data/web/assets/stylesheets/application.css +0 -1053
  162. data/web/assets/stylesheets/bootstrap-rtl.min.css +0 -9
  163. data/web/assets/stylesheets/bootstrap.css +0 -5
  164. data/web/locales/zh-cn.yml +0 -68
  165. data/web/views/_footer.erb +0 -20
  166. data/web/views/_job_info.erb +0 -89
  167. data/web/views/_nav.erb +0 -52
  168. data/web/views/_paging.erb +0 -23
  169. data/web/views/_poll_link.erb +0 -7
  170. data/web/views/_status.erb +0 -4
  171. data/web/views/_summary.erb +0 -40
  172. data/web/views/busy.erb +0 -132
  173. data/web/views/dashboard.erb +0 -83
  174. data/web/views/dead.erb +0 -34
  175. data/web/views/layout.erb +0 -42
  176. data/web/views/morgue.erb +0 -78
  177. data/web/views/queue.erb +0 -55
  178. data/web/views/queues.erb +0 -38
  179. data/web/views/retries.erb +0 -83
  180. data/web/views/retry.erb +0 -34
  181. data/web/views/scheduled.erb +0 -57
@@ -1,246 +0,0 @@
1
- .navbar-right {
2
- float: left !important;
3
- }
4
-
5
- footer .edits {
6
- margin-right: unset;
7
- margin-left: 40px;
8
- }
9
-
10
- .summary_bar .status {
11
- margin-left: unset;
12
- margin-right: 10px;
13
- }
14
- @media (max-width: 767px) and (min-width: 400px) {
15
- .summary_bar ul .desc {
16
- text-align: right;
17
- }
18
- .summary_bar ul .count {
19
- text-align: left;
20
- }
21
- }
22
- @media (max-width: 979px) and (min-width: 768px) {
23
- }
24
- .summary_bar ul .count {
25
- float: left;
26
- }
27
-
28
- form .btn {
29
- margin-right: unset;
30
- margin-left: 5px;
31
- }
32
-
33
- form .btn-group .btn {
34
- margin-right: unset;
35
- margin-left: 1px;
36
- }
37
-
38
- @media (max-width: 768px) {
39
- .navbar.navbar-fixed-top ul {
40
- margin-right: unset;
41
- margin-left: -15px!important;
42
- }
43
- }
44
-
45
- @media (width: 768px) {
46
- .navbar .poll-wrapper {
47
- margin: 4px 0 0 4px;
48
- }
49
-
50
- .navbar .dropdown-menu a {
51
- text-align: right;
52
- }
53
- }
54
-
55
- .navbar-footer .navbar ul.nav a.navbar-brand {
56
- padding: 0 0 0 15px;
57
- }
58
-
59
- .navbar-fixed-bottom li {
60
- margin-right: unset;
61
- margin-left: 20px;
62
- }
63
-
64
- .status-active {
65
- background-position: 100% 0;
66
- }
67
-
68
- .status-idle {
69
- background-position: 100% -54px;
70
- }
71
-
72
- .stat {
73
- float: right;
74
- margin-right: unset;
75
- margin-left: 20px;
76
- }
77
-
78
- .stat:last-child {
79
- margin-left: 0;
80
- }
81
-
82
- @media (max-width: 767px) {
83
- .stat {
84
- float: right;
85
- margin-right: unset;
86
- margin-left: 10px;
87
- text-align: right;
88
- }
89
- .stat h3{
90
- float: left;
91
- margin: 5px 5px 5px 10px;
92
- }
93
- .stat p{
94
- font-size: 1em;
95
- margin: 5px 10px 5px 5px;
96
- }
97
- }
98
-
99
- /* Dashboard
100
- ********************************** */
101
- div.dashboard h3 {
102
- float: right;
103
- }
104
-
105
- div.interval-slider {
106
- float: left;
107
- }
108
-
109
- #realtime-legend,
110
- #history-legend {
111
- text-align: right;
112
- float: left;
113
- }
114
- #realtime-legend .timestamp,
115
- #history-legend .timestamp {
116
- text-align: left;
117
- }
118
- #realtime-legend .line,
119
- #history-legend .line {
120
- margin: 0 20px 0 0;
121
- }
122
- #realtime-legend .swatch,
123
- #history-legend .swatch {
124
- margin: 0 0 0 8px;
125
- }
126
-
127
- /* Beacon
128
- ********************************** */
129
-
130
- .beacon .dot,
131
- .beacon .ring {
132
- right: 50%;
133
- }
134
-
135
- .beacon .dot {
136
- margin: -5px -5px 0 0;
137
- }
138
-
139
- .beacon .ring {
140
- margin: -14px -14px 0 0;
141
- }
142
-
143
- .history-heading {
144
- padding-right: unset;
145
- padding-left: 15px;
146
- }
147
-
148
- @media (max-width: 767px) {
149
- .navbar.navbar-fixed-top ul {
150
- margin-left: 0;
151
- }
152
-
153
- .navbar.navbar-fixed-top li {
154
- margin-left: 0;
155
- }
156
-
157
- .navbar.navbar-fixed-bottom ul {
158
- margin-left: 0;
159
- }
160
-
161
- .navbar.navbar-fixed-bottom li {
162
- margin-left: 0;
163
- }
164
- }
165
-
166
- @media (max-width: 500px) {
167
- .navbar-footer .navbar ul.nav a.navbar-brand {
168
- padding-right: unset;
169
- padding-left: 5px;
170
- }
171
- }
172
-
173
- /* Rickshaw */
174
-
175
- .rickshaw_graph .detail .x_label.left {
176
- right: 0
177
- }
178
- .rickshaw_graph .detail .x_label.right {
179
- left: 0
180
- }
181
- .rickshaw_graph .detail .item.left {
182
- right: 0
183
- }
184
- .rickshaw_graph .detail .item.right {
185
- left: 0
186
- }
187
- .rickshaw_graph .detail .item.left:after {
188
- left: 0;
189
- right: -5px;
190
- border-right-color: unset;
191
- border-left-color: rgba(0, 0, 0, .8);
192
- border-right-width: 0;
193
- border-left-width: unset;
194
- }
195
- .rickshaw_graph .detail .item.right:after {
196
- right: 0;
197
- left: -5px;
198
- border-left-color: unset;
199
- border-right-color: rgba(0, 0, 0, .8);
200
- border-left-width: 0;
201
- border-right-width: unset;
202
- }
203
- .rickshaw_graph .detail .dot {
204
- margin-right: -3px;
205
- margin-left: unset;
206
- }
207
- .rickshaw_graph .x_tick {
208
- border-left: unset;
209
- border-right: 1px dotted rgba(0, 0, 0, .2);
210
- }
211
- .rickshaw_graph .x_tick .title {
212
- margin-right: 3px;
213
- margin-left: unset;
214
- }
215
- .rickshaw_annotation_timeline .annotation {
216
- margin-right: -2px;
217
- margin-left: unset;
218
- }
219
- .rickshaw_graph .annotation_line {
220
- border-right: 2px solid rgba(0, 0, 0, .3);
221
- border-left: unset;
222
- }
223
- .rickshaw_annotation_timeline .annotation .content {
224
- left: unset;
225
- right: -11px;
226
- }
227
- .rickshaw_graph .x_tick.glow .title,
228
- .rickshaw_graph .y_ticks.glow text {
229
- text-shadow: 1px 1px 0 rgba(255, 255, 255, .1), -1px -1px 0 rgba(255, 255, 255, .1), -1px 1px 0 rgba(255, 255, 255, .1), 0 1px 0 rgba(255, 255, 255, .1), 0 -1px 0 rgba(255, 255, 255, .1), -1px 0 0 rgba(255, 255, 255, .1), 1px 0 0 rgba(255, 255, 255, .1), 1px -1px 0 rgba(255, 255, 255, .1)
230
- }
231
- .rickshaw_graph .x_tick.inverse .title,
232
- .rickshaw_graph .y_ticks.inverse text {
233
- text-shadow: 1px 1px 0 rgba(0, 0, 0, .8), -1px -1px 0 rgba(0, 0, 0, .8), -1px 1px 0 rgba(0, 0, 0, .8), 0 1px 0 rgba(0, 0, 0, .8), 0 -1px 0 rgba(0, 0, 0, .8), -1px 0 0 rgba(0, 0, 0, .8), 1px 0 0 rgba(0, 0, 0, .8), 1px -1px 0 rgba(0, 0, 0, .8)
234
- }
235
- .rickshaw_legend .line {
236
- padding-left: 15px;
237
- padding-right: unset;
238
- }
239
- .rickshaw_legend .line .swatch {
240
- margin-left: 3px;
241
- margin-right: unset;
242
- }
243
- .rickshaw_legend .action {
244
- margin-left: .2em;
245
- margin-right: unset;
246
- }