sidekiq 6.5.7 → 6.5.8
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 +19 -12
- data/lib/sidekiq/cli.rb +11 -0
- data/lib/sidekiq/middleware/current_attributes.rb +8 -8
- data/lib/sidekiq/paginator.rb +8 -0
- data/lib/sidekiq/version.rb +1 -1
- data/lib/sidekiq/web/application.rb +3 -0
- data/lib/sidekiq/web/helpers.rb +4 -14
- data/sidekiq.gemspec +2 -2
- data/web/views/busy.erb +6 -1
- metadata +8 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: fde4ce1db65a0c90d5fd32cff914e33fd238e52ce2f219d03bdc4d6accbdd645
|
4
|
+
data.tar.gz: fd62df7cd374ea7bf2977b44da41c771da1deb8b84046e745fb042f66060eba0
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 1b6b3089616dbc25ce2e182ceca53c00b31b6a77adeda402b67436f1021dfc301e9f7ac2e1337e405ffdf0f6aab875fe6b228fdbceaa6e50685781cb5899e80e
|
7
|
+
data.tar.gz: 37f2a103a2247c3541036044fd3ddb6e589eff483427b2f7c6ed02c6c349ec7a850c2adfdf868a22f018cf49bca3f94b65e3ecc8c46db9262c84b71c65593ddc
|
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
|
+
6.5.8
|
6
|
+
----------
|
7
|
+
|
8
|
+
- Fail if using a bad version of scout_apm [#5616]
|
9
|
+
- Add pagination to Busy page [#5556]
|
10
|
+
- Speed up WorkSet#each [#5559]
|
11
|
+
- Adjust CurrentAttributes to work with the String class name so we aren't referencing
|
12
|
+
the Class within a Rails initializer [#5536]
|
13
|
+
|
5
14
|
6.5.7
|
6
15
|
----------
|
7
16
|
|
data/lib/sidekiq/api.rb
CHANGED
@@ -1103,24 +1103,31 @@ module Sidekiq
|
|
1103
1103
|
|
1104
1104
|
def each(&block)
|
1105
1105
|
results = []
|
1106
|
+
procs = nil
|
1107
|
+
all_works = nil
|
1108
|
+
|
1106
1109
|
Sidekiq.redis do |conn|
|
1107
|
-
procs = conn.sscan_each("processes").to_a
|
1108
|
-
|
1109
|
-
|
1110
|
-
|
1110
|
+
procs = conn.sscan_each("processes").to_a.sort
|
1111
|
+
|
1112
|
+
all_works = conn.pipelined do |pipeline|
|
1113
|
+
procs.each do |key|
|
1111
1114
|
pipeline.hgetall("#{key}:work")
|
1112
|
-
}
|
1113
|
-
next unless valid
|
1114
|
-
workers.each_pair do |tid, json|
|
1115
|
-
hsh = Sidekiq.load_json(json)
|
1116
|
-
p = hsh["payload"]
|
1117
|
-
# avoid breaking API, this is a side effect of the JSON optimization in #4316
|
1118
|
-
hsh["payload"] = Sidekiq.load_json(p) if p.is_a?(String)
|
1119
|
-
results << [key, tid, hsh]
|
1120
1115
|
end
|
1121
1116
|
end
|
1122
1117
|
end
|
1123
1118
|
|
1119
|
+
procs.zip(all_works).each do |key, workers|
|
1120
|
+
workers.each_pair do |tid, json|
|
1121
|
+
next if json.empty?
|
1122
|
+
|
1123
|
+
hsh = Sidekiq.load_json(json)
|
1124
|
+
p = hsh["payload"]
|
1125
|
+
# avoid breaking API, this is a side effect of the JSON optimization in #4316
|
1126
|
+
hsh["payload"] = Sidekiq.load_json(p) if p.is_a?(String)
|
1127
|
+
results << [key, tid, hsh]
|
1128
|
+
end
|
1129
|
+
end
|
1130
|
+
|
1124
1131
|
results.sort_by { |(_, _, hsh)| hsh["run_at"] }.each(&block)
|
1125
1132
|
end
|
1126
1133
|
|
data/lib/sidekiq/cli.rb
CHANGED
@@ -12,6 +12,17 @@ require "sidekiq"
|
|
12
12
|
require "sidekiq/component"
|
13
13
|
require "sidekiq/launcher"
|
14
14
|
|
15
|
+
# module ScoutApm
|
16
|
+
# VERSION = "5.3.1"
|
17
|
+
# end
|
18
|
+
fail <<~EOM if defined?(ScoutApm::VERSION) && ScoutApm::VERSION < "5.2.0"
|
19
|
+
|
20
|
+
|
21
|
+
scout_apm v#{ScoutApm::VERSION} is unsafe with Sidekiq 6.5. Please run `bundle up scout_apm` to upgrade to 5.2.0 or greater.
|
22
|
+
|
23
|
+
|
24
|
+
EOM
|
25
|
+
|
15
26
|
module Sidekiq # :nodoc:
|
16
27
|
class CLI
|
17
28
|
include Sidekiq::Component
|
@@ -11,18 +11,18 @@ module Sidekiq
|
|
11
11
|
#
|
12
12
|
# # in your initializer
|
13
13
|
# require "sidekiq/middleware/current_attributes"
|
14
|
-
# Sidekiq::CurrentAttributes.persist(Myapp::Current)
|
14
|
+
# Sidekiq::CurrentAttributes.persist("Myapp::Current")
|
15
15
|
#
|
16
16
|
module CurrentAttributes
|
17
17
|
class Save
|
18
18
|
include Sidekiq::ClientMiddleware
|
19
19
|
|
20
20
|
def initialize(cattr)
|
21
|
-
@
|
21
|
+
@strklass = cattr
|
22
22
|
end
|
23
23
|
|
24
24
|
def call(_, job, _, _)
|
25
|
-
attrs = @
|
25
|
+
attrs = @strklass.constantize.attributes
|
26
26
|
if attrs.any?
|
27
27
|
if job.has_key?("cattr")
|
28
28
|
job["cattr"].merge!(attrs)
|
@@ -38,12 +38,12 @@ module Sidekiq
|
|
38
38
|
include Sidekiq::ServerMiddleware
|
39
39
|
|
40
40
|
def initialize(cattr)
|
41
|
-
@
|
41
|
+
@strklass = cattr
|
42
42
|
end
|
43
43
|
|
44
44
|
def call(_, job, _, &block)
|
45
45
|
if job.has_key?("cattr")
|
46
|
-
@
|
46
|
+
@strklass.constantize.set(job["cattr"], &block)
|
47
47
|
else
|
48
48
|
yield
|
49
49
|
end
|
@@ -52,11 +52,11 @@ module Sidekiq
|
|
52
52
|
|
53
53
|
def self.persist(klass)
|
54
54
|
Sidekiq.configure_client do |config|
|
55
|
-
config.client_middleware.add Save, klass
|
55
|
+
config.client_middleware.add Save, klass.to_s
|
56
56
|
end
|
57
57
|
Sidekiq.configure_server do |config|
|
58
|
-
config.client_middleware.add Save, klass
|
59
|
-
config.server_middleware.add Load, klass
|
58
|
+
config.client_middleware.add Save, klass.to_s
|
59
|
+
config.server_middleware.add Load, klass.to_s
|
60
60
|
end
|
61
61
|
end
|
62
62
|
end
|
data/lib/sidekiq/paginator.rb
CHANGED
@@ -43,5 +43,13 @@ module Sidekiq
|
|
43
43
|
end
|
44
44
|
end
|
45
45
|
end
|
46
|
+
|
47
|
+
def page_items(items, pageidx = 1, page_size = 25)
|
48
|
+
current_page = pageidx.to_i < 1 ? 1 : pageidx.to_i
|
49
|
+
pageidx = current_page - 1
|
50
|
+
starting = pageidx * page_size
|
51
|
+
items = items.to_a
|
52
|
+
[current_page, items.size, items[starting, page_size]]
|
53
|
+
end
|
46
54
|
end
|
47
55
|
end
|
data/lib/sidekiq/version.rb
CHANGED
data/lib/sidekiq/web/helpers.rb
CHANGED
@@ -148,25 +148,15 @@ module Sidekiq
|
|
148
148
|
@processes ||= Sidekiq::ProcessSet.new
|
149
149
|
end
|
150
150
|
|
151
|
-
# Sorts processes by hostname following the natural sort order
|
152
|
-
# 'worker.1' < 'worker.2' < 'worker.10' < 'worker.20'
|
153
|
-
# '2.1.1.1' < '192.168.0.2' < '192.168.0.10'
|
151
|
+
# Sorts processes by hostname following the natural sort order
|
154
152
|
def sorted_processes
|
155
153
|
@sorted_processes ||= begin
|
156
154
|
return processes unless processes.all? { |p| p["hostname"] }
|
157
155
|
|
158
|
-
split_characters = /[._-]+/
|
159
|
-
|
160
|
-
padding = processes.flat_map { |p| p["hostname"].split(split_characters) }.map(&:size).max
|
161
|
-
|
162
156
|
processes.to_a.sort_by do |process|
|
163
|
-
|
164
|
-
|
165
|
-
|
166
|
-
padding_char = substring[0].match?(/\d/) ? "0" : "a"
|
167
|
-
|
168
|
-
substring.rjust(padding, padding_char)
|
169
|
-
end
|
157
|
+
# Kudos to `shurikk` on StackOverflow
|
158
|
+
# https://stackoverflow.com/a/15170063/575547
|
159
|
+
process["hostname"].split(/(\d+)/).map { |a| /\d+/.match?(a) ? a.to_i : a }
|
170
160
|
end
|
171
161
|
end
|
172
162
|
end
|
data/sidekiq.gemspec
CHANGED
@@ -22,7 +22,7 @@ Gem::Specification.new do |gem|
|
|
22
22
|
"source_code_uri" => "https://github.com/mperham/sidekiq"
|
23
23
|
}
|
24
24
|
|
25
|
-
gem.add_dependency "redis", "<5", ">= 4.5.0"
|
26
|
-
gem.add_dependency "connection_pool", ">= 2.2.5"
|
25
|
+
gem.add_dependency "redis", ["<5", ">= 4.5.0"]
|
26
|
+
gem.add_dependency "connection_pool", ["<3", ">= 2.2.5"]
|
27
27
|
gem.add_dependency "rack", "~> 2.0"
|
28
28
|
end
|
data/web/views/busy.erb
CHANGED
@@ -96,6 +96,11 @@
|
|
96
96
|
<div class="col-sm-7">
|
97
97
|
<h3><%= t('Jobs') %></h3>
|
98
98
|
</div>
|
99
|
+
<% if @workset.size > 0 && @total_size > @count %>
|
100
|
+
<div class="col-sm-4">
|
101
|
+
<%= erb :_paging, locals: { url: "#{root_path}busy" } %>
|
102
|
+
</div>
|
103
|
+
<% end %>
|
99
104
|
</div>
|
100
105
|
|
101
106
|
<div class="table_container">
|
@@ -109,7 +114,7 @@
|
|
109
114
|
<th><%= t('Arguments') %></th>
|
110
115
|
<th><%= t('Started') %></th>
|
111
116
|
</thead>
|
112
|
-
<% workset.each do |process, thread, msg| %>
|
117
|
+
<% @workset.each do |process, thread, msg| %>
|
113
118
|
<% job = Sidekiq::JobRecord.new(msg['payload']) %>
|
114
119
|
<tr>
|
115
120
|
<td><%= process %></td>
|
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: 6.5.
|
4
|
+
version: 6.5.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Perham
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2022-
|
11
|
+
date: 2022-11-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redis
|
@@ -34,6 +34,9 @@ dependencies:
|
|
34
34
|
name: connection_pool
|
35
35
|
requirement: !ruby/object:Gem::Requirement
|
36
36
|
requirements:
|
37
|
+
- - "<"
|
38
|
+
- !ruby/object:Gem::Version
|
39
|
+
version: '3'
|
37
40
|
- - ">="
|
38
41
|
- !ruby/object:Gem::Version
|
39
42
|
version: 2.2.5
|
@@ -41,6 +44,9 @@ dependencies:
|
|
41
44
|
prerelease: false
|
42
45
|
version_requirements: !ruby/object:Gem::Requirement
|
43
46
|
requirements:
|
47
|
+
- - "<"
|
48
|
+
- !ruby/object:Gem::Version
|
49
|
+
version: '3'
|
44
50
|
- - ">="
|
45
51
|
- !ruby/object:Gem::Version
|
46
52
|
version: 2.2.5
|