From 47e5eaf2cbb40aa177fe4baa11d972042bb5d2e9 Mon Sep 17 00:00:00 2001 From: Ben Garcia Date: Tue, 6 Aug 2024 19:44:59 -0400 Subject: [PATCH] Respect Differences in ActiveJob/GoodJob API --- lib/scout_apm.rb | 1 + lib/scout_apm/background_job_integrations/good_job.rb | 7 ++++--- 2 files changed, 5 insertions(+), 3 deletions(-) diff --git a/lib/scout_apm.rb b/lib/scout_apm.rb index 14ce78a5..f3ba0d06 100644 --- a/lib/scout_apm.rb +++ b/lib/scout_apm.rb @@ -67,6 +67,7 @@ module ScoutApm require 'scout_apm/background_job_integrations/sneakers' require 'scout_apm/background_job_integrations/que' require 'scout_apm/background_job_integrations/legacy_sneakers' +require 'scout_apm/background_job_integrations/good_job' require 'scout_apm/framework_integrations/rails_2' require 'scout_apm/framework_integrations/rails_3_or_4' diff --git a/lib/scout_apm/background_job_integrations/good_job.rb b/lib/scout_apm/background_job_integrations/good_job.rb index 2ffd5aee..16433044 100644 --- a/lib/scout_apm/background_job_integrations/good_job.rb +++ b/lib/scout_apm/background_job_integrations/good_job.rb @@ -1,6 +1,7 @@ module ScoutApm module BackgroundJobIntegrations class GoodJob + UNKNOWN_QUEUE_PLACEHOLDER = 'default'.freeze attr_reader :logger def initialize(logger) @@ -29,13 +30,13 @@ def install # Maybe hook into GoodJob lifecycle events? ScoutApm::Agent.instance.start_background_worker unless ScoutApm::Agent.instance.background_worker_running? req = ScoutApm::RequestManager.lookup - latency = Time.now - job.scheduled_at rescue 0 + latency = Time.now - (job.scheduled_at || job.enqueued_at) rescue 0 req.annotate_request(queue_latency: latency) begin - req.start_layer ScoutApm::Layer.new("Queue", job.queue_name) + req.start_layer ScoutApm::Layer.new("Queue", job.queue_name.presence || UNKNOWN_QUEUE_PLACEHOLDER) started_queue = true # Following Convention - req.start_layer ScoutApm::Layer.new("Job", job.job_class) + req.start_layer ScoutApm::Layer.new("Job", job.class.name) started_job = true # Following Convention block.call