mirror of
https://github.com/discourse/discourse.git
synced 2025-05-25 09:57:25 +08:00
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:

committed by
GitHub

parent
63f7755123
commit
918aa0fbec
24
lib/sidekiq/discourse_event.rb
Normal file
24
lib/sidekiq/discourse_event.rb
Normal 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
|
Reference in New Issue
Block a user