sidekiq 7.3.4 → 7.3.6
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 +16 -0
- data/bin/sidekiqload +21 -12
- data/lib/active_job/queue_adapters/sidekiq_adapter.rb +1 -1
- data/lib/sidekiq/api.rb +52 -29
- data/lib/sidekiq/cli.rb +1 -1
- data/lib/sidekiq/job_logger.rb +10 -20
- data/lib/sidekiq/middleware/current_attributes.rb +16 -1
- data/lib/sidekiq/rails.rb +2 -6
- data/lib/sidekiq/version.rb +1 -1
- data/lib/sidekiq/web/application.rb +32 -50
- data/web/assets/stylesheets/application.css +5 -0
- data/web/locales/it.yml +32 -1
- data/web/views/filtering.erb +1 -2
- data/web/views/metrics.erb +1 -2
- metadata +3 -3
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6c9bd0a03b27535a34a0525397e84c429a9332e6754dba43c088558ab8f362e9
|
4
|
+
data.tar.gz: '08fee2db2d83996d1df6f78e7eb9a226cb98d951cba336dd422771f9127cf95a'
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f4876eb7594d0c87e4dba08a752dbcb65bbf45ae8213fb9b9ee6a1e12d7a48750c161ffe632f3b13eacfed73de3c3c73a9dc06a2548ddf7e5f6dde0f7de161bd
|
7
|
+
data.tar.gz: a0f485adef4ba6751114daf0d2c1d509966d530bc620e00ebf17a9c244f1eb0821ae5e8214d88d3652106d932cae7acfd2b66874647acc8c33fe6ec2e3b9d691
|
data/Changes.md
CHANGED
@@ -2,6 +2,22 @@
|
|
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
|
+
7.3.6
|
6
|
+
----------
|
7
|
+
|
8
|
+
- Forward compatibility fixes for Ruby 3.4
|
9
|
+
- Filtering in the Web UI now works via GET so you can bookmark a filtered view. [#6497]
|
10
|
+
|
11
|
+
7.3.5
|
12
|
+
----------
|
13
|
+
|
14
|
+
- Reimplement `retry_all` and `kill_all` API methods to use ZPOPMIN,
|
15
|
+
approximately 30-60% faster. [#6481]
|
16
|
+
- Add preload testing binary at `examples/testing/sidekiq_boot` to verify your Rails app boots correctly with Sidekiq Enterprise's app preloading.
|
17
|
+
- Fix circular require with ActiveJob adapter [#6477]
|
18
|
+
- Fix potential race condition leading to incorrect serialized values for CurrentAttributes [#6475]
|
19
|
+
- Restore missing elapsed time when default job logging is disabled
|
20
|
+
|
5
21
|
7.3.4
|
6
22
|
----------
|
7
23
|
|
data/bin/sidekiqload
CHANGED
@@ -50,7 +50,7 @@ if ENV["AJ"]
|
|
50
50
|
ActiveJob::Base.logger.level = Logger::WARN
|
51
51
|
|
52
52
|
class LoadJob < ActiveJob::Base
|
53
|
-
def perform(idx, ts = nil)
|
53
|
+
def perform(string, idx, hash, ts = nil)
|
54
54
|
puts(Time.now.to_f - ts) if !ts.nil?
|
55
55
|
end
|
56
56
|
end
|
@@ -58,12 +58,21 @@ end
|
|
58
58
|
|
59
59
|
class LoadWorker
|
60
60
|
include Sidekiq::Job
|
61
|
+
$count = 0
|
62
|
+
$lock = Mutex.new
|
63
|
+
|
61
64
|
sidekiq_options retry: 1
|
62
65
|
sidekiq_retry_in do |x|
|
63
66
|
1
|
64
67
|
end
|
65
68
|
|
66
|
-
def perform(idx, ts = nil)
|
69
|
+
def perform(string, idx, hash, ts = nil)
|
70
|
+
$lock.synchronize do
|
71
|
+
$count += 1
|
72
|
+
if $count % 100_000 == 0
|
73
|
+
logger.warn("#{Time.now} Done #{$count}")
|
74
|
+
end
|
75
|
+
end
|
67
76
|
puts(Time.now.to_f - ts) if !ts.nil?
|
68
77
|
# raise idx.to_s if idx % 100 == 1
|
69
78
|
end
|
@@ -133,13 +142,13 @@ class Loader
|
|
133
142
|
start = Time.now
|
134
143
|
if ENV["AJ"]
|
135
144
|
@iter.times do
|
136
|
-
@count.times do |idx|
|
137
|
-
LoadJob.
|
138
|
-
end
|
145
|
+
ActiveJob.perform_all_later(@count.times.map do |idx|
|
146
|
+
LoadJob.new("mike", idx, {mike: "bob"})
|
147
|
+
end)
|
139
148
|
end
|
140
149
|
else
|
141
150
|
@iter.times do
|
142
|
-
arr = Array.new(@count) { |idx| [idx] }
|
151
|
+
arr = Array.new(@count) { |idx| ["string", idx, {"mike" => "bob"}] }
|
143
152
|
Sidekiq::Client.push_bulk("class" => LoadWorker, "args" => arr)
|
144
153
|
end
|
145
154
|
end
|
@@ -163,13 +172,13 @@ class Loader
|
|
163
172
|
Sidekiq.logger.error("Now here's the latency for three jobs")
|
164
173
|
|
165
174
|
if ENV["AJ"]
|
166
|
-
LoadJob.perform_later(1, Time.now.to_f)
|
167
|
-
LoadJob.perform_later(2, Time.now.to_f)
|
168
|
-
LoadJob.perform_later(3, Time.now.to_f)
|
175
|
+
LoadJob.perform_later("", 1, {}, Time.now.to_f)
|
176
|
+
LoadJob.perform_later("", 2, {}, Time.now.to_f)
|
177
|
+
LoadJob.perform_later("", 3, {}, Time.now.to_f)
|
169
178
|
else
|
170
|
-
LoadWorker.perform_async(1, Time.now.to_f)
|
171
|
-
LoadWorker.perform_async(2, Time.now.to_f)
|
172
|
-
LoadWorker.perform_async(3, Time.now.to_f)
|
179
|
+
LoadWorker.perform_async("", 1, {}, Time.now.to_f)
|
180
|
+
LoadWorker.perform_async("", 2, {}, Time.now.to_f)
|
181
|
+
LoadWorker.perform_async("", 3, {}, Time.now.to_f)
|
173
182
|
end
|
174
183
|
|
175
184
|
sleep 0.1
|
@@ -16,7 +16,7 @@ end
|
|
16
16
|
module ActiveJob
|
17
17
|
module QueueAdapters
|
18
18
|
# Explicitly remove the implementation existing in older rails'.
|
19
|
-
remove_const(:SidekiqAdapter) if
|
19
|
+
remove_const(:SidekiqAdapter) if const_defined?(:SidekiqAdapter)
|
20
20
|
|
21
21
|
# Sidekiq adapter for Active Job
|
22
22
|
#
|
data/lib/sidekiq/api.rb
CHANGED
@@ -668,6 +668,41 @@ module Sidekiq
|
|
668
668
|
end
|
669
669
|
end
|
670
670
|
|
671
|
+
def pop_each
|
672
|
+
Sidekiq.redis do |c|
|
673
|
+
size.times do
|
674
|
+
data, score = c.zpopmin(name, 1)&.first
|
675
|
+
break unless data
|
676
|
+
yield data, score
|
677
|
+
end
|
678
|
+
end
|
679
|
+
end
|
680
|
+
|
681
|
+
def retry_all
|
682
|
+
c = Sidekiq::Client.new
|
683
|
+
pop_each do |msg, _|
|
684
|
+
job = Sidekiq.load_json(msg)
|
685
|
+
# Manual retries should not count against the retry limit.
|
686
|
+
job["retry_count"] -= 1 if job["retry_count"]
|
687
|
+
c.push(job)
|
688
|
+
end
|
689
|
+
end
|
690
|
+
|
691
|
+
# Move all jobs from this Set to the Dead Set.
|
692
|
+
# See DeadSet#kill
|
693
|
+
def kill_all(notify_failure: false, ex: nil)
|
694
|
+
ds = DeadSet.new
|
695
|
+
opts = {notify_failure: notify_failure, ex: ex, trim: false}
|
696
|
+
|
697
|
+
begin
|
698
|
+
pop_each do |msg, _|
|
699
|
+
ds.kill(msg, opts)
|
700
|
+
end
|
701
|
+
ensure
|
702
|
+
ds.trim
|
703
|
+
end
|
704
|
+
end
|
705
|
+
|
671
706
|
def each
|
672
707
|
initial_size = @_size
|
673
708
|
offset_size = 0
|
@@ -765,10 +800,6 @@ module Sidekiq
|
|
765
800
|
|
766
801
|
##
|
767
802
|
# The set of scheduled jobs within Sidekiq.
|
768
|
-
# Based on this, you can search/filter for jobs. Here's an
|
769
|
-
# example where I'm selecting jobs based on some complex logic
|
770
|
-
# and deleting them from the scheduled set.
|
771
|
-
#
|
772
803
|
# See the API wiki page for usage notes and examples.
|
773
804
|
#
|
774
805
|
class ScheduledSet < JobSet
|
@@ -779,26 +810,12 @@ module Sidekiq
|
|
779
810
|
|
780
811
|
##
|
781
812
|
# The set of retries within Sidekiq.
|
782
|
-
# Based on this, you can search/filter for jobs. Here's an
|
783
|
-
# example where I'm selecting all jobs of a certain type
|
784
|
-
# and deleting them from the retry queue.
|
785
|
-
#
|
786
813
|
# See the API wiki page for usage notes and examples.
|
787
814
|
#
|
788
815
|
class RetrySet < JobSet
|
789
816
|
def initialize
|
790
817
|
super("retry")
|
791
818
|
end
|
792
|
-
|
793
|
-
# Enqueues all jobs pending within the retry set.
|
794
|
-
def retry_all
|
795
|
-
each(&:retry) while size > 0
|
796
|
-
end
|
797
|
-
|
798
|
-
# Kills all jobs pending within the retry set.
|
799
|
-
def kill_all
|
800
|
-
each(&:kill) while size > 0
|
801
|
-
end
|
802
819
|
end
|
803
820
|
|
804
821
|
##
|
@@ -811,20 +828,31 @@ module Sidekiq
|
|
811
828
|
super("dead")
|
812
829
|
end
|
813
830
|
|
831
|
+
# Trim dead jobs which are over our storage limits
|
832
|
+
def trim
|
833
|
+
hash = Sidekiq.default_configuration
|
834
|
+
now = Time.now.to_f
|
835
|
+
Sidekiq.redis do |conn|
|
836
|
+
conn.multi do |transaction|
|
837
|
+
transaction.zremrangebyscore(name, "-inf", now - hash[:dead_timeout_in_seconds])
|
838
|
+
transaction.zremrangebyrank(name, 0, - hash[:dead_max_jobs])
|
839
|
+
end
|
840
|
+
end
|
841
|
+
end
|
842
|
+
|
814
843
|
# Add the given job to the Dead set.
|
815
844
|
# @param message [String] the job data as JSON
|
816
|
-
# @option opts [Boolean] :notify_failure
|
845
|
+
# @option opts [Boolean] :notify_failure (true) Whether death handlers should be called
|
846
|
+
# @option opts [Boolean] :trim (true) Whether Sidekiq should trim the structure to keep it within configuration
|
817
847
|
# @option opts [Exception] :ex (RuntimeError) An exception to pass to the death handlers
|
818
848
|
def kill(message, opts = {})
|
819
849
|
now = Time.now.to_f
|
820
850
|
Sidekiq.redis do |conn|
|
821
|
-
conn.
|
822
|
-
transaction.zadd(name, now.to_s, message)
|
823
|
-
transaction.zremrangebyscore(name, "-inf", now - Sidekiq::Config::DEFAULTS[:dead_timeout_in_seconds])
|
824
|
-
transaction.zremrangebyrank(name, 0, - Sidekiq::Config::DEFAULTS[:dead_max_jobs])
|
825
|
-
end
|
851
|
+
conn.zadd(name, now.to_s, message)
|
826
852
|
end
|
827
853
|
|
854
|
+
trim if opts[:trim] != false
|
855
|
+
|
828
856
|
if opts[:notify_failure] != false
|
829
857
|
job = Sidekiq.load_json(message)
|
830
858
|
if opts[:ex]
|
@@ -839,11 +867,6 @@ module Sidekiq
|
|
839
867
|
end
|
840
868
|
true
|
841
869
|
end
|
842
|
-
|
843
|
-
# Enqueue all dead jobs
|
844
|
-
def retry_all
|
845
|
-
each(&:retry) while size > 0
|
846
|
-
end
|
847
870
|
end
|
848
871
|
|
849
872
|
##
|
data/lib/sidekiq/cli.rb
CHANGED
@@ -101,7 +101,7 @@ module Sidekiq # :nodoc:
|
|
101
101
|
# Touch middleware so it isn't lazy loaded by multiple threads, #3043
|
102
102
|
@config.server_middleware
|
103
103
|
|
104
|
-
::Process.warmup if warmup && ::Process.respond_to?(:warmup)
|
104
|
+
::Process.warmup if warmup && ::Process.respond_to?(:warmup) && ENV["RUBY_DISABLE_WARMUP"] != "1"
|
105
105
|
|
106
106
|
# Before this point, the process is initializing with just the main thread.
|
107
107
|
# Starting here the process will now have multiple threads running.
|
data/lib/sidekiq/job_logger.rb
CHANGED
@@ -5,31 +5,21 @@ module Sidekiq
|
|
5
5
|
def initialize(config)
|
6
6
|
@config = config
|
7
7
|
@logger = @config.logger
|
8
|
-
|
9
|
-
|
10
|
-
# If true we won't do any job logging out of the box.
|
11
|
-
# The user is responsible for any logging.
|
12
|
-
def skip_default_logging?
|
13
|
-
@config[:skip_default_job_logging]
|
8
|
+
@skip = !!@config[:skip_default_job_logging]
|
14
9
|
end
|
15
10
|
|
16
11
|
def call(item, queue)
|
17
|
-
|
18
|
-
|
19
|
-
begin
|
20
|
-
start = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC)
|
21
|
-
@logger.info("start")
|
12
|
+
start = ::Process.clock_gettime(::Process::CLOCK_MONOTONIC)
|
13
|
+
@logger.info { "start" } unless @skip
|
22
14
|
|
23
|
-
|
24
|
-
|
25
|
-
Sidekiq::Context.add(:elapsed, elapsed(start))
|
26
|
-
@logger.info("done")
|
27
|
-
rescue Exception
|
28
|
-
Sidekiq::Context.add(:elapsed, elapsed(start))
|
29
|
-
@logger.info("fail")
|
15
|
+
yield
|
30
16
|
|
31
|
-
|
32
|
-
|
17
|
+
Sidekiq::Context.add(:elapsed, elapsed(start))
|
18
|
+
@logger.info { "done" } unless @skip
|
19
|
+
rescue Exception
|
20
|
+
Sidekiq::Context.add(:elapsed, elapsed(start))
|
21
|
+
@logger.info { "fail" } unless @skip
|
22
|
+
raise
|
33
23
|
end
|
34
24
|
|
35
25
|
def prepare(job_hash, &block)
|
@@ -33,11 +33,26 @@ module Sidekiq
|
|
33
33
|
attrs = strklass.constantize.attributes
|
34
34
|
# Retries can push the job N times, we don't
|
35
35
|
# want retries to reset cattr. #5692, #5090
|
36
|
-
|
36
|
+
if attrs.any?
|
37
|
+
# Older rails has a bug that `CurrentAttributes#attributes` always returns
|
38
|
+
# the same hash instance. We need to dup it to avoid being accidentally mutated.
|
39
|
+
job[key] = if returns_same_object?
|
40
|
+
attrs.dup
|
41
|
+
else
|
42
|
+
attrs
|
43
|
+
end
|
44
|
+
end
|
37
45
|
end
|
38
46
|
end
|
39
47
|
yield
|
40
48
|
end
|
49
|
+
|
50
|
+
private
|
51
|
+
|
52
|
+
def returns_same_object?
|
53
|
+
ActiveSupport::VERSION::MAJOR < 8 ||
|
54
|
+
(ActiveSupport::VERSION::MAJOR == 8 && ActiveSupport::VERSION::MINOR == 0)
|
55
|
+
end
|
41
56
|
end
|
42
57
|
|
43
58
|
class Load
|
data/lib/sidekiq/rails.rb
CHANGED
@@ -3,12 +3,6 @@
|
|
3
3
|
require "sidekiq/job"
|
4
4
|
require "rails"
|
5
5
|
|
6
|
-
begin
|
7
|
-
require "active_job"
|
8
|
-
require "active_job/queue_adapters/sidekiq_adapter"
|
9
|
-
rescue LoadError
|
10
|
-
end
|
11
|
-
|
12
6
|
module Sidekiq
|
13
7
|
class Rails < ::Rails::Engine
|
14
8
|
class Reloader
|
@@ -45,6 +39,8 @@ module Sidekiq
|
|
45
39
|
# end
|
46
40
|
initializer "sidekiq.active_job_integration" do
|
47
41
|
ActiveSupport.on_load(:active_job) do
|
42
|
+
require "active_job/queue_adapters/sidekiq_adapter"
|
43
|
+
|
48
44
|
include ::Sidekiq::Job::Options unless respond_to?(:sidekiq_options)
|
49
45
|
end
|
50
46
|
end
|
data/lib/sidekiq/version.rb
CHANGED
@@ -67,11 +67,15 @@ module Sidekiq
|
|
67
67
|
end
|
68
68
|
|
69
69
|
get "/metrics" do
|
70
|
+
x = params[:substr]
|
71
|
+
class_filter = (x.nil? || x == "") ? nil : Regexp.new(Regexp.escape(x), Regexp::IGNORECASE)
|
72
|
+
|
70
73
|
q = Sidekiq::Metrics::Query.new
|
71
74
|
@period = h((params[:period] || "")[0..1])
|
72
75
|
@periods = METRICS_PERIODS
|
73
76
|
minutes = @periods.fetch(@period, @periods.values.first)
|
74
|
-
@query_result = q.top_jobs(minutes: minutes)
|
77
|
+
@query_result = q.top_jobs(minutes: minutes, class_filter: class_filter)
|
78
|
+
|
75
79
|
erb(:metrics)
|
76
80
|
end
|
77
81
|
|
@@ -153,9 +157,15 @@ module Sidekiq
|
|
153
157
|
end
|
154
158
|
|
155
159
|
get "/morgue" do
|
156
|
-
|
157
|
-
|
158
|
-
|
160
|
+
x = params[:substr]
|
161
|
+
|
162
|
+
if x && x != ""
|
163
|
+
@dead = search(Sidekiq::DeadSet.new, x)
|
164
|
+
else
|
165
|
+
@count = (params["count"] || 25).to_i
|
166
|
+
(@current_page, @total_size, @dead) = page("dead", params["page"], @count, reverse: true)
|
167
|
+
@dead = @dead.map { |msg, score| Sidekiq::SortedEntry.new(nil, score, msg) }
|
168
|
+
end
|
159
169
|
|
160
170
|
erb(:morgue)
|
161
171
|
end
|
@@ -207,9 +217,15 @@ module Sidekiq
|
|
207
217
|
end
|
208
218
|
|
209
219
|
get "/retries" do
|
210
|
-
|
211
|
-
|
212
|
-
|
220
|
+
x = params[:substr]
|
221
|
+
|
222
|
+
if x && x != ""
|
223
|
+
@retries = search(Sidekiq::RetrySet.new, x)
|
224
|
+
else
|
225
|
+
@count = (params["count"] || 25).to_i
|
226
|
+
(@current_page, @total_size, @retries) = page("retry", params["page"], @count)
|
227
|
+
@retries = @retries.map { |msg, score| Sidekiq::SortedEntry.new(nil, score, msg) }
|
228
|
+
end
|
213
229
|
|
214
230
|
erb(:retries)
|
215
231
|
end
|
@@ -262,9 +278,15 @@ module Sidekiq
|
|
262
278
|
end
|
263
279
|
|
264
280
|
get "/scheduled" do
|
265
|
-
|
266
|
-
|
267
|
-
|
281
|
+
x = params[:substr]
|
282
|
+
|
283
|
+
if x && x != ""
|
284
|
+
@scheduled = search(Sidekiq::ScheduledSet.new, x)
|
285
|
+
else
|
286
|
+
@count = (params["count"] || 25).to_i
|
287
|
+
(@current_page, @total_size, @scheduled) = page("schedule", params["page"], @count)
|
288
|
+
@scheduled = @scheduled.map { |msg, score| Sidekiq::SortedEntry.new(nil, score, msg) }
|
289
|
+
end
|
268
290
|
|
269
291
|
erb(:scheduled)
|
270
292
|
end
|
@@ -328,46 +350,6 @@ module Sidekiq
|
|
328
350
|
json Sidekiq::Stats.new.queues
|
329
351
|
end
|
330
352
|
|
331
|
-
########
|
332
|
-
# Filtering
|
333
|
-
|
334
|
-
route :get, :post, "/filter/metrics" do
|
335
|
-
x = params[:substr]
|
336
|
-
return redirect "#{root_path}metrics" unless x && x != ""
|
337
|
-
|
338
|
-
q = Sidekiq::Metrics::Query.new
|
339
|
-
@period = h((params[:period] || "")[0..1])
|
340
|
-
@periods = METRICS_PERIODS
|
341
|
-
minutes = @periods.fetch(@period, @periods.values.first)
|
342
|
-
@query_result = q.top_jobs(minutes: minutes, class_filter: Regexp.new(Regexp.escape(x), Regexp::IGNORECASE))
|
343
|
-
|
344
|
-
erb :metrics
|
345
|
-
end
|
346
|
-
|
347
|
-
route :get, :post, "/filter/retries" do
|
348
|
-
x = params[:substr]
|
349
|
-
return redirect "#{root_path}retries" unless x && x != ""
|
350
|
-
|
351
|
-
@retries = search(Sidekiq::RetrySet.new, params[:substr])
|
352
|
-
erb :retries
|
353
|
-
end
|
354
|
-
|
355
|
-
route :get, :post, "/filter/scheduled" do
|
356
|
-
x = params[:substr]
|
357
|
-
return redirect "#{root_path}scheduled" unless x && x != ""
|
358
|
-
|
359
|
-
@scheduled = search(Sidekiq::ScheduledSet.new, params[:substr])
|
360
|
-
erb :scheduled
|
361
|
-
end
|
362
|
-
|
363
|
-
route :get, :post, "/filter/dead" do
|
364
|
-
x = params[:substr]
|
365
|
-
return redirect "#{root_path}morgue" unless x && x != ""
|
366
|
-
|
367
|
-
@dead = search(Sidekiq::DeadSet.new, params[:substr])
|
368
|
-
erb :morgue
|
369
|
-
end
|
370
|
-
|
371
353
|
post "/change_locale" do
|
372
354
|
locale = params["locale"]
|
373
355
|
|
data/web/locales/it.yml
CHANGED
@@ -6,44 +6,60 @@ it:
|
|
6
6
|
AreYouSureDeleteJob: Sei sicuro di voler cancellare questo lavoro?
|
7
7
|
AreYouSureDeleteQueue: Sei sicuro di voler cancellare la coda %{queue}?
|
8
8
|
Arguments: Argomenti
|
9
|
+
BackToApp: Torna all'App
|
9
10
|
Busy: Occupato
|
10
11
|
Class: Classe
|
11
12
|
Connections: Connessioni
|
13
|
+
CreatedAt: Creato il
|
12
14
|
CurrentMessagesInQueue: Messaggi in <span class='title'>%{queue}</span>
|
13
15
|
Dashboard: Dashboard
|
14
16
|
Dead: Arrestato
|
15
17
|
DeadJobs: Lavori arrestati
|
16
18
|
Delete: Cancella
|
17
19
|
DeleteAll: Cancella tutti
|
20
|
+
Deploy: Distribuire
|
18
21
|
Enqueued: In coda
|
19
22
|
Error: Errore
|
20
23
|
ErrorBacktrace: Backtrace dell'errore
|
21
24
|
ErrorClass: Classe dell'errore
|
22
25
|
ErrorMessage: Messaggio di errore
|
26
|
+
ExecutionTime: Tempo di esecuzione
|
23
27
|
Extras: Extra
|
24
28
|
Failed: Fallito
|
25
29
|
Failures: Fallimenti
|
30
|
+
Failure: Fallimento
|
26
31
|
GoBack: ← Indietro
|
27
32
|
History: Storia
|
28
33
|
Job: Lavoro
|
29
34
|
Jobs: Lavori
|
30
35
|
Kill: Uccidere
|
36
|
+
KillAll: Uccidere tutti
|
31
37
|
LastRetry: Ultimo tentativo
|
38
|
+
Latency: Latenza
|
32
39
|
LivePoll: Live poll
|
33
40
|
MemoryUsage: Memoria utilizzata
|
41
|
+
Name: Nome
|
34
42
|
Namespace: Namespace
|
35
43
|
NextRetry: Prossimo tentativo
|
36
44
|
NoDeadJobsFound: Non ci sono lavori arrestati
|
37
45
|
NoRetriesFound: Non sono stati trovati nuovi tentativi
|
38
46
|
NoScheduledFound: Non ci sono lavori pianificati
|
47
|
+
NotYetEnqueued: Non ancora in coda
|
39
48
|
OneMonth: 1 mese
|
40
49
|
OneWeek: 1 settimana
|
41
50
|
OriginallyFailed: Primo fallimento
|
51
|
+
Pause: Metti in pausa
|
52
|
+
Paused: In pausa
|
42
53
|
PeakMemoryUsage: Memoria utilizzata (max.)
|
54
|
+
Plugins: Plugins
|
55
|
+
PollingInterval: Intervallo di polling
|
56
|
+
Process: Processo
|
43
57
|
Processed: Processato
|
44
58
|
Processes: Processi
|
45
59
|
Queue: Coda
|
46
60
|
Queues: Code
|
61
|
+
Quiet: Silenzia
|
62
|
+
QuietAll: Silenzia Tutti
|
47
63
|
Realtime: Tempo reale
|
48
64
|
Retries: Nuovi tentativi
|
49
65
|
RetryAll: Riprova tutti
|
@@ -51,19 +67,34 @@ it:
|
|
51
67
|
RetryNow: Riprova
|
52
68
|
Scheduled: Pianificato
|
53
69
|
ScheduledJobs: Lavori pianificati
|
70
|
+
Seconds: Secondi
|
54
71
|
ShowAll: Mostra tutti
|
55
72
|
SixMonths: 6 mesi
|
56
73
|
Size: Dimensione
|
57
74
|
Started: Iniziato
|
58
75
|
Status: Stato
|
76
|
+
Stop: Ferma
|
77
|
+
StopAll: Ferma Tutti
|
59
78
|
StopPolling: Ferma il polling
|
79
|
+
Success: Successo
|
80
|
+
Summary: Riepilogo
|
60
81
|
Thread: Thread
|
61
|
-
Threads:
|
82
|
+
Threads: Threads
|
62
83
|
ThreeMonths: 3 mesi
|
63
84
|
Time: Ora
|
85
|
+
Unpause: Riattiva
|
64
86
|
Uptime: Uptime (giorni)
|
87
|
+
Utilization: Utilizzo
|
65
88
|
Version: Versione
|
66
89
|
When: Quando
|
67
90
|
Worker: Lavoratore
|
68
91
|
active: attivo
|
69
92
|
idle: inattivo
|
93
|
+
Metrics: Metriche
|
94
|
+
NoDataFound: Nessun dato trovato
|
95
|
+
TotalExecutionTime: Tempo totale di esecuzione
|
96
|
+
AvgExecutionTime: Tempo medio di esecuzione
|
97
|
+
Context: Contesto
|
98
|
+
NoJobMetricsFound: Metriche recenti di lavoro non trovate
|
99
|
+
Filter: Filtro
|
100
|
+
AnyJobContent: Qualsiasi contenuto di lavoro
|
data/web/views/filtering.erb
CHANGED
@@ -1,6 +1,5 @@
|
|
1
1
|
<div>
|
2
|
-
<form method="
|
3
|
-
<%= csrf_tag %>
|
2
|
+
<form method="get" class="form-inline" action='<%= root_path %><%= which %>'>
|
4
3
|
<label for="substr"><%= t('Filter') %></label>
|
5
4
|
<input class="search form-control" type="search" name="substr" value="<%= h params[:substr] %>" placeholder="<%= t('AnyJobContent') %>"/>
|
6
5
|
</form>
|
data/web/views/metrics.erb
CHANGED
@@ -9,8 +9,7 @@
|
|
9
9
|
</div>
|
10
10
|
|
11
11
|
<div>
|
12
|
-
<form id="metrics-form" class="form-inline" action="<%= root_path %>
|
13
|
-
<%= csrf_tag %>
|
12
|
+
<form id="metrics-form" class="form-inline" action="<%= root_path %>metrics" method="get">
|
14
13
|
<label for="substr"><%= t('Filter') %></label>
|
15
14
|
<input id="class-filter" class="form-control" type="text" name="substr" placeholder="<%= t('Name') %>" value="<%= h params[:substr] %>">
|
16
15
|
<select id="period-selector" class="form-control" name="period">
|
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.3.
|
4
|
+
version: 7.3.6
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Mike Perham
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2024-
|
11
|
+
date: 2024-11-20 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: redis-client
|
@@ -232,7 +232,7 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
232
232
|
- !ruby/object:Gem::Version
|
233
233
|
version: '0'
|
234
234
|
requirements: []
|
235
|
-
rubygems_version: 3.5.
|
235
|
+
rubygems_version: 3.5.16
|
236
236
|
signing_key:
|
237
237
|
specification_version: 4
|
238
238
|
summary: Simple, efficient background processing for Ruby
|