summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorJames Lopez <james@jameslopez.es>2017-05-05 10:43:56 +0200
committerJames Lopez <james@jameslopez.es>2017-05-05 10:43:56 +0200
commitadcff298f8f3041faa29b75ee3711fb4ce1cbb69 (patch)
tree35c1c8a3239d5f87ebeaa17489d399915ade4b0f
parent1fe8b7f646603239f530b1a18427f4f5bc0e2060 (diff)
downloadgitlab-ce-adcff298f8f3041faa29b75ee3711fb4ce1cbb69.tar.gz
fixed all issues - not doing bulk create.
-rw-r--r--app/services/projects/propagate_service.rb10
-rw-r--r--spec/services/projects/propagate_service_spec.rb12
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