diff --git a/.changesets/set-appsignal-transaction-namespace--action-name-and-some-tags-earlier-.md b/.changesets/set-appsignal-transaction-namespace--action-name-and-some-tags-earlier-.md new file mode 100644 index 000000000..bf444713f --- /dev/null +++ b/.changesets/set-appsignal-transaction-namespace--action-name-and-some-tags-earlier-.md @@ -0,0 +1,6 @@ +--- +bump: "patch" +type: "change" +--- + +Set the AppSignal transaction namespace, action name and some tags, before Active Job jobs are performed. This allows us to check what the namespace, action name and some tags are during the instrumentation itself. diff --git a/lib/appsignal/hooks/active_job.rb b/lib/appsignal/hooks/active_job.rb index 5101fd5b3..2a7139662 100644 --- a/lib/appsignal/hooks/active_job.rb +++ b/lib/appsignal/hooks/active_job.rb @@ -37,12 +37,6 @@ def execute(job) ) end - super - rescue Exception => exception # rubocop:disable Lint/RescueException - job_status = :failed - transaction.set_error(exception) - raise exception - ensure if transaction transaction.params = Appsignal::Utils::HashSanitizer.sanitize( @@ -59,6 +53,15 @@ def execute(job) transaction.set_tags(transaction_tags) transaction.set_action_if_nil(ActiveJobHelpers.action_name(job)) + end + + super + rescue Exception => exception # rubocop:disable Lint/RescueException + job_status = :failed + transaction.set_error(exception) + raise exception + ensure + if transaction enqueued_at = job["enqueued_at"] if enqueued_at # Present in Rails 6 and up transaction.set_queue_start((Time.parse(enqueued_at).to_f * 1_000).to_i)