25 lines
991 B
Ruby
25 lines
991 B
Ruby
|
# frozen_string_literal: true
|
||
|
# rubocop:disable Metrics/AbcSize
|
||
|
# rubocop:disable Style/Documentation
|
||
|
|
||
|
module Gitlab
|
||
|
module BackgroundMigration
|
||
|
class ArchiveLegacyTraces
|
||
|
def perform(start_id, stop_id)
|
||
|
# This background migration directly refers to ::Ci::Build model which is defined in application code.
|
||
|
# In general, migration code should be isolated as much as possible in order to be idempotent.
|
||
|
# However, `archive!` method is too complicated to be replicated by coping its subsequent code.
|
||
|
# So we chose a way to use ::Ci::Build directly and we don't change the `archive!` method until 11.1
|
||
|
::Ci::Build.finished.without_archived_trace
|
||
|
.where(id: start_id..stop_id).find_each do |build|
|
||
|
begin
|
||
|
build.trace.archive!
|
||
|
rescue => e
|
||
|
Rails.logger.error "Failed to archive live trace. id: #{build.id} message: #{e.message}"
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|