sidekiq 6.0.1 → 6.0.6
Sign up to get free protection for your applications and to get access to all the features.
Potentially problematic release.
This version of sidekiq might be problematic. Click here for more details.
- checksums.yaml +4 -4
- data/.circleci/config.yml +0 -22
- data/6.0-Upgrade.md +1 -1
- data/Changes.md +47 -1
- data/Ent-Changes.md +4 -4
- data/Gemfile +1 -1
- data/Gemfile.lock +106 -94
- data/Pro-Changes.md +7 -1
- data/README.md +2 -1
- data/lib/generators/sidekiq/worker_generator.rb +1 -1
- data/lib/sidekiq.rb +9 -5
- data/lib/sidekiq/api.rb +55 -56
- data/lib/sidekiq/cli.rb +16 -3
- data/lib/sidekiq/client.rb +15 -5
- data/lib/sidekiq/job_logger.rb +1 -1
- data/lib/sidekiq/job_retry.rb +7 -5
- data/lib/sidekiq/launcher.rb +22 -4
- data/lib/sidekiq/logger.rb +9 -9
- data/lib/sidekiq/monitor.rb +2 -17
- data/lib/sidekiq/processor.rb +13 -35
- data/lib/sidekiq/redis_connection.rb +3 -0
- data/lib/sidekiq/sd_notify.rb +149 -0
- data/lib/sidekiq/systemd.rb +38 -0
- data/lib/sidekiq/util.rb +0 -2
- data/lib/sidekiq/version.rb +1 -1
- data/lib/sidekiq/web.rb +1 -1
- data/lib/sidekiq/web/application.rb +15 -10
- data/lib/sidekiq/web/helpers.rb +1 -7
- data/lib/sidekiq/web/router.rb +1 -3
- data/lib/sidekiq/worker.rb +2 -2
- data/sidekiq.gemspec +1 -1
- data/web/assets/javascripts/application.js +22 -19
- data/web/assets/stylesheets/application-dark.css +121 -124
- data/web/locales/de.yml +14 -2
- data/web/locales/en.yml +2 -0
- data/web/locales/ja.yml +2 -0
- data/web/locales/lt.yml +83 -0
- data/web/views/layout.erb +1 -1
- data/web/views/queues.erb +8 -0
- metadata +10 -8
data/lib/sidekiq/util.rb
CHANGED
data/lib/sidekiq/version.rb
CHANGED
data/lib/sidekiq/web.rb
CHANGED
@@ -5,7 +5,6 @@ module Sidekiq
|
|
5
5
|
extend WebRouter
|
6
6
|
|
7
7
|
CONTENT_LENGTH = "Content-Length"
|
8
|
-
CONTENT_TYPE = "Content-Type"
|
9
8
|
REDIS_KEYS = %w[redis_version uptime_in_days connected_clients used_memory_human used_memory_peak_human]
|
10
9
|
CSP_HEADER = [
|
11
10
|
"default-src 'self' https: http:",
|
@@ -20,7 +19,7 @@ module Sidekiq
|
|
20
19
|
"script-src 'self' https: http: 'unsafe-inline'",
|
21
20
|
"style-src 'self' https: http: 'unsafe-inline'",
|
22
21
|
"worker-src 'self'",
|
23
|
-
"base-uri 'self'"
|
22
|
+
"base-uri 'self'"
|
24
23
|
].join("; ").freeze
|
25
24
|
|
26
25
|
def initialize(klass)
|
@@ -91,7 +90,15 @@ module Sidekiq
|
|
91
90
|
end
|
92
91
|
|
93
92
|
post "/queues/:name" do
|
94
|
-
Sidekiq::Queue.new(route_params[:name])
|
93
|
+
queue = Sidekiq::Queue.new(route_params[:name])
|
94
|
+
|
95
|
+
if Sidekiq.pro? && params["pause"]
|
96
|
+
queue.pause!
|
97
|
+
elsif Sidekiq.pro? && params["unpause"]
|
98
|
+
queue.unpause!
|
99
|
+
else
|
100
|
+
queue.clear
|
101
|
+
end
|
95
102
|
|
96
103
|
redirect "#{root_path}queues"
|
97
104
|
end
|
@@ -268,7 +275,7 @@ module Sidekiq
|
|
268
275
|
scheduled: sidekiq_stats.scheduled_size,
|
269
276
|
retries: sidekiq_stats.retry_size,
|
270
277
|
dead: sidekiq_stats.dead_size,
|
271
|
-
default_latency: sidekiq_stats.default_queue_latency
|
278
|
+
default_latency: sidekiq_stats.default_queue_latency
|
272
279
|
},
|
273
280
|
redis: redis_stats,
|
274
281
|
server_utc_time: server_utc_time
|
@@ -293,22 +300,20 @@ module Sidekiq
|
|
293
300
|
|
294
301
|
resp = case resp
|
295
302
|
when Array
|
303
|
+
# redirects go here
|
296
304
|
resp
|
297
305
|
else
|
306
|
+
# rendered content goes here
|
298
307
|
headers = {
|
299
308
|
"Content-Type" => "text/html",
|
300
309
|
"Cache-Control" => "no-cache",
|
301
310
|
"Content-Language" => action.locale,
|
302
|
-
"Content-Security-Policy" => CSP_HEADER
|
311
|
+
"Content-Security-Policy" => CSP_HEADER
|
303
312
|
}
|
304
|
-
|
313
|
+
# we'll let Rack calculate Content-Length for us.
|
305
314
|
[200, headers, [resp]]
|
306
315
|
end
|
307
316
|
|
308
|
-
resp[1] = resp[1].dup
|
309
|
-
|
310
|
-
resp[1][CONTENT_LENGTH] = resp[2].inject(0) { |l, p| l + p.bytesize }.to_s
|
311
|
-
|
312
317
|
resp
|
313
318
|
end
|
314
319
|
|
data/lib/sidekiq/web/helpers.rb
CHANGED
@@ -156,12 +156,6 @@ module Sidekiq
|
|
156
156
|
@stats ||= Sidekiq::Stats.new
|
157
157
|
end
|
158
158
|
|
159
|
-
def retries_with_score(score)
|
160
|
-
Sidekiq.redis { |conn|
|
161
|
-
conn.zrangebyscore("retry", score, score)
|
162
|
-
}.map { |msg| Sidekiq.load_json(msg) }
|
163
|
-
end
|
164
|
-
|
165
159
|
def redis_connection
|
166
160
|
Sidekiq.redis do |conn|
|
167
161
|
c = conn.connection
|
@@ -301,7 +295,7 @@ module Sidekiq
|
|
301
295
|
end
|
302
296
|
|
303
297
|
def environment_title_prefix
|
304
|
-
environment = Sidekiq.options[:environment] || ENV["RAILS_ENV"] || ENV["RACK_ENV"] || "development"
|
298
|
+
environment = Sidekiq.options[:environment] || ENV["APP_ENV"] || ENV["RAILS_ENV"] || ENV["RACK_ENV"] || "development"
|
305
299
|
|
306
300
|
"[#{environment.upcase}] " unless environment == "production"
|
307
301
|
end
|
data/lib/sidekiq/web/router.rb
CHANGED
data/lib/sidekiq/worker.rb
CHANGED
@@ -48,8 +48,8 @@ module Sidekiq
|
|
48
48
|
# In practice, any option is allowed. This is the main mechanism to configure the
|
49
49
|
# options for a specific job.
|
50
50
|
def sidekiq_options(opts = {})
|
51
|
-
opts =
|
52
|
-
self.sidekiq_options_hash = get_sidekiq_options.merge(
|
51
|
+
opts = opts.transform_keys(&:to_s) # stringify
|
52
|
+
self.sidekiq_options_hash = get_sidekiq_options.merge(opts)
|
53
53
|
end
|
54
54
|
|
55
55
|
def sidekiq_retry_in(&block)
|
data/sidekiq.gemspec
CHANGED
@@ -16,6 +16,6 @@ Gem::Specification.new do |gem|
|
|
16
16
|
|
17
17
|
gem.add_dependency "redis", ">= 4.1.0"
|
18
18
|
gem.add_dependency "connection_pool", ">= 2.2.2"
|
19
|
-
gem.add_dependency "rack", "
|
19
|
+
gem.add_dependency "rack", "~> 2.0"
|
20
20
|
gem.add_dependency "rack-protection", ">= 2.0.0"
|
21
21
|
end
|
@@ -19,7 +19,8 @@ Sidekiq = {};
|
|
19
19
|
$(function() {
|
20
20
|
var pollpath = $('body').data('poll-path');
|
21
21
|
if (pollpath != "") {
|
22
|
-
|
22
|
+
var ti = parseInt(localStorage.timeInterval) || 2000;
|
23
|
+
setTimeout(function(){updatePage(pollpath)}, ti);
|
23
24
|
}
|
24
25
|
|
25
26
|
$(document).on('click', '.check_all', function() {
|
@@ -55,26 +56,28 @@ function updateFuzzyTimes(locale) {
|
|
55
56
|
}
|
56
57
|
|
57
58
|
function updatePage(url) {
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
59
|
+
$.ajax({
|
60
|
+
url: url,
|
61
|
+
dataType: 'html'
|
62
|
+
}).done(function(data) {
|
63
|
+
$data = $(data)
|
64
|
+
|
65
|
+
var $page = $data.filter('#page')
|
66
|
+
$('#page').replaceWith($page)
|
67
|
+
|
68
|
+
var $header_status = $data.find('.status')
|
69
|
+
$('.status').replaceWith($header_status)
|
70
|
+
|
71
|
+
updateFuzzyTimes($('body').data('locale'));
|
72
|
+
|
73
|
+
var ti = parseInt(localStorage.timeInterval) || 2000;
|
74
|
+
setTimeout(function(){updatePage(url)}, ti)
|
75
|
+
}).fail(function() {
|
76
|
+
var ti = parseInt(localStorage.timeInterval) || 2000;
|
77
|
+
setTimeout(function(){updatePage(url)}, ti)
|
78
|
+
})
|
74
79
|
}
|
75
80
|
|
76
|
-
|
77
|
-
|
78
81
|
$(function() {
|
79
82
|
'use strict';
|
80
83
|
|
@@ -1,125 +1,122 @@
|
|
1
|
-
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
60
|
-
|
61
|
-
|
62
|
-
|
63
|
-
|
64
|
-
|
65
|
-
|
66
|
-
|
67
|
-
|
68
|
-
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
74
|
-
|
75
|
-
|
76
|
-
|
77
|
-
|
78
|
-
|
79
|
-
|
80
|
-
|
81
|
-
|
82
|
-
|
83
|
-
|
84
|
-
|
85
|
-
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
|
90
|
-
|
91
|
-
|
92
|
-
|
93
|
-
|
94
|
-
|
95
|
-
|
96
|
-
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
102
|
-
|
103
|
-
|
104
|
-
|
105
|
-
|
106
|
-
|
107
|
-
|
108
|
-
|
109
|
-
|
110
|
-
|
111
|
-
|
112
|
-
|
113
|
-
|
114
|
-
|
115
|
-
|
116
|
-
|
117
|
-
|
118
|
-
|
119
|
-
|
120
|
-
|
121
|
-
|
122
|
-
fill: #ccc;
|
123
|
-
color: #ccc;
|
124
|
-
}
|
1
|
+
body {
|
2
|
+
background-color: #000;
|
3
|
+
color: #ccc;
|
4
|
+
}
|
5
|
+
|
6
|
+
a,
|
7
|
+
.title,
|
8
|
+
.summary_bar ul .count,
|
9
|
+
.navbar .navbar-brand {
|
10
|
+
color: #af0014;
|
11
|
+
}
|
12
|
+
|
13
|
+
.navbar .navbar-brand:hover {
|
14
|
+
color: #ccc;
|
15
|
+
}
|
16
|
+
|
17
|
+
.navbar .navbar-brand .status {
|
18
|
+
color: #ccc;
|
19
|
+
}
|
20
|
+
|
21
|
+
.navbar-inverse {
|
22
|
+
background-color: #000;
|
23
|
+
border-color: #333;
|
24
|
+
}
|
25
|
+
|
26
|
+
table.table-white {
|
27
|
+
background-color: #111;
|
28
|
+
}
|
29
|
+
|
30
|
+
.table-striped > tbody > tr:nth-of-type(odd) {
|
31
|
+
background-color: #222;
|
32
|
+
}
|
33
|
+
|
34
|
+
.table-bordered,
|
35
|
+
.table-bordered > tbody > tr > td,
|
36
|
+
.table-bordered > tbody > tr > th,
|
37
|
+
.table-bordered > tfoot > tr > td,
|
38
|
+
.table-bordered > tfoot > tr > th,
|
39
|
+
.table-bordered > thead > tr > td,
|
40
|
+
.table-bordered > thead > tr > th {
|
41
|
+
border: 1px solid #333;
|
42
|
+
}
|
43
|
+
|
44
|
+
.table-hover > tbody > tr:hover {
|
45
|
+
background-color: #333;
|
46
|
+
}
|
47
|
+
|
48
|
+
.alert {
|
49
|
+
border: none;
|
50
|
+
color: #ccc;
|
51
|
+
}
|
52
|
+
|
53
|
+
.alert-success {
|
54
|
+
background-color: #000;
|
55
|
+
}
|
56
|
+
|
57
|
+
a:link,
|
58
|
+
a:active,
|
59
|
+
a:hover,
|
60
|
+
a:visited {
|
61
|
+
color: #63798c;
|
62
|
+
}
|
63
|
+
|
64
|
+
a.btn {
|
65
|
+
color: #000;
|
66
|
+
}
|
67
|
+
|
68
|
+
.summary_bar .summary {
|
69
|
+
background-color: #000;
|
70
|
+
border: 1px solid #333;
|
71
|
+
}
|
72
|
+
|
73
|
+
.navbar-default {
|
74
|
+
background-color: #000;
|
75
|
+
border-color: #3d3d3d;
|
76
|
+
}
|
77
|
+
|
78
|
+
.navbar-default .navbar-nav > .active > a,
|
79
|
+
.navbar-default .navbar-nav > .active > a:focus,
|
80
|
+
.navbar-default .navbar-nav > .active > a:hover {
|
81
|
+
color: #ccc;
|
82
|
+
background-color: #282828;
|
83
|
+
}
|
84
|
+
|
85
|
+
.navbar-default .navbar-nav > li > a:hover {
|
86
|
+
color: #ccc;
|
87
|
+
}
|
88
|
+
|
89
|
+
.pagination > li > a,
|
90
|
+
.pagination > li > a:hover,
|
91
|
+
.pagination > li > span {
|
92
|
+
color: #ccc;
|
93
|
+
background-color: #282828;
|
94
|
+
border-color: #353535;
|
95
|
+
}
|
96
|
+
.pagination > .disabled > a,
|
97
|
+
.pagination > .disabled > a:focus,
|
98
|
+
.pagination > .disabled > a:hover,
|
99
|
+
.pagination > .disabled > span,
|
100
|
+
.pagination > .disabled > span:focus,
|
101
|
+
.pagination > .disabled > span:hover {
|
102
|
+
color: #a5a5a5;
|
103
|
+
background-color: #282828;
|
104
|
+
border-color: #353535;
|
105
|
+
}
|
106
|
+
|
107
|
+
.stat {
|
108
|
+
border: 1px solid rgba(255, 255, 255, 0.1);
|
109
|
+
}
|
110
|
+
|
111
|
+
#live-poll {
|
112
|
+
color: #ccc;
|
113
|
+
}
|
114
|
+
|
115
|
+
.btn-warn {
|
116
|
+
color: #333;
|
117
|
+
}
|
118
|
+
|
119
|
+
.rickshaw_graph .y_ticks.glow text {
|
120
|
+
fill: #ccc;
|
121
|
+
color: #ccc;
|
125
122
|
}
|