Class: Gitlab::Database::BackgroundOperation::Executor

Inherits:
Object
  • Object
show all
Defined in:
lib/gitlab/database/background_operation/executor.rb

Constant Summary collapse

SubBatchTimeoutError =
Class.new(StandardError)

Instance Method Summary collapse

Constructor Details

#initialize(connection:) ⇒ Executor

Returns a new instance of Executor.



9
10
11
# File 'lib/gitlab/database/background_operation/executor.rb', line 9

def initialize(connection:)
  @connection = connection
end

Instance Method Details

#perform(job) ⇒ Object



13
14
15
16
17
18
19
20
21
22
23
# File 'lib/gitlab/database/background_operation/executor.rb', line 13

def perform(job)
  job.run!
  execute_job(job)
  job.succeed!
rescue SubBatchTimeoutError => exception
  job.failure!(error: exception, from_sub_batch: true)
  raise SubBatchTimeoutError, exception
rescue Exception => error # rubocop:disable Lint/RescueException -- need to save any kind of error
  job.failure!(error: error)
  raise
end