26 lines
808 B
Ruby
26 lines
808 B
Ruby
![]() |
# frozen_string_literal: true
|
||
|
|
||
|
module Ci
|
||
|
class ArchiveTraceService
|
||
|
def execute(job)
|
||
|
job.trace.archive!
|
||
|
rescue ::Gitlab::Ci::Trace::AlreadyArchivedError
|
||
|
# It's already archived, thus we can safely ignore this exception.
|
||
|
rescue => e
|
||
|
archive_error(e, job)
|
||
|
end
|
||
|
|
||
|
private
|
||
|
|
||
|
def failed_archive_counter
|
||
|
@failed_archive_counter ||= Gitlab::Metrics.counter(:job_trace_archive_failed_total, "Counter of failed attempts of trace archiving")
|
||
|
end
|
||
|
|
||
|
def archive_error(error, job)
|
||
|
failed_archive_counter.increment
|
||
|
Gitlab::Sentry.track_exception(error, issue_url: 'https://gitlab.com/gitlab-org/gitlab-ce/issues/51502', extra: { job_id: job.id })
|
||
|
Rails.logger.error "Failed to archive trace. id: #{job.id} message: #{error.message}"
|
||
|
end
|
||
|
end
|
||
|
end
|