diff options
author | James Lopez <james@jameslopez.es> | 2017-05-05 10:43:56 +0200 |
---|---|---|
committer | James Lopez <james@jameslopez.es> | 2017-05-05 10:43:56 +0200 |
commit | adcff298f8f3041faa29b75ee3711fb4ce1cbb69 (patch) | |
tree | 35c1c8a3239d5f87ebeaa17489d399915ade4b0f | |
parent | 1fe8b7f646603239f530b1a18427f4f5bc0e2060 (diff) | |
download | gitlab-ce-adcff298f8f3041faa29b75ee3711fb4ce1cbb69.tar.gz |
fixed all issues - not doing bulk create.
-rw-r--r-- | app/services/projects/propagate_service.rb | 10 | ||||
-rw-r--r-- | spec/services/projects/propagate_service_spec.rb | 12 |
2 files changed, 15 insertions, 7 deletions
diff --git a/app/services/projects/propagate_service.rb b/app/services/projects/propagate_service.rb index b067fc2cd64..716a6209537 100644 --- a/app/services/projects/propagate_service.rb +++ b/app/services/projects/propagate_service.rb @@ -21,16 +21,12 @@ module Projects private def propagate_projects_with_template - offset = 0 - loop do - batch = project_ids_batch(offset) + batch = project_ids_batch bulk_create_from_template(batch) break if batch.size < BATCH_SIZE - - offset += BATCH_SIZE end end @@ -44,7 +40,7 @@ module Projects end end - def project_ids_batch(offset) + def project_ids_batch Project.connection.execute( <<-SQL SELECT id @@ -55,7 +51,7 @@ module Projects WHERE services.project_id = projects.id AND services.type = '#{@template.type}' ) - LIMIT #{BATCH_SIZE} OFFSET #{offset} + LIMIT #{BATCH_SIZE} SQL ).to_a.flatten end diff --git a/spec/services/projects/propagate_service_spec.rb b/spec/services/projects/propagate_service_spec.rb index d4ec7c0b357..ac25c8b3d56 100644 --- a/spec/services/projects/propagate_service_spec.rb +++ b/spec/services/projects/propagate_service_spec.rb @@ -66,5 +66,17 @@ describe Projects::PropagateService, services: true do expect(service.properties).to eq(service_template.properties) end + + describe 'bulk update' do + it 'creates services for all projects' do + project_total = 5 + stub_const 'Projects::PropagateService::BATCH_SIZE', 3 + + project_total.times { create(:empty_project) } + + expect { described_class.propagate(service_template) }. + to change { Service.count }.by(project_total + 1) + end + end end end |