class Statue::SidekiqStatistics::SidekiqMiddleware

Middleware for tracking common job run metrics

Public Instance Methods

call(worker, message, _queue) { || ... } click to toggle source
# File lib/statue/sidekiq_statistics.rb, line 41
def call(worker, message, _queue)
  job_metric_name = Statue::SidekiqStatistics.job_metric_name(worker, message)

  if message["retry_count"]
    # Count retried jobs
    Statue.report_increment("#{job_metric_name}.retry")
  else
    # Track latency for new jobs only (we can't know since when the failed job is waiting)
    enqueued_at = Time.at(message["enqueued_at"])
    Statue.report_duration("#{job_metric_name}.latency", Time.now - enqueued_at)
  end

  Statue.report_duration(job_metric_name) do
    Statue.report_success_or_failure(job_metric_name) do
      yield
      true # We only count exceptions as failure
    end
  end
end