sidekiq 6.5.10 → 8.1.7

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 (177) hide show
  1. checksums.yaml +4 -4
  2. data/Changes.md +568 -18
  3. data/README.md +66 -38
  4. data/bin/kiq +17 -0
  5. data/bin/lint-herb +13 -0
  6. data/bin/multi_queue_bench +271 -0
  7. data/bin/sidekiq +3 -8
  8. data/bin/sidekiqload +215 -118
  9. data/bin/sidekiqmon +3 -0
  10. data/bin/webload +69 -0
  11. data/lib/active_job/queue_adapters/sidekiq_adapter.rb +124 -0
  12. data/lib/generators/sidekiq/job_generator.rb +17 -3
  13. data/lib/generators/sidekiq/templates/job.rb.erb +1 -1
  14. data/lib/sidekiq/api.rb +526 -218
  15. data/lib/sidekiq/capsule.rb +135 -0
  16. data/lib/sidekiq/cli.rb +88 -96
  17. data/lib/sidekiq/client.rb +114 -47
  18. data/lib/sidekiq/component.rb +71 -4
  19. data/lib/sidekiq/config.rb +316 -0
  20. data/lib/sidekiq/deploy.rb +64 -0
  21. data/lib/sidekiq/embedded.rb +64 -0
  22. data/lib/sidekiq/fetch.rb +12 -14
  23. data/lib/sidekiq/iterable_job.rb +56 -0
  24. data/lib/sidekiq/job/interrupt_handler.rb +24 -0
  25. data/lib/sidekiq/job/iterable/active_record_enumerator.rb +53 -0
  26. data/lib/sidekiq/job/iterable/csv_enumerator.rb +47 -0
  27. data/lib/sidekiq/job/iterable/enumerators.rb +135 -0
  28. data/lib/sidekiq/job/iterable.rb +322 -0
  29. data/lib/sidekiq/job.rb +397 -10
  30. data/lib/sidekiq/job_logger.rb +14 -11
  31. data/lib/sidekiq/job_retry.rb +78 -28
  32. data/lib/sidekiq/job_util.rb +58 -16
  33. data/lib/sidekiq/launcher.rb +86 -70
  34. data/lib/sidekiq/loader.rb +57 -0
  35. data/lib/sidekiq/logger.rb +25 -94
  36. data/lib/sidekiq/manager.rb +11 -13
  37. data/lib/sidekiq/metrics/query.rb +84 -48
  38. data/lib/sidekiq/metrics/shared.rb +29 -14
  39. data/lib/sidekiq/metrics/tracking.rb +49 -30
  40. data/lib/sidekiq/middleware/chain.rb +19 -18
  41. data/lib/sidekiq/middleware/current_attributes.rb +78 -21
  42. data/lib/sidekiq/middleware/i18n.rb +2 -0
  43. data/lib/sidekiq/middleware/modules.rb +2 -0
  44. data/lib/sidekiq/monitor.rb +15 -5
  45. data/lib/sidekiq/paginator.rb +26 -4
  46. data/lib/sidekiq/processor.rb +78 -65
  47. data/lib/sidekiq/profiler.rb +73 -0
  48. data/lib/sidekiq/rails.rb +45 -60
  49. data/lib/sidekiq/redis_client_adapter.rb +35 -72
  50. data/lib/sidekiq/redis_connection.rb +54 -114
  51. data/lib/sidekiq/ring_buffer.rb +3 -0
  52. data/lib/sidekiq/scheduled.rb +28 -30
  53. data/lib/sidekiq/systemd.rb +2 -0
  54. data/lib/sidekiq/test_api.rb +331 -0
  55. data/lib/sidekiq/testing/inline.rb +2 -30
  56. data/lib/sidekiq/testing.rb +2 -342
  57. data/lib/sidekiq/transaction_aware_client.rb +23 -9
  58. data/lib/sidekiq/tui/controls.rb +53 -0
  59. data/lib/sidekiq/tui/filtering.rb +53 -0
  60. data/lib/sidekiq/tui/tabs/base_tab.rb +230 -0
  61. data/lib/sidekiq/tui/tabs/busy.rb +104 -0
  62. data/lib/sidekiq/tui/tabs/dead.rb +14 -0
  63. data/lib/sidekiq/tui/tabs/home.rb +115 -0
  64. data/lib/sidekiq/tui/tabs/metrics.rb +114 -0
  65. data/lib/sidekiq/tui/tabs/queues.rb +83 -0
  66. data/lib/sidekiq/tui/tabs/retries.rb +14 -0
  67. data/lib/sidekiq/tui/tabs/scheduled.rb +14 -0
  68. data/lib/sidekiq/tui/tabs/set_tab.rb +91 -0
  69. data/lib/sidekiq/tui/tabs.rb +15 -0
  70. data/lib/sidekiq/tui.rb +390 -0
  71. data/lib/sidekiq/version.rb +6 -1
  72. data/lib/sidekiq/web/action.rb +149 -64
  73. data/lib/sidekiq/web/application.rb +379 -281
  74. data/lib/sidekiq/web/config.rb +117 -0
  75. data/lib/sidekiq/web/helpers.rb +190 -71
  76. data/lib/sidekiq/web/router.rb +62 -75
  77. data/lib/sidekiq/web.rb +68 -101
  78. data/lib/sidekiq/worker_compatibility_alias.rb +13 -0
  79. data/lib/sidekiq.rb +85 -269
  80. data/sidekiq.gemspec +15 -11
  81. data/web/assets/images/logo.png +0 -0
  82. data/web/assets/images/status.png +0 -0
  83. data/web/assets/javascripts/application.js +84 -24
  84. data/web/assets/javascripts/base-charts.js +120 -0
  85. data/web/assets/javascripts/chartjs-adapter-date-fns.min.js +7 -0
  86. data/web/assets/javascripts/dashboard-charts.js +194 -0
  87. data/web/assets/javascripts/dashboard.js +18 -234
  88. data/web/assets/javascripts/metrics.js +138 -120
  89. data/web/assets/stylesheets/style.css +776 -0
  90. data/web/locales/ar.yml +72 -70
  91. data/web/locales/cs.yml +64 -62
  92. data/web/locales/da.yml +62 -53
  93. data/web/locales/de.yml +67 -65
  94. data/web/locales/el.yml +4 -7
  95. data/web/locales/en.yml +89 -71
  96. data/web/locales/es.yml +91 -68
  97. data/web/locales/fa.yml +67 -65
  98. data/web/locales/fr.yml +82 -67
  99. data/web/locales/gd.yml +110 -0
  100. data/web/locales/he.yml +67 -64
  101. data/web/locales/hi.yml +95 -59
  102. data/web/locales/it.yml +94 -54
  103. data/web/locales/ja.yml +69 -70
  104. data/web/locales/ko.yml +54 -52
  105. data/web/locales/lt.yml +68 -66
  106. data/web/locales/nb.yml +63 -61
  107. data/web/locales/nl.yml +54 -52
  108. data/web/locales/pl.yml +47 -45
  109. data/web/locales/{pt-br.yml → pt-BR.yml} +81 -70
  110. data/web/locales/pt.yml +53 -51
  111. data/web/locales/ru.yml +69 -66
  112. data/web/locales/sv.yml +55 -53
  113. data/web/locales/ta.yml +100 -64
  114. data/web/locales/tr.yml +102 -0
  115. data/web/locales/uk.yml +87 -61
  116. data/web/locales/ur.yml +66 -64
  117. data/web/locales/vi.yml +69 -67
  118. data/web/locales/zh-CN.yml +107 -0
  119. data/web/locales/{zh-tw.yml → zh-TW.yml} +13 -3
  120. data/web/views/_footer.html.erb +32 -0
  121. data/web/views/_job_info.html.erb +115 -0
  122. data/web/views/_metrics_period_select.html.erb +15 -0
  123. data/web/views/_nav.html.erb +45 -0
  124. data/web/views/_paging.html.erb +26 -0
  125. data/web/views/_poll_link.html.erb +4 -0
  126. data/web/views/_summary.html.erb +40 -0
  127. data/web/views/busy.html.erb +155 -0
  128. data/web/views/dashboard.html.erb +104 -0
  129. data/web/views/dead.html.erb +38 -0
  130. data/web/views/filtering.html.erb +6 -0
  131. data/web/views/layout.html.erb +26 -0
  132. data/web/views/metrics.html.erb +85 -0
  133. data/web/views/metrics_for_job.html.erb +58 -0
  134. data/web/views/morgue.html.erb +69 -0
  135. data/web/views/profiles.html.erb +43 -0
  136. data/web/views/queue.html.erb +57 -0
  137. data/web/views/queues.html.erb +46 -0
  138. data/web/views/retries.html.erb +77 -0
  139. data/web/views/retry.html.erb +39 -0
  140. data/web/views/scheduled.html.erb +64 -0
  141. data/web/views/{scheduled_job_info.erb → scheduled_job_info.html.erb} +3 -3
  142. metadata +113 -70
  143. data/lib/sidekiq/delay.rb +0 -43
  144. data/lib/sidekiq/extensions/action_mailer.rb +0 -48
  145. data/lib/sidekiq/extensions/active_record.rb +0 -43
  146. data/lib/sidekiq/extensions/class_methods.rb +0 -43
  147. data/lib/sidekiq/extensions/generic_proxy.rb +0 -33
  148. data/lib/sidekiq/metrics/deploy.rb +0 -47
  149. data/lib/sidekiq/web/csrf_protection.rb +0 -180
  150. data/lib/sidekiq/worker.rb +0 -370
  151. data/web/assets/javascripts/graph.js +0 -16
  152. data/web/assets/stylesheets/application-dark.css +0 -143
  153. data/web/assets/stylesheets/application-rtl.css +0 -242
  154. data/web/assets/stylesheets/application.css +0 -999
  155. data/web/assets/stylesheets/bootstrap-rtl.min.css +0 -9
  156. data/web/assets/stylesheets/bootstrap.css +0 -5
  157. data/web/locales/zh-cn.yml +0 -93
  158. data/web/views/_footer.erb +0 -20
  159. data/web/views/_job_info.erb +0 -89
  160. data/web/views/_nav.erb +0 -52
  161. data/web/views/_paging.erb +0 -23
  162. data/web/views/_poll_link.erb +0 -4
  163. data/web/views/_status.erb +0 -4
  164. data/web/views/_summary.erb +0 -40
  165. data/web/views/busy.erb +0 -137
  166. data/web/views/dashboard.erb +0 -84
  167. data/web/views/dead.erb +0 -34
  168. data/web/views/layout.erb +0 -42
  169. data/web/views/metrics.erb +0 -69
  170. data/web/views/metrics_for_job.erb +0 -87
  171. data/web/views/morgue.erb +0 -78
  172. data/web/views/queue.erb +0 -59
  173. data/web/views/queues.erb +0 -38
  174. data/web/views/retries.erb +0 -83
  175. data/web/views/retry.erb +0 -34
  176. data/web/views/scheduled.erb +0 -57
  177. /data/{LICENSE → LICENSE.txt} +0 -0
