Sha256: b4d52a0e5f60275a8e616f29744d7809521d77d5c9bcfb9beeb795bc4b7c84c5
Contents?: true
Size: 1.49 KB
Versions: 5
Compression:
Stored size: 1.49 KB
Contents
# frozen_string_literal: true module Yabeda module Sidekiq # Sidekiq worker middleware class ServerMiddleware # See https://github.com/mperham/sidekiq/discussions/4971 JOB_RECORD_CLASS = defined?(::Sidekiq::JobRecord) ? ::Sidekiq::JobRecord : ::Sidekiq::Job # rubocop: disable Metrics/AbcSize, Metrics/MethodLength: def call(worker, job, queue) custom_tags = Yabeda::Sidekiq.custom_tags(worker, job).to_h labels = Yabeda::Sidekiq.labelize(worker, job, queue).merge(custom_tags) start = Process.clock_gettime(Process::CLOCK_MONOTONIC) begin job_instance = JOB_RECORD_CLASS.new(job) Yabeda.sidekiq_job_latency.measure(labels, job_instance.latency) Yabeda::Sidekiq.jobs_started_at[labels][job["jid"]] = start Yabeda.with_tags(**custom_tags) do yield end Yabeda.sidekiq_jobs_success_total.increment(labels) rescue Exception # rubocop: disable Lint/RescueException Yabeda.sidekiq_jobs_failed_total.increment(labels) raise ensure Yabeda.sidekiq_job_runtime.measure(labels, elapsed(start)) Yabeda.sidekiq_jobs_executed_total.increment(labels) Yabeda::Sidekiq.jobs_started_at[labels].delete(job["jid"]) end end # rubocop: enable Metrics/AbcSize, Metrics/MethodLength: private def elapsed(start) (Process.clock_gettime(Process::CLOCK_MONOTONIC) - start).round(3) end end end end
Version data entries
5 entries across 5 versions & 1 rubygems