sidekiq 8.0.3 → 8.0.4
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.
- checksums.yaml +4 -4
- data/Changes.md +12 -1
- data/lib/sidekiq/job/iterable.rb +3 -0
- data/lib/sidekiq/middleware/current_attributes.rb +4 -1
- data/lib/sidekiq/version.rb +1 -1
- data/lib/sidekiq/web/application.rb +12 -4
- data/lib/sidekiq/web/config.rb +1 -1
- data/lib/sidekiq/web/helpers.rb +23 -18
- data/lib/sidekiq/web.rb +1 -0
- data/lib/sidekiq.rb +1 -1
- data/web/assets/javascripts/dashboard.js +1 -1
- data/web/assets/stylesheets/style.css +6 -2
- data/web/views/scheduled.erb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 70244790b6f984dfb4da9922e5971f3072479bce2f484ca3ab3982108906e6d0
|
4
|
+
data.tar.gz: 77b5d8e952603bebfe6e703b0f92df3cf4b78be6caf7e46fb46e5376c02c45c7
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 5c347f189e4ed255a1de061afa5c08bf73b3d77f83d853669e09c9b7e06f430958d1db4e3aa9a6ae3a9abad5802c3872f050ae43b2db014105633c45be4cfaa0
|
7
|
+
data.tar.gz: 0fca2e77cfd25ab7ccc6be20edeb8a0c09056c8bb0bde03de5ff415a5ca15f55668e1c662a2f91c1dfe8ed074ae5d106d95b1d3a04e32fa1d86606aa35c06645
|
data/Changes.md
CHANGED
@@ -2,7 +2,18 @@
|
|
2
2
|
|
3
3
|
[Sidekiq Changes](https://github.com/sidekiq/sidekiq/blob/main/Changes.md) | [Sidekiq Pro Changes](https://github.com/sidekiq/sidekiq/blob/main/Pro-Changes.md) | [Sidekiq Enterprise Changes](https://github.com/sidekiq/sidekiq/blob/main/Ent-Changes.md)
|
4
4
|
|
5
|
-
|
5
|
+
8.0.4
|
6
|
+
----------
|
7
|
+
|
8
|
+
- Adjust Rails integration for various edge cases [6713]
|
9
|
+
- Flush job iteration state when an error is raised [#6704]
|
10
|
+
- Update Accept-Language parsing in Web UI [#6721]
|
11
|
+
- Remove fixed-width in Web UI [#6686]
|
12
|
+
- Adjust CSRF middleware ordering [#6688]
|
13
|
+
- Support proxies when POSTing profiles to profiler.firefox.com [#6687]
|
14
|
+
- Dont swallow NoMethodErrors in CurrentAttributes [#6685]
|
15
|
+
|
16
|
+
8.0.3
|
6
17
|
----------
|
7
18
|
|
8
19
|
- Configure Vernier output directory [#6674]
|
data/lib/sidekiq/job/iterable.rb
CHANGED
@@ -71,11 +71,14 @@ module Sidekiq
|
|
71
71
|
retried = false
|
72
72
|
|
73
73
|
begin
|
74
|
+
set_succeeded = false
|
74
75
|
klass.set(attrs) do
|
76
|
+
set_succeeded = true
|
75
77
|
wrap(klass_attrs, &block)
|
76
78
|
end
|
77
79
|
rescue NoMethodError
|
78
|
-
|
80
|
+
# Don't retry if the no method error didn't come from current attributes
|
81
|
+
raise if retried || set_succeeded
|
79
82
|
|
80
83
|
# It is possible that the `CurrentAttributes` definition
|
81
84
|
# was changed before the job started processing.
|
data/lib/sidekiq/version.rb
CHANGED
@@ -325,6 +325,8 @@ module Sidekiq
|
|
325
325
|
get "/stats" do
|
326
326
|
sidekiq_stats = Sidekiq::Stats.new
|
327
327
|
redis_stats = redis_info.slice(*REDIS_KEYS)
|
328
|
+
redis_stats["store_name"] = store_name
|
329
|
+
redis_stats["store_version"] = store_version
|
328
330
|
json(
|
329
331
|
sidekiq: {
|
330
332
|
processed: sidekiq_stats.processed,
|
@@ -360,10 +362,16 @@ module Sidekiq
|
|
360
362
|
unless sid
|
361
363
|
require "net/http"
|
362
364
|
data = Sidekiq.redis { |c| c.hget(key, "data") }
|
363
|
-
|
364
|
-
|
365
|
-
|
366
|
-
|
365
|
+
|
366
|
+
store_uri = URI(store)
|
367
|
+
http = Net::HTTP.new(store_uri.host, store_uri.port)
|
368
|
+
http.use_ssl = store_uri.scheme == "https"
|
369
|
+
request = Net::HTTP::Post.new(store_uri.request_uri)
|
370
|
+
request.body = data
|
371
|
+
request["Accept"] = "application/vnd.firefox-profiler+json;version=1.0"
|
372
|
+
request["User-Agent"] = "Sidekiq #{Sidekiq::VERSION} job profiler"
|
373
|
+
|
374
|
+
resp = http.request(request)
|
367
375
|
# https://raw.githubusercontent.com/firefox-devtools/profiler-server/master/tools/decode_jwt_payload.py
|
368
376
|
rawjson = resp.body.split(".")[1].unpack1("m")
|
369
377
|
sid = Sidekiq.load_json(rawjson)["profileToken"]
|
data/lib/sidekiq/web/config.rb
CHANGED
data/lib/sidekiq/web/helpers.rb
CHANGED
@@ -2,7 +2,7 @@
|
|
2
2
|
|
3
3
|
require "uri"
|
4
4
|
require "yaml"
|
5
|
-
require "cgi"
|
5
|
+
require "cgi/escape"
|
6
6
|
|
7
7
|
module Sidekiq
|
8
8
|
# These methods are available to pages within the Web UI and UI extensions.
|
@@ -165,7 +165,10 @@ module Sidekiq
|
|
165
165
|
text_direction == "rtl"
|
166
166
|
end
|
167
167
|
|
168
|
-
# See https://www.
|
168
|
+
# See https://www.rfc-editor.org/rfc/rfc9110.html#section-12.5.4
|
169
|
+
# Returns an array of language tags ordered by their quality value
|
170
|
+
#
|
171
|
+
# Inspiration taken from https://github.com/iain/http_accept_language/blob/master/lib/http_accept_language/parser.rb
|
169
172
|
def user_preferred_languages
|
170
173
|
languages = env["HTTP_ACCEPT_LANGUAGE"]
|
171
174
|
languages.to_s.gsub(/\s+/, "").split(",").map { |language|
|
@@ -180,28 +183,30 @@ module Sidekiq
|
|
180
183
|
|
181
184
|
# Given an Accept-Language header like "fr-FR,fr;q=0.8,en-US;q=0.6,en;q=0.4,ru;q=0.2"
|
182
185
|
# this method will try to best match the available locales to the user's preferred languages.
|
183
|
-
#
|
184
|
-
# Inspiration taken from https://github.com/iain/http_accept_language/blob/master/lib/http_accept_language/parser.rb
|
185
186
|
def locale
|
186
187
|
# session[:locale] is set via the locale selector from the footer
|
187
188
|
@locale ||= if (l = session&.fetch(:locale, nil)) && available_locales.include?(l)
|
188
189
|
l
|
189
190
|
else
|
191
|
+
matched_locale = nil
|
192
|
+
# Attempt to find a case-insensitive exact match first
|
193
|
+
user_preferred_languages.each do |preferred|
|
194
|
+
# We only care about the language and primary subtag
|
195
|
+
# "en-GB-oxendict" becomes "en-GB"
|
196
|
+
language_tag = preferred.split("-")[0..1].join("-")
|
197
|
+
matched_locale = available_locales.find { |available_locale| available_locale.casecmp?(language_tag) }
|
198
|
+
break if matched_locale
|
199
|
+
end
|
190
200
|
|
191
|
-
|
192
|
-
matched_locale = user_preferred_languages.find { |preferred|
|
193
|
-
available_locales.include?(preferred) if preferred.length == 5
|
194
|
-
}
|
195
|
-
|
196
|
-
matched_locale ||= user_preferred_languages.map { |preferred|
|
197
|
-
preferred_language = preferred.split("-", 2).first
|
198
|
-
|
199
|
-
lang_group = available_locales.select { |available|
|
200
|
-
preferred_language == available.split("-", 2).first
|
201
|
-
}
|
201
|
+
return matched_locale if matched_locale
|
202
202
|
|
203
|
-
|
204
|
-
|
203
|
+
# Find the first base language match
|
204
|
+
# "en-US,es-MX;q=0.9" matches "en"
|
205
|
+
user_preferred_languages.each do |preferred|
|
206
|
+
base_language = preferred.split("-", 2).first
|
207
|
+
matched_locale = available_locales.find { |available_locale| available_locale.casecmp?(base_language) }
|
208
|
+
break if matched_locale
|
209
|
+
end
|
205
210
|
|
206
211
|
matched_locale || "en"
|
207
212
|
end
|
@@ -372,7 +377,7 @@ module Sidekiq
|
|
372
377
|
elsif rss_kb < 10_000_000
|
373
378
|
"#{number_with_delimiter((rss_kb / 1024.0).to_i)} MB"
|
374
379
|
else
|
375
|
-
"#{number_with_delimiter(
|
380
|
+
"#{number_with_delimiter(rss_kb / (1024.0 * 1024.0), precision: 1)} GB"
|
376
381
|
end
|
377
382
|
end
|
378
383
|
|
data/lib/sidekiq/web.rb
CHANGED
@@ -109,6 +109,7 @@ module Sidekiq
|
|
109
109
|
cascade: true,
|
110
110
|
header_rules: rules
|
111
111
|
m.each { |middleware, block| use(*middleware, &block) }
|
112
|
+
use CsrfProtection unless $TESTING # rubocop:disable Style/GlobalVars
|
112
113
|
run Sidekiq::Web::Application.new(self.class)
|
113
114
|
end
|
114
115
|
end
|
data/lib/sidekiq.rb
CHANGED
@@ -11,7 +11,7 @@ var updateStatsSummary = function(data) {
|
|
11
11
|
}
|
12
12
|
|
13
13
|
var updateRedisStats = function(data) {
|
14
|
-
document.getElementById('redis_version').innerText = data.
|
14
|
+
document.getElementById('redis_version').innerText = data.store_version;
|
15
15
|
document.getElementById('uptime_in_days').innerText = data.uptime_in_days;
|
16
16
|
document.getElementById('connected_clients').innerText = data.connected_clients;
|
17
17
|
document.getElementById('used_memory_human').innerText = data.used_memory_human;
|
@@ -69,7 +69,7 @@ body {
|
|
69
69
|
|
70
70
|
.container {
|
71
71
|
margin: 0 auto;
|
72
|
-
max-width: 1440px;
|
72
|
+
/* max-width: 1440px; */
|
73
73
|
padding: var(--space-2x);
|
74
74
|
}
|
75
75
|
|
@@ -90,6 +90,7 @@ code {
|
|
90
90
|
font-family: var(--font-mono);
|
91
91
|
font-size: var(--font-size-small);
|
92
92
|
padding: var(--space-1-2);
|
93
|
+
word-wrap: anywhere;
|
93
94
|
}
|
94
95
|
|
95
96
|
time { color: var(--color-text-light); }
|
@@ -437,7 +438,10 @@ article .count {
|
|
437
438
|
}
|
438
439
|
|
439
440
|
/* table */
|
440
|
-
.table_container {
|
441
|
+
.table_container {
|
442
|
+
overflow-x: auto;
|
443
|
+
margin-bottom: var(--space-2x);
|
444
|
+
}
|
441
445
|
|
442
446
|
.table_container + form,
|
443
447
|
.table_container + input,
|
data/web/views/scheduled.erb
CHANGED
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: sidekiq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 8.0.
|
4
|
+
version: 8.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Perham
|
8
8
|
bindir: bin
|
9
9
|
cert_chain: []
|
10
|
-
date: 2025-
|
10
|
+
date: 2025-05-28 00:00:00.000000000 Z
|
11
11
|
dependencies:
|
12
12
|
- !ruby/object:Gem::Dependency
|
13
13
|
name: redis-client
|