mirror of
https://github.com/discourse/discourse.git
synced 2025-08-20 18:52:44 +08:00
25 lines
674 B
Ruby
25 lines
674 B
Ruby
|
# 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
|