@@ -1,143 +0,0 @@
1
- html, body {
2
- background-color: #171717 !important;
3
- color: #DEDEDE;
4
- }
5
-
6
- a,
7
- .title,
8
- .summary_bar ul .count,
9
- span.current-interval,
10
- .navbar .navbar-brand {
11
- color: #d04;
12
- }
13
-
14
- .history-graph.active,
15
- .beacon .dot {
16
- background-color: #d04;
17
- }
18
-
19
- .navbar .navbar-brand:hover {
20
- color: #ddd;
21
- }
22
-
23
- .navbar .navbar-brand .status {
24
- color: #ddd;
25
- }
26
-
27
- .navbar-default .navbar-nav > li > a {
28
- color: #ddd;
29
- }
30
-
31
- .navbar-inverse {
32
- background-color: #222;
33
- border-color: #444;
34
- }
35
-
36
- table {
37
- background-color: #1D1D1D;
38
- }
39
-
40
- .table-striped > tbody > tr:nth-of-type(odd) {
41
- background-color: #2E2E2E;
42
- }
43
-
44
- .table-bordered,
45
- .table-bordered > tbody > tr > td,
46
- .table-bordered > tbody > tr > th,
47
- .table-bordered > tfoot > tr > td,
48
- .table-bordered > tfoot > tr > th,
49
- .table-bordered > thead > tr > td,
50
- .table-bordered > thead > tr > th {
51
- border: 1px solid #444;
52
- }
53
-
54
- .table-hover > tbody > tr:hover {
55
- background-color: #444;
56
- }
57
-
58
- .alert {
59
- border: none;
60
- color: #ddd;
61
- }
62
-
63
- .alert-success {
64
- background-color: #484;
65
- }
66
-
67
- .alert-danger {
68
- background-color: #980035;
69
- }
70
-
71
- .alert-info {
72
- background-color: #31708f;
73
- }
74
-
75
- a:link, a:active, a:hover, a:visited {
76
- color: #ddd;
77
- }
78
-
79
- input {
80
- background-color: #444;
81
- color: #ccc;
82
- padding: 3px;
83
- }
84
-
85
- .summary_bar .summary {
86
- background-color: #232323;
87
- border: 1px solid #444;
88
- }
89
-
90
- .navbar-default {
91
- background-color: #0F0F0F;
92
- border-color: #444;
93
- }
94
-
95
- .navbar-default .navbar-nav > .active > a,
96
- .navbar-default .navbar-nav > .active > a:focus,
97
- .navbar-default .navbar-nav > .active > a:hover {
98
- color: #ddd;
99
- background-color: #333;
100
- }
101
-
102
- .navbar-default .navbar-nav > li > a:hover {
103
- color: #ddd;
104
- }
105
-
106
- .pagination > li > a,
107
- .pagination > li > a:hover,
108
- .pagination > li > span {
109
- color: #ddd;
110
- background-color: #333;
111
- border-color: #444;
112
- }
113
- .pagination > .disabled > a,
114
- .pagination > .disabled > a:focus,
115
- .pagination > .disabled > a:hover,
116
- .pagination > .disabled > span,
117
- .pagination > .disabled > span:focus,
118
- .pagination > .disabled > span:hover {
119
- color: #ddd;
120
- background-color: #333;
121
- border-color: #444;
122
- }
123
-
124
- .stat {
125
- border: 1px solid #888;
126
- }
127
-
128
- .rickshaw_graph .detail {
129
- background: #888;
130
- }
131
- .rickshaw_graph .x_tick {
132
- border-color: #888;
133
- }
134
-
135
- .rickshaw_graph .y_ticks.glow text {
136
- fill: #ddd;
137
- color: #ddd;
138
- }
139
-
140
- .info-circle {
141
- color: #222;
142
- background-color: #888;
143
- }
@@ -1,242 +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
-
51
- .navbar-footer .navbar ul.nav a.navbar-brand {
52
- padding: 0 0 0 15px;
53
- }
54
-
55
- .navbar-fixed-bottom li {
56
- margin-right: unset;
57
- margin-left: 20px;
58
- }
59
-
60
- .status-active {
61
- background-position: 100% 0;
62
- }
63
-
64
- .status-idle {
65
- background-position: 100% -54px;
66
- }
67
-
68
- .stat {
69
- float: right;
70
- margin-right: unset;
71
- margin-left: 20px;
72
- }
73
-
74
- .stat:last-child {
75
- margin-left: 0;
76
- }
77
-
78
- @media (max-width: 767px) {
79
- .stat {
80
- float: right;
81
- margin-right: unset;
82
- margin-left: 10px;
83
- text-align: right;
84
- }
85
- .stat h3{
86
- float: left;
87
- margin: 5px 5px 5px 10px;
88
- }
89
- .stat p{
90
- font-size: 1em;
91
- margin: 5px 10px 5px 5px;
92
- }
93
- }
94
-
95
- /* Dashboard
96
- ********************************** */
97
- div.dashboard h3 {
98
- float: right;
99
- }
100
-
101
- div.interval-slider {
102
- float: left;
103
- }
104
-
105
- #realtime-legend,
106
- #history-legend {
107
- text-align: right;
108
- float: left;
109
- }
110
- #realtime-legend .timestamp,
111
- #history-legend .timestamp {
112
- text-align: left;
113
- }
114
- #realtime-legend .line,
115
- #history-legend .line {
116
- margin: 0 20px 0 0;
117
- }
118
- #realtime-legend .swatch,
119
- #history-legend .swatch {
120
- margin: 0 0 0 8px;
121
- }
122
-
123
- /* Beacon
124
- ********************************** */
125
-
126
- .beacon .dot,
127
- .beacon .ring {
128
- right: 50%;
129
- }
130
-
131
- .beacon .dot {
132
- margin: -5px -5px 0 0;
133
- }
134
-
135
- .beacon .ring {
136
- margin: -14px -14px 0 0;
137
- }
138
-
139
- .history-heading {
140
- padding-right: unset;
141
- padding-left: 15px;
142
- }
143
-
144
- @media (max-width: 767px) {
145
- .navbar.navbar-fixed-top ul {
146
- margin-left: 0;
147
- }
148
-
149
- .navbar.navbar-fixed-top li {
150
- margin-left: 0;
151
- }
152
-
153
- .navbar.navbar-fixed-bottom ul {
154
- margin-left: 0;
155
- }
156
-
157
- .navbar.navbar-fixed-bottom li {
158
- margin-left: 0;
159
- }
160
- }
161
-
162
- @media (max-width: 500px) {
163
- .navbar-footer .navbar ul.nav a.navbar-brand {
164
- padding-right: unset;
165
- padding-left: 5px;
166
- }
167
- }
168
-
169
- /* Rickshaw */
170
-
171
- .rickshaw_graph .detail .x_label.left {
172
- right: 0
173
- }
174
- .rickshaw_graph .detail .x_label.right {
175
- left: 0
176
- }
177
- .rickshaw_graph .detail .item.left {
178
- right: 0
179
- }
180
- .rickshaw_graph .detail .item.right {
181
- left: 0
182
- }
183
- .rickshaw_graph .detail .item.left:after {
184
- left: 0;
185
- right: -5px;
186
- border-right-color: unset;
187
- border-left-color: rgba(0, 0, 0, .8);
188
- border-right-width: 0;
189
- border-left-width: unset;
190
- }
191
- .rickshaw_graph .detail .item.right:after {
192
- right: 0;
193
- left: -5px;
194
- border-left-color: unset;
195
- border-right-color: rgba(0, 0, 0, .8);
196
- border-left-width: 0;
197
- border-right-width: unset;
198
- }
199
- .rickshaw_graph .detail .dot {
200
- margin-right: -3px;
201
- margin-left: unset;
202
- }
203
- .rickshaw_graph .x_tick {
204
- border-left: unset;
205
- border-right: 1px dotted rgba(0, 0, 0, .2);
206
- }
207
- .rickshaw_graph .x_tick .title {
208
- margin-right: 3px;
209
- margin-left: unset;
210
- }
211
- .rickshaw_annotation_timeline .annotation {
212
- margin-right: -2px;
213
- margin-left: unset;
214
- }
215
- .rickshaw_graph .annotation_line {
216
- border-right: 2px solid rgba(0, 0, 0, .3);
217
- border-left: unset;
218
- }
219
- .rickshaw_annotation_timeline .annotation .content {
220
- left: unset;
221
- right: -11px;
222
- }
223
- .rickshaw_graph .x_tick.glow .title,
224
- .rickshaw_graph .y_ticks.glow text {
225
- 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)
226
- }
227
- .rickshaw_graph .x_tick.inverse .title,
228
- .rickshaw_graph .y_ticks.inverse text {
229
- 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)
230
- }
231
- .rickshaw_legend .line {
232
- padding-left: 15px;
233
- padding-right: unset;
234
- }
235
- .rickshaw_legend .line .swatch {
236
- margin-left: 3px;
237
- margin-right: unset;
238
- }
239
- .rickshaw_legend .action {
240
- margin-left: .2em;
241
- margin-right: unset;
242
- }