sidekiq 7.0.2 → 7.0.3
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/Changes.md +9 -0
- data/lib/sidekiq/api.rb +30 -3
- data/lib/sidekiq/capsule.rb +16 -0
- data/lib/sidekiq/cli.rb +2 -1
- data/lib/sidekiq/config.rb +1 -1
- data/lib/sidekiq/fetch.rb +2 -4
- data/lib/sidekiq/job_retry.rb +1 -1
- data/lib/sidekiq/launcher.rb +9 -6
- data/lib/sidekiq/middleware/current_attributes.rb +5 -7
- data/lib/sidekiq/rails.rb +2 -1
- data/lib/sidekiq/version.rb +1 -1
- data/lib/sidekiq/web/application.rb +6 -3
- data/lib/sidekiq/web/helpers.rb +8 -0
- data/sidekiq.gemspec +3 -15
- data/web/views/_job_info.erb +2 -2
- data/web/views/_paging.erb +2 -0
- data/web/views/busy.erb +23 -25
- data/web/views/metrics_for_job.erb +2 -2
- data/web/views/morgue.erb +4 -8
- data/web/views/queue.erb +10 -14
- data/web/views/queues.erb +3 -1
- data/web/views/retries.erb +4 -8
- data/web/views/scheduled.erb +12 -13
- metadata +6 -17
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 93289a9aed52b658b609cb6de99fefe182003d71bcc0102fa82fa33d53a70f5b
|
4
|
+
data.tar.gz: 1ca1b7ff222845a4a6f23ea00d77826c248a8e45db176eb9f2194afef70dface
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 680961f7df970445211487780291ecc1adb738fa834126428bbb814b0b7b03e912889c66020079f24aaf548a023c9621e601631d66dd6f7f467e9f8ac5085fee
|
7
|
+
data.tar.gz: cdd1e337afbba5aaea110227e8b91e1b965e05c6ff9a5b7f5202850e3725d4d6959137dd8f47075057230451e394dca3ca0cbe5c7d70ef33ac6284a21e7fbea4
|
data/Changes.md
CHANGED
@@ -2,6 +2,15 @@
|
|
2
2
|
|
3
3
|
[Sidekiq Changes](https://github.com/mperham/sidekiq/blob/main/Changes.md) | [Sidekiq Pro Changes](https://github.com/mperham/sidekiq/blob/main/Pro-Changes.md) | [Sidekiq Enterprise Changes](https://github.com/mperham/sidekiq/blob/main/Ent-Changes.md)
|
4
4
|
|
5
|
+
7.0.3
|
6
|
+
----------
|
7
|
+
|
8
|
+
- Don't warn about memory policy on Redis Enterprise [#5712]
|
9
|
+
- Don't allow Quiet/Stop on embedded Sidekiq instances [#5716]
|
10
|
+
- Fix `size: X` for configuring the default Redis pool size [#5702]
|
11
|
+
- Improve the display of queue weights on Busy page [#5642]
|
12
|
+
- Freeze CurrentAttributes on a job once initially set [#5692]
|
13
|
+
|
5
14
|
7.0.2
|
6
15
|
----------
|
7
16
|
|
data/lib/sidekiq/api.rb
CHANGED
@@ -828,6 +828,24 @@ module Sidekiq
|
|
828
828
|
class ProcessSet
|
829
829
|
include Enumerable
|
830
830
|
|
831
|
+
def self.[](identity)
|
832
|
+
exists, (info, busy, beat, quiet, rss, rtt_us) = Sidekiq.redis { |conn|
|
833
|
+
conn.multi { |transaction|
|
834
|
+
transaction.sismember("processes", identity)
|
835
|
+
transaction.hmget(identity, "info", "busy", "beat", "quiet", "rss", "rtt_us")
|
836
|
+
}
|
837
|
+
}
|
838
|
+
|
839
|
+
return nil if exists == 0 || info.nil?
|
840
|
+
|
841
|
+
hash = Sidekiq.load_json(info)
|
842
|
+
Process.new(hash.merge("busy" => busy.to_i,
|
843
|
+
"beat" => beat.to_f,
|
844
|
+
"quiet" => quiet,
|
845
|
+
"rss" => rss.to_i,
|
846
|
+
"rtt_us" => rtt_us.to_i))
|
847
|
+
end
|
848
|
+
|
831
849
|
# :nodoc:
|
832
850
|
# @api private
|
833
851
|
def initialize(clean_plz = true)
|
@@ -876,7 +894,7 @@ module Sidekiq
|
|
876
894
|
end
|
877
895
|
}
|
878
896
|
|
879
|
-
result.each do |info, busy,
|
897
|
+
result.each do |info, busy, beat, quiet, rss, rtt_us|
|
880
898
|
# If a process is stopped between when we query Redis for `procs` and
|
881
899
|
# when we query for `result`, we will have an item in `result` that is
|
882
900
|
# composed of `nil` values.
|
@@ -884,10 +902,10 @@ module Sidekiq
|
|
884
902
|
|
885
903
|
hash = Sidekiq.load_json(info)
|
886
904
|
yield Process.new(hash.merge("busy" => busy.to_i,
|
887
|
-
"beat" =>
|
905
|
+
"beat" => beat.to_f,
|
888
906
|
"quiet" => quiet,
|
889
907
|
"rss" => rss.to_i,
|
890
|
-
"rtt_us" =>
|
908
|
+
"rtt_us" => rtt_us.to_i))
|
891
909
|
end
|
892
910
|
end
|
893
911
|
|
@@ -943,6 +961,7 @@ module Sidekiq
|
|
943
961
|
# 'busy' => 10,
|
944
962
|
# 'beat' => <last heartbeat>,
|
945
963
|
# 'identity' => <unique string identifying the process>,
|
964
|
+
# 'embedded' => true,
|
946
965
|
# }
|
947
966
|
class Process
|
948
967
|
# :nodoc:
|
@@ -979,11 +998,17 @@ module Sidekiq
|
|
979
998
|
self["version"]
|
980
999
|
end
|
981
1000
|
|
1001
|
+
def embedded?
|
1002
|
+
self["embedded"]
|
1003
|
+
end
|
1004
|
+
|
982
1005
|
# Signal this process to stop processing new jobs.
|
983
1006
|
# It will continue to execute jobs it has already fetched.
|
984
1007
|
# This method is *asynchronous* and it can take 5-10
|
985
1008
|
# seconds for the process to quiet.
|
986
1009
|
def quiet!
|
1010
|
+
raise "Can't quiet an embedded process" if embedded?
|
1011
|
+
|
987
1012
|
signal("TSTP")
|
988
1013
|
end
|
989
1014
|
|
@@ -992,6 +1017,8 @@ module Sidekiq
|
|
992
1017
|
# This method is *asynchronous* and it can take 5-10
|
993
1018
|
# seconds for the process to start shutting down.
|
994
1019
|
def stop!
|
1020
|
+
raise "Can't stop an embedded process" if embedded?
|
1021
|
+
|
995
1022
|
signal("TERM")
|
996
1023
|
end
|
997
1024
|
|
data/lib/sidekiq/capsule.rb
CHANGED
@@ -21,12 +21,15 @@ module Sidekiq
|
|
21
21
|
attr_reader :name
|
22
22
|
attr_reader :queues
|
23
23
|
attr_accessor :concurrency
|
24
|
+
attr_reader :mode
|
25
|
+
attr_reader :weights
|
24
26
|
|
25
27
|
def initialize(name, config)
|
26
28
|
@name = name
|
27
29
|
@config = config
|
28
30
|
@queues = ["default"]
|
29
31
|
@concurrency = config[:concurrency]
|
32
|
+
@mode = :strict
|
30
33
|
end
|
31
34
|
|
32
35
|
def fetcher
|
@@ -41,15 +44,28 @@ module Sidekiq
|
|
41
44
|
fetcher&.bulk_requeue([])
|
42
45
|
end
|
43
46
|
|
47
|
+
# Sidekiq checks queues in three modes:
|
48
|
+
# - :strict - all queues have 0 weight and are checked strictly in order
|
49
|
+
# - :weighted - queues have arbitrary weight between 1 and N
|
50
|
+
# - :random - all queues have weight of 1
|
44
51
|
def queues=(val)
|
52
|
+
@weights = {}
|
45
53
|
@queues = Array(val).each_with_object([]) do |qstr, memo|
|
46
54
|
arr = qstr
|
47
55
|
arr = qstr.split(",") if qstr.is_a?(String)
|
48
56
|
name, weight = arr
|
57
|
+
@weights[name] = weight.to_i
|
49
58
|
[weight.to_i, 1].max.times do
|
50
59
|
memo << name
|
51
60
|
end
|
52
61
|
end
|
62
|
+
@mode = if @weights.values.all?(&:zero?)
|
63
|
+
:strict
|
64
|
+
elsif @weights.values.all? { |x| x == 1 }
|
65
|
+
:random
|
66
|
+
else
|
67
|
+
:weighted
|
68
|
+
end
|
53
69
|
end
|
54
70
|
|
55
71
|
# Allow the middleware to be different per-capsule.
|
data/lib/sidekiq/cli.rb
CHANGED
@@ -77,7 +77,8 @@ module Sidekiq # :nodoc:
|
|
77
77
|
raise "You are connecting to Redis #{ver}, Sidekiq requires Redis 6.2.0 or greater" if ver < Gem::Version.new("6.2.0")
|
78
78
|
|
79
79
|
maxmemory_policy = info["maxmemory_policy"]
|
80
|
-
if maxmemory_policy != "noeviction"
|
80
|
+
if maxmemory_policy != "noeviction" && maxmemory_policy != ""
|
81
|
+
# Redis Enterprise Cloud returns "" for their policy 😳
|
81
82
|
logger.warn <<~EOM
|
82
83
|
|
83
84
|
|
data/lib/sidekiq/config.rb
CHANGED
@@ -129,7 +129,7 @@ module Sidekiq
|
|
129
129
|
def new_redis_pool(size, name = "unset")
|
130
130
|
# connection pool is lazy, it will not create connections unless you actually need them
|
131
131
|
# so don't be skimpy!
|
132
|
-
RedisConnection.create(
|
132
|
+
RedisConnection.create({size: size, logger: logger, pool_name: name}.merge(@redis_config))
|
133
133
|
end
|
134
134
|
|
135
135
|
def redis_info
|
data/lib/sidekiq/fetch.rb
CHANGED
@@ -30,11 +30,9 @@ module Sidekiq # :nodoc:
|
|
30
30
|
def initialize(cap)
|
31
31
|
raise ArgumentError, "missing queue list" unless cap.queues
|
32
32
|
@config = cap
|
33
|
-
@strictly_ordered_queues =
|
33
|
+
@strictly_ordered_queues = cap.mode == :strict
|
34
34
|
@queues = config.queues.map { |q| "queue:#{q}" }
|
35
|
-
if @strictly_ordered_queues
|
36
|
-
@queues.uniq!
|
37
|
-
end
|
35
|
+
@queues.uniq! if @strictly_ordered_queues
|
38
36
|
end
|
39
37
|
|
40
38
|
def retrieve_work
|
data/lib/sidekiq/job_retry.rb
CHANGED
@@ -49,7 +49,7 @@ module Sidekiq
|
|
49
49
|
# The default number of retries is 25 which works out to about 3 weeks
|
50
50
|
# You can change the default maximum number of retries in your initializer:
|
51
51
|
#
|
52
|
-
# Sidekiq.
|
52
|
+
# Sidekiq.default_configuration[:max_retries] = 7
|
53
53
|
#
|
54
54
|
# or limit the number of retries for a particular job and send retries to
|
55
55
|
# a low priority queue with:
|
data/lib/sidekiq/launcher.rb
CHANGED
@@ -161,7 +161,7 @@ module Sidekiq
|
|
161
161
|
fails = procd = 0
|
162
162
|
kb = memory_usage(::Process.pid)
|
163
163
|
|
164
|
-
_, exists, _, _,
|
164
|
+
_, exists, _, _, signal = redis { |conn|
|
165
165
|
conn.multi { |transaction|
|
166
166
|
transaction.sadd("processes", [key])
|
167
167
|
transaction.exists(key)
|
@@ -180,9 +180,7 @@ module Sidekiq
|
|
180
180
|
fire_event(:heartbeat) unless exists > 0
|
181
181
|
fire_event(:beat, oneshot: false)
|
182
182
|
|
183
|
-
|
184
|
-
|
185
|
-
::Process.kill(msg, ::Process.pid)
|
183
|
+
::Process.kill(signal, ::Process.pid) if signal && !@embedded
|
186
184
|
rescue => e
|
187
185
|
# ignore all redis/network issues
|
188
186
|
logger.error("heartbeat: #{e}")
|
@@ -251,13 +249,18 @@ module Sidekiq
|
|
251
249
|
"tag" => @config[:tag] || "",
|
252
250
|
"concurrency" => @config.total_concurrency,
|
253
251
|
"queues" => @config.capsules.values.flat_map { |cap| cap.queues }.uniq,
|
254
|
-
"weights" =>
|
252
|
+
"weights" => to_weights,
|
255
253
|
"labels" => @config[:labels].to_a,
|
256
254
|
"identity" => identity,
|
257
|
-
"version" => Sidekiq::VERSION
|
255
|
+
"version" => Sidekiq::VERSION,
|
256
|
+
"embedded" => @embedded
|
258
257
|
}
|
259
258
|
end
|
260
259
|
|
260
|
+
def to_weights
|
261
|
+
@config.capsules.values.map(&:weights)
|
262
|
+
end
|
263
|
+
|
261
264
|
def to_json
|
262
265
|
# this data changes infrequently so dump it to a string
|
263
266
|
# now so we don't need to dump it every heartbeat.
|
@@ -22,13 +22,11 @@ module Sidekiq
|
|
22
22
|
end
|
23
23
|
|
24
24
|
def call(_, job, _, _)
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
job["cattr"] = attrs
|
31
|
-
end
|
25
|
+
if !job.has_key?("cattr")
|
26
|
+
attrs = @strklass.constantize.attributes
|
27
|
+
# Retries can push the job N times, we don't
|
28
|
+
# want retries to reset cattr. #5692, #5090
|
29
|
+
job["cattr"] = attrs if attrs.any?
|
32
30
|
end
|
33
31
|
yield
|
34
32
|
end
|
data/lib/sidekiq/rails.rb
CHANGED
data/lib/sidekiq/version.rb
CHANGED
@@ -82,11 +82,14 @@ module Sidekiq
|
|
82
82
|
|
83
83
|
post "/busy" do
|
84
84
|
if params["identity"]
|
85
|
-
|
86
|
-
|
87
|
-
|
85
|
+
pro = Sidekiq::ProcessSet[params["identity"]]
|
86
|
+
|
87
|
+
pro.quiet! if params["quiet"]
|
88
|
+
pro.stop! if params["stop"]
|
88
89
|
else
|
89
90
|
processes.each do |pro|
|
91
|
+
next if pro.embedded?
|
92
|
+
|
90
93
|
pro.quiet! if params["quiet"]
|
91
94
|
pro.stop! if params["stop"]
|
92
95
|
end
|
data/lib/sidekiq/web/helpers.rb
CHANGED
@@ -161,6 +161,14 @@ module Sidekiq
|
|
161
161
|
end
|
162
162
|
end
|
163
163
|
|
164
|
+
def busy_weights(capsule_weights)
|
165
|
+
# backwards compat with 7.0.0, remove in 7.1
|
166
|
+
cw = [capsule_weights].flatten
|
167
|
+
cw.map { |hash|
|
168
|
+
hash.map { |name, weight| (weight > 0) ? +name << ": " << weight.to_s : name }.join(", ")
|
169
|
+
}.join("; ")
|
170
|
+
end
|
171
|
+
|
164
172
|
def stats
|
165
173
|
@stats ||= Sidekiq::Stats.new
|
166
174
|
end
|
data/sidekiq.gemspec
CHANGED
@@ -28,23 +28,11 @@ Gem::Specification.new do |gem|
|
|
28
28
|
gem.add_dependency "concurrent-ruby", "< 2"
|
29
29
|
gem.post_install_message = <<~EOM
|
30
30
|
|
31
|
-
|
32
|
-
|
33
|
-
|
34
|
-
█████████ █████ ██████████ ██████████ █████ ████ █████ ██████ ██████████ █████
|
35
|
-
███░░░░░███░░███ ░░███░░░░███ ░░███░░░░░█░░███ ███░ ░░███ ███░░░░███ ░███░░░░███ ███░░░███
|
36
|
-
░███ ░░░ ░███ ░███ ░░███ ░███ █ ░ ░███ ███ ░███ ███ ░░███ ░░░ ███ ███ ░░███
|
37
|
-
░░█████████ ░███ ░███ ░███ ░██████ ░███████ ░███ ░███ ░███ ███ ░███ ░███
|
38
|
-
░░░░░░░░███ ░███ ░███ ░███ ░███░░█ ░███░░███ ░███ ░███ ██░███ ███ ░███ ░███
|
39
|
-
███ ░███ ░███ ░███ ███ ░███ ░ █ ░███ ░░███ ░███ ░░███ ░░████ ███ ░░███ ███
|
40
|
-
░░█████████ █████ ██████████ ██████████ █████ ░░████ █████ ░░░██████░██ ███ ██ ░░░█████░
|
41
|
-
░░░░░░░░░ ░░░░░ ░░░░░░░░░░ ░░░░░░░░░░ ░░░░░ ░░░░ ░░░░░ ░░░░░░ ░░ ░░░ ░░ ░░░░░░
|
42
|
-
|
31
|
+
Welcome to Sidekiq 7.0!
|
43
32
|
|
44
33
|
1. Use `gem 'sidekiq', '<7'` in your Gemfile if you don't want this new version.
|
45
34
|
2. Read the release notes at https://github.com/mperham/sidekiq/blob/main/docs/7.0-Upgrade.md
|
46
|
-
3.
|
47
|
-
|
48
|
-
####################################################
|
35
|
+
3. If you have problems, search for open/closed issues at https://github.com/mperham/sidekiq/issues/
|
36
|
+
|
49
37
|
EOM
|
50
38
|
end
|
data/web/views/_job_info.erb
CHANGED
data/web/views/_paging.erb
CHANGED
data/web/views/busy.erb
CHANGED
@@ -1,7 +1,5 @@
|
|
1
|
-
<div class="
|
2
|
-
<
|
3
|
-
<h3><%= t('Status') %></h3>
|
4
|
-
</div>
|
1
|
+
<div class="header-container">
|
2
|
+
<h1><%= t('Status') %></h1>
|
5
3
|
</div>
|
6
4
|
|
7
5
|
<div class="stats-wrapper">
|
@@ -29,11 +27,9 @@
|
|
29
27
|
</div>
|
30
28
|
</div>
|
31
29
|
|
32
|
-
<div class="
|
33
|
-
<
|
34
|
-
|
35
|
-
</div>
|
36
|
-
<div class="col-sm-3 pull-right flip">
|
30
|
+
<div class="header-container">
|
31
|
+
<h1><%= t('Processes') %></h1>
|
32
|
+
<div>
|
37
33
|
<form method="POST" class="warning-messages">
|
38
34
|
<%= csrf_tag %>
|
39
35
|
<div class="btn-group pull-right flip">
|
@@ -43,6 +39,7 @@
|
|
43
39
|
</form>
|
44
40
|
</div>
|
45
41
|
</div>
|
42
|
+
|
46
43
|
<div class="table_container">
|
47
44
|
<table class="processes table table-hover table-bordered table-striped">
|
48
45
|
<thead>
|
@@ -62,6 +59,9 @@
|
|
62
59
|
<% process.labels.each do |label| %>
|
63
60
|
<span class="label label-info"><%= label %></span>
|
64
61
|
<% end %>
|
62
|
+
<% if process.embedded? %>
|
63
|
+
<span class="label label-default">embedded</span>
|
64
|
+
<% end %>
|
65
65
|
<% if process.stopping? %>
|
66
66
|
<span class="label label-danger">quiet</span>
|
67
67
|
<% end %>
|
@@ -71,7 +71,7 @@
|
|
71
71
|
<br>
|
72
72
|
<b><%= "#{t('Queues')}: " %></b>
|
73
73
|
<% if process.weights %>
|
74
|
-
<%= process.weights
|
74
|
+
<%= busy_weights(process.weights) %>
|
75
75
|
<% else %>
|
76
76
|
<%= process.queues.sort.join(", ") %>
|
77
77
|
<% end %>
|
@@ -90,29 +90,27 @@
|
|
90
90
|
<td><%= process['concurrency'] %></td>
|
91
91
|
<td><%= process['busy'] %></td>
|
92
92
|
<td>
|
93
|
-
|
94
|
-
|
95
|
-
|
93
|
+
<% unless process.embedded? %>
|
94
|
+
<form method="POST">
|
95
|
+
<%= csrf_tag %>
|
96
|
+
<input type="hidden" name="identity" value="<%= process['identity'] %>"/>
|
96
97
|
|
97
|
-
|
98
|
-
|
99
|
-
|
100
|
-
|
101
|
-
|
98
|
+
<div class="btn-group pull-right flip">
|
99
|
+
<% unless process.stopping? %><button class="btn btn-xs btn-warn" type="submit" name="quiet" value="1"><%= t('Quiet') %></button><% end %>
|
100
|
+
<button class="btn btn-xs btn-danger" type="submit" name="stop" value="1"><%= t('Stop') %></button>
|
101
|
+
</div>
|
102
|
+
</form>
|
103
|
+
<% end %>
|
102
104
|
</td>
|
103
105
|
</tr>
|
104
106
|
<% end %>
|
105
107
|
</table>
|
106
108
|
</div>
|
107
109
|
|
108
|
-
<div class="
|
109
|
-
<
|
110
|
-
<h3><%= t('Jobs') %></h3>
|
111
|
-
</div>
|
110
|
+
<div class="header-container">
|
111
|
+
<h1><%= t('Jobs') %></h1>
|
112
112
|
<% if @workset.size > 0 && @total_size > @count %>
|
113
|
-
|
114
|
-
<%= erb :_paging, locals: { url: "#{root_path}busy" } %>
|
115
|
-
</div>
|
113
|
+
<%= erb :_paging, locals: { url: "#{root_path}busy" } %>
|
116
114
|
<% end %>
|
117
115
|
</div>
|
118
116
|
|
@@ -16,7 +16,7 @@
|
|
16
16
|
<% if job_result.totals["s"] > 0 %>
|
17
17
|
<div class="header-container">
|
18
18
|
<h1>
|
19
|
-
<a href="<%= root_path %>metrics"><%= t(
|
19
|
+
<a href="<%= root_path %>metrics"><%= t('Metrics') %></a> /
|
20
20
|
<%= h @name %>
|
21
21
|
</h1>
|
22
22
|
|
@@ -61,7 +61,7 @@
|
|
61
61
|
<p><small>Data from <%= @query_result.starts_at %> to <%= @query_result.ends_at %></small></p>
|
62
62
|
<% else %>
|
63
63
|
<h1>
|
64
|
-
<a href="<%= root_path %>/metrics"><%= t(
|
64
|
+
<a href="<%= root_path %>/metrics"><%= t('Metrics') %></a> /
|
65
65
|
<%= h @name %>
|
66
66
|
</h1>
|
67
67
|
|
data/web/views/morgue.erb
CHANGED
@@ -1,14 +1,10 @@
|
|
1
|
-
<
|
2
|
-
<
|
3
|
-
<h3><%= t('DeadJobs') %></h3>
|
4
|
-
</div>
|
1
|
+
<div class="header-container">
|
2
|
+
<h1><%= t('DeadJobs') %></h1>
|
5
3
|
<% if @dead.size > 0 && @total_size > @count %>
|
6
|
-
|
7
|
-
<%= erb :_paging, locals: { url: "#{root_path}morgue" } %>
|
8
|
-
</div>
|
4
|
+
<%= erb :_paging, locals: { url: "#{root_path}morgue" } %>
|
9
5
|
<% end %>
|
10
6
|
<%= filtering('dead') %>
|
11
|
-
</
|
7
|
+
</div>
|
12
8
|
|
13
9
|
<% if @dead.size > 0 %>
|
14
10
|
<form action="<%= root_path %>morgue" method="post">
|
data/web/views/queue.erb
CHANGED
@@ -1,17 +1,13 @@
|
|
1
|
-
<
|
2
|
-
<
|
3
|
-
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
<div class="col-sm-4 pull-right flip">
|
12
|
-
<%= erb :_paging, locals: { url: "#{root_path}queues/#{CGI.escape(@name)}" } %>
|
13
|
-
</div>
|
14
|
-
</header>
|
1
|
+
<div class="header-container">
|
2
|
+
<h1><%= t('CurrentMessagesInQueue', :queue => h(@name)) %>
|
3
|
+
<% if @queue.paused? %>
|
4
|
+
<span class="label label-danger"><%= t('Paused') %></span>
|
5
|
+
<% end %>
|
6
|
+
<span class="badge badge-secondary"><%= number_with_delimiter(@total_size) %></span>
|
7
|
+
</h1>
|
8
|
+
<%= erb :_paging, locals: { url: "#{root_path}queues/#{CGI.escape(@name)}" } %>
|
9
|
+
</div>
|
10
|
+
|
15
11
|
<div class="table_container">
|
16
12
|
<table class="queue table table-hover table-bordered table-striped">
|
17
13
|
<thead>
|
data/web/views/queues.erb
CHANGED
data/web/views/retries.erb
CHANGED
@@ -1,14 +1,10 @@
|
|
1
|
-
<
|
2
|
-
<
|
3
|
-
<h3><%= t('Retries') %></h3>
|
4
|
-
</div>
|
1
|
+
<div class="header-container">
|
2
|
+
<h1><%= t('Retries') %></h1>
|
5
3
|
<% if @retries.size > 0 && @total_size > @count %>
|
6
|
-
|
7
|
-
<%= erb :_paging, locals: { url: "#{root_path}retries" } %>
|
8
|
-
</div>
|
4
|
+
<%= erb :_paging, locals: { url: "#{root_path}retries" } %>
|
9
5
|
<% end %>
|
10
6
|
<%= filtering('retries') %>
|
11
|
-
</
|
7
|
+
</div>
|
12
8
|
|
13
9
|
<% if @retries.size > 0 %>
|
14
10
|
<form action="<%= root_path %>retries" method="post">
|
data/web/views/scheduled.erb
CHANGED
@@ -1,25 +1,22 @@
|
|
1
|
-
<
|
2
|
-
<
|
3
|
-
<h3><%= t('ScheduledJobs') %></h3>
|
4
|
-
</div>
|
1
|
+
<div class="header-container">
|
2
|
+
<h1><%= t('ScheduledJobs') %></h1>
|
5
3
|
<% if @scheduled.size > 0 && @total_size > @count %>
|
6
|
-
|
7
|
-
<%= erb :_paging, locals: { url: "#{root_path}scheduled" } %>
|
8
|
-
</div>
|
4
|
+
<%= erb :_paging, locals: { url: "#{root_path}scheduled" } %>
|
9
5
|
<% end %>
|
10
6
|
<%= filtering('scheduled') %>
|
11
|
-
</
|
7
|
+
</div>
|
12
8
|
|
13
9
|
<% if @scheduled.size > 0 %>
|
14
|
-
|
15
10
|
<form action="<%= root_path %>scheduled" method="post">
|
16
11
|
<%= csrf_tag %>
|
17
12
|
<div class="table_container">
|
18
13
|
<table class="table table-striped table-bordered table-hover">
|
19
14
|
<thead>
|
20
15
|
<tr>
|
21
|
-
<th class="checkbox-column">
|
22
|
-
<
|
16
|
+
<th class="table-checkbox checkbox-column">
|
17
|
+
<label>
|
18
|
+
<input type="checkbox" class="check_all" />
|
19
|
+
</label>
|
23
20
|
</th>
|
24
21
|
<th><%= t('When') %></th>
|
25
22
|
<th><%= t('Queue') %></th>
|
@@ -29,8 +26,10 @@
|
|
29
26
|
</thead>
|
30
27
|
<% @scheduled.each do |entry| %>
|
31
28
|
<tr>
|
32
|
-
<td>
|
33
|
-
<
|
29
|
+
<td class="table-checkbox">
|
30
|
+
<label>
|
31
|
+
<input type='checkbox' name='key[]' value='<%= job_params(entry.item, entry.score) %>' class='shift_clickable' />
|
32
|
+
</label>
|
34
33
|
</td>
|
35
34
|
<td>
|
36
35
|
<a href="<%= root_path %>scheduled/<%= job_params(entry.item, entry.score) %>"><%= relative_time(entry.at) %></a>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 7.0.
|
4
|
+
version: 7.0.3
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Perham
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2023-01-11 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redis-client
|
@@ -204,26 +204,14 @@ metadata:
|
|
204
204
|
documentation_uri: https://github.com/mperham/sidekiq/wiki
|
205
205
|
changelog_uri: https://github.com/mperham/sidekiq/blob/main/Changes.md
|
206
206
|
source_code_uri: https://github.com/mperham/sidekiq
|
207
|
-
post_install_message: |2
|
208
|
-
|
209
|
-
####################################################
|
210
|
-
|
211
|
-
|
212
|
-
█████████ █████ ██████████ ██████████ █████ ████ █████ ██████ ██████████ █████
|
213
|
-
███░░░░░███░░███ ░░███░░░░███ ░░███░░░░░█░░███ ███░ ░░███ ███░░░░███ ░███░░░░███ ███░░░███
|
214
|
-
░███ ░░░ ░███ ░███ ░░███ ░███ █ ░ ░███ ███ ░███ ███ ░░███ ░░░ ███ ███ ░░███
|
215
|
-
░░█████████ ░███ ░███ ░███ ░██████ ░███████ ░███ ░███ ░███ ███ ░███ ░███
|
216
|
-
░░░░░░░░███ ░███ ░███ ░███ ░███░░█ ░███░░███ ░███ ░███ ██░███ ███ ░███ ░███
|
217
|
-
███ ░███ ░███ ░███ ███ ░███ ░ █ ░███ ░░███ ░███ ░░███ ░░████ ███ ░░███ ███
|
218
|
-
░░█████████ █████ ██████████ ██████████ █████ ░░████ █████ ░░░██████░██ ███ ██ ░░░█████░
|
219
|
-
░░░░░░░░░ ░░░░░ ░░░░░░░░░░ ░░░░░░░░░░ ░░░░░ ░░░░ ░░░░░ ░░░░░░ ░░ ░░░ ░░ ░░░░░░
|
207
|
+
post_install_message: |2+
|
220
208
|
|
209
|
+
Welcome to Sidekiq 7.0!
|
221
210
|
|
222
211
|
1. Use `gem 'sidekiq', '<7'` in your Gemfile if you don't want this new version.
|
223
212
|
2. Read the release notes at https://github.com/mperham/sidekiq/blob/main/docs/7.0-Upgrade.md
|
224
|
-
3.
|
213
|
+
3. If you have problems, search for open/closed issues at https://github.com/mperham/sidekiq/issues/
|
225
214
|
|
226
|
-
####################################################
|
227
215
|
rdoc_options: []
|
228
216
|
require_paths:
|
229
217
|
- lib
|
@@ -243,3 +231,4 @@ signing_key:
|
|
243
231
|
specification_version: 4
|
244
232
|
summary: Simple, efficient background processing for Ruby
|
245
233
|
test_files: []
|
234
|
+
...
|