diff --git a/lib/sidekiq/api.rb b/lib/sidekiq/api.rb index 5338a748..4923fc77 100644 --- a/lib/sidekiq/api.rb +++ b/lib/sidekiq/api.rb @@ -93,6 +93,10 @@ module Sidekiq class Queue include Enumerable + def self.all + Sidekiq.redis {|c| c.smembers('queues') }.map {|q| Sidekiq::Queue.new(q) } + end + attr_reader :name def initialize(name="default") @@ -171,7 +175,7 @@ module Sidekiq end def enqueued_at - Time.at(@item['enqueued_at']) + Time.at(@item['enqueued_at'] || 0) end def queue diff --git a/lib/sidekiq/web.rb b/lib/sidekiq/web.rb index b1331c96..f96b2732 100644 --- a/lib/sidekiq/web.rb +++ b/lib/sidekiq/web.rb @@ -41,9 +41,7 @@ module Sidekiq def reset_worker_list Sidekiq.redis do |conn| workers = conn.smembers('workers') - workers.each do |name| - conn.srem('workers', name) - end + conn.srem('workers', *workers) end end @@ -104,13 +102,16 @@ module Sidekiq end def display_args(args, count=100) - args.map { |arg| a = arg.inspect; a.size > count ? "#{a[0..count]}..." : a }.join(", ") + args.map do |arg| + a = arg.inspect + a.size > count ? "#{a[0..count]}..." : a + end.join(", ") end RETRY_JOB_KEYS = Set.new(%w( queue class args retry_count retried_at failed_at jid error_message error_class backtrace - error_backtrace enqueued_at + error_backtrace enqueued_at retry )) def retry_extra_items(retry_job) @@ -158,7 +159,7 @@ module Sidekiq end get "/queues" do - @queues = Sidekiq::Stats.new.queues + @queues = Sidekiq::Queue.all slim :queues end diff --git a/web/views/queues.slim b/web/views/queues.slim index 1b930213..ceac0cfa 100644 --- a/web/views/queues.slim +++ b/web/views/queues.slim @@ -5,11 +5,11 @@ table class="queues table table-hover table-bordered table-striped table-white" th = t('Queue') th = t('Size') th = t('Actions') - - @queues.each do |queue, size| + - @queues.each do |queue| tr td - a href="#{root_path}queues/#{queue}" #{queue} - td= number_with_delimiter(size) + a href="#{root_path}queues/#{queue.name}" #{queue.name} + td= number_with_delimiter(queue.size) td width="20%" - form action="#{root_path}queues/#{queue}" method="post" - input.btn.btn-danger.btn-small type="submit" name="delete" value="#{t('Delete')}" data-confirm="#{t('AreYouSureDeleteQueue', :queue => queue)}" + form action="#{root_path}queues/#{queue.name}" method="post" + input.btn.btn-danger.btn-small type="submit" name="delete" value="#{t('Delete')}" data-confirm="#{t('AreYouSureDeleteQueue', :queue => queue.name)}" diff --git a/web/views/retry.slim b/web/views/retry.slim index e119fac8..f64687b5 100644 --- a/web/views/retry.slim +++ b/web/views/retry.slim @@ -19,11 +19,15 @@ table class="retry table table-bordered table-striped" th JID td code= @retry.jid + tr + th = t('Enqueued') + td== relative_time(@retry.enqueued_at) - unless retry_extra_items(@retry).empty? tr th = t('Extras') td - code= display_args(retry_extra_items(@retry), 1000) + code + = retry_extra_items(@retry).inspect - if @retry['retry_count'] > 0 tr th = t('RetryCount') @@ -37,7 +41,7 @@ table class="retry table table-bordered table-striped" td== relative_time(@retry['failed_at'].is_a?(Numeric) ? Time.at(@retry['failed_at']) : Time.parse(@retry['failed_at'])) tr th = t('NextRetry') - td== relative_time(Time.at(@retry.score)) + td== relative_time(@retry.at) h3 = t('Error') table class="error table table-bordered table-striped"