debian-mirror-gitlab/lib/gitlab/database/queue_error_handling_concern.rb

Ignoring revisions in .git-blame-ignore-revs. Click here to bypass and see the normal blame view.

33 lines
711 B
Ruby
Raw Normal View History

2023-04-23 21:23:45 +05:30
# frozen_string_literal: true
module Gitlab
module Database
module QueueErrorHandlingConcern
extend ActiveSupport::Concern
MAX_LAST_ERROR_LENGTH = 10_000
included do
validates :last_error, length: { maximum: MAX_LAST_ERROR_LENGTH },
if: ->(record) { record.respond_to?(:last_error) }
end
def handle_exception!(error)
transaction do
increment!(:attempts)
update!(last_error: format_last_error(error))
end
end
private
def format_last_error(error)
[error.message]
.concat(error.backtrace)
.join("\n")
.truncate(MAX_LAST_ERROR_LENGTH)
end
end
end
end