DEV: Add :sidekiq_job_error DiscourseEvent (#32307)

This commit adds a `:sidekiq_job_error` event which is
triggered when an error is encountered while running a Sidekiq job. The
intent of this change is to complement the `:sidekq_job_ran` event which
can be used with the `:sidekiq_job_error` event to calculate the error
rate for each job.
This commit is contained in:
Alan Guo Xiang Tan
2025-04-17 15:41:58 +08:00
committed by GitHub
parent 63f7755123
commit 918aa0fbec
4 changed files with 84 additions and 6 deletions

View File

@ -0,0 +1,24 @@
# frozen_string_literal: true
class Sidekiq::DiscourseEvent
def call(worker, msg, queue)
start_time = clock_gettime
result = yield
trigger_discourse_event(event_name: :sidekiq_job_ran, worker:, msg:, queue:, start_time:)
result
rescue => error
trigger_discourse_event(event_name: :sidekiq_job_error, worker:, msg:, queue:, start_time:)
raise error
end
private
def trigger_discourse_event(event_name:, worker:, msg:, queue:, start_time:)
duration = clock_gettime - start_time
DiscourseEvent.trigger(event_name, worker, msg, queue, duration)
end
def clock_gettime
Process.clock_gettime(Process::CLOCK_MONOTONIC)
end
end