Skip to content

Commit 5621a09

Browse files
authored
Merge pull request rails#54883 from zzak/aj-perform-error-backtrace-cleaner
Clean backtrace from Active Job perform exceptions
2 parents 4ee7909 + c77265c commit 5621a09

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

activejob/lib/active_job/log_subscriber.rb

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -87,8 +87,9 @@ def perform(event)
8787
job = event.payload[:job]
8888
ex = event.payload[:exception_object]
8989
if ex
90+
cleaned_backtrace = backtrace_cleaner.clean(ex.backtrace)
9091
error do
91-
"Error performing #{job.class.name} (Job ID: #{job.job_id}) from #{queue_name(event)} in #{event.duration.round(2)}ms: #{ex.class} (#{ex.message}):\n" + Array(ex.backtrace).join("\n")
92+
"Error performing #{job.class.name} (Job ID: #{job.job_id}) from #{queue_name(event)} in #{event.duration.round(2)}ms: #{ex.class} (#{ex.message}):\n" + Array(cleaned_backtrace).join("\n")
9293
end
9394
elsif event.payload[:aborted]
9495
error do

activejob/test/cases/logging_test.rb

Lines changed: 12 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -284,6 +284,18 @@ def test_job_error_logging
284284
end
285285
end
286286

287+
def test_job_error_logging_backtrace_cleaner
288+
perform_enqueued_jobs do
289+
assert_raises(RescueJob::OtherError) do
290+
RescueJob.perform_later "other"
291+
end
292+
end
293+
294+
assert_match(/rescue_job\.rb:\d+:in .*perform'/, @logger.messages)
295+
assert_empty(@logger.messages.lines.grep(/minitest\//))
296+
assert_empty(@logger.messages.lines.grep(/gems\//))
297+
end
298+
287299
def test_job_no_error_logging_on_rescuable_job
288300
perform_enqueued_jobs { RescueJob.perform_later "david" }
289301
assert_match(/Performing RescueJob \(Job ID: .*?\) from .*? with arguments:.*david/, @logger.messages)

0 commit comments

Comments
 (0)