6a18a411a3
Currently, pipeline schedule worker is unstable because it's sometimes killed by excessive memory consumption. In order to improve the performance, we add the following fixes: 1. next_run_at is always real_next_run, which means the value always takes into account of worker's cron schedule 1. Remove exlusive lock. This is already covered by real_next_run change. 1. Use RunPipelineScheduleWorker for avoiding memory killer. Memory consumption is spread to the multiple sidekiq worker.
14 lines
366 B
Ruby
14 lines
366 B
Ruby
# frozen_string_literal: true
|
|
|
|
class PipelineScheduleWorker
|
|
include ApplicationWorker
|
|
include CronjobQueue
|
|
|
|
def perform
|
|
Ci::PipelineSchedule.runnable_schedules.preloaded.find_in_batches do |schedules|
|
|
schedules.each do |schedule|
|
|
Ci::PipelineScheduleService.new(schedule.project, schedule.owner).execute(schedule)
|
|
end
|
|
end
|
|
end
|
|
end
|