summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorShinya Maeda <shinya@gitlab.com>2019-06-18 18:45:37 +0700
committerShinya Maeda <shinya@gitlab.com>2019-06-18 21:56:11 +0700
commit36b30cf18e7cf24fbb444eeecca70b719ed3208d (patch)
tree2b3d38079f8df8da57f61cca0489b442c72194ed
parent6d68a3a254833ada6228bf245fc43bb8f4d6b85b (diff)
downloadgitlab-ce-revert-concurrent-pipeline-schedule-creation.tar.gz
Revert concurrent pipeline schedule creationrevert-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.
-rw-r--r--app/services/ci/pipeline_schedule_service.rb13
-rw-r--r--changelogs/unreleased/revert-concurrent-pipeline-schedule-creation.yml5
-rw-r--r--spec/services/ci/pipeline_schedule_service_spec.rb32
3 files changed, 49 insertions, 1 deletions
diff --git a/app/services/ci/pipeline_schedule_service.rb b/app/services/ci/pipeline_schedule_service.rb
index 5b5e9a26520..ef90d91c936 100644
--- a/app/services/ci/pipeline_schedule_service.rb
+++ b/app/services/ci/pipeline_schedule_service.rb
@@ -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
diff --git a/changelogs/unreleased/revert-concurrent-pipeline-schedule-creation.yml b/changelogs/unreleased/revert-concurrent-pipeline-schedule-creation.yml
new file mode 100644
index 00000000000..77423463d22
--- /dev/null
+++ b/changelogs/unreleased/revert-concurrent-pipeline-schedule-creation.yml
@@ -0,0 +1,5 @@
+---
+title: Revert concurrent pipeline creation for pipeline schedules
+merge_request: 29794
+author:
+type: fixed
diff --git a/spec/services/ci/pipeline_schedule_service_spec.rb b/spec/services/ci/pipeline_schedule_service_spec.rb
index 867ed0acc0d..f7590720f66 100644
--- a/spec/services/ci/pipeline_schedule_service_spec.rb
+++ b/spec/services/ci/pipeline_schedule_service_spec.rb
@@ -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) }