24 lines
		
	
	
		
			957 B
		
	
	
	
		
			Ruby
		
	
	
	
			
		
		
	
	
			24 lines
		
	
	
		
			957 B
		
	
	
	
		
			Ruby
		
	
	
	
# frozen_string_literal: true
 | 
						|
# 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
 |