Revert concurrent pipeline schedule creation

This commit reverts the previously introduced concurrent pipeline
schedule creation which was a viable solution for mitigating
inconsistent pipeline schedule by Sidekiq Memory Killer.
This commit is contained in:
Shinya Maeda 2019-06-18 18:45:37 +07:00
parent 6d68a3a254
commit 36b30cf18e
3 changed files with 49 additions and 1 deletions

View File

@ -7,7 +7,18 @@ module Ci
# Otherwise, multiple pipelines could be created in a short interval.
schedule.schedule_next_run!
RunPipelineScheduleWorker.perform_async(schedule.id, schedule.owner&.id)
if Feature.enabled?(:ci_pipeline_schedule_async)
RunPipelineScheduleWorker.perform_async(schedule.id, schedule.owner&.id)
else
begin
RunPipelineScheduleWorker.new.perform(schedule.id, schedule.owner&.id)
ensure
##
# This is the temporary solution for avoiding the memory bloat.
# See more https://gitlab.com/gitlab-org/gitlab-ce/issues/61955
GC.start if Feature.enabled?(:ci_pipeline_schedule_force_gc, default_enabled: true)
end
end
end
end
end

View File

@ -0,0 +1,5 @@
---
title: Revert concurrent pipeline creation for pipeline schedules
merge_request: 29794
author:
type: fixed

View File

@ -25,6 +25,38 @@ describe Ci::PipelineScheduleService do
subject
end
context 'when ci_pipeline_schedule_async feature flag is disabled' do
before do
stub_feature_flags(ci_pipeline_schedule_async: false)
end
it 'runs RunPipelineScheduleWorker synchronously' do
expect_next_instance_of(RunPipelineScheduleWorker) do |worker|
expect(worker).to receive(:perform).with(schedule.id, schedule.owner.id)
end
subject
end
it 'calls Garbage Collection manually' do
expect(GC).to receive(:start)
subject
end
context 'when ci_pipeline_schedule_force_gc feature flag is disabled' do
before do
stub_feature_flags(ci_pipeline_schedule_force_gc: false)
end
it 'does not call Garbage Collection manually' do
expect(GC).not_to receive(:start)
subject
end
end
end
context 'when owner is nil' do
let(:schedule) { create(:ci_pipeline_schedule, project: project, owner: nil) }