Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorYorick Peterse <yorickpeterse@gmail.com>2015-11-04 13:14:30 +0300
committerYorick Peterse <yorickpeterse@gmail.com>2015-11-04 13:14:30 +0300
commit6d91ee0095d2491ab5d9862d5deba22282d1412d (patch)
treee159bbe7e3169eddf3875f986dd583192cef809c
parent219f920c6422bb8647ff2d1d79ec43801908ed0b (diff)
parent29b3ce56ac45afc2c4dcd7055b53d8c06ef9faf2 (diff)
Merge branch 'create-project-performance' into 'master'
Improve performance of creating projects See merge request !1650
-rw-r--r--app/services/projects/create_service.rb2
-rw-r--r--db/migrate/20151020145526_add_services_template_index.rb5
-rw-r--r--db/schema.rb1
-rw-r--r--spec/benchmarks/services/projects/create_service_spec.rb28
4 files changed, 34 insertions, 2 deletions
diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb
index faf1ee008e7..5b84527eccf 100644
--- a/app/services/projects/create_service.rb
+++ b/app/services/projects/create_service.rb
@@ -94,8 +94,6 @@ module Projects
@project.team << [current_user, :master, current_user]
end
- @project.update_column(:last_activity_at, @project.created_at)
-
if @project.import?
@project.import_start
end
diff --git a/db/migrate/20151020145526_add_services_template_index.rb b/db/migrate/20151020145526_add_services_template_index.rb
new file mode 100644
index 00000000000..1b04f313565
--- /dev/null
+++ b/db/migrate/20151020145526_add_services_template_index.rb
@@ -0,0 +1,5 @@
+class AddServicesTemplateIndex < ActiveRecord::Migration
+ def change
+ add_index :services, :template
+ end
+end
diff --git a/db/schema.rb b/db/schema.rb
index 4bde9f0b748..73fc83c3d6b 100644
--- a/db/schema.rb
+++ b/db/schema.rb
@@ -667,6 +667,7 @@ ActiveRecord::Schema.define(version: 20151026182941) do
add_index "services", ["created_at", "id"], name: "index_services_on_created_at_and_id", using: :btree
add_index "services", ["project_id"], name: "index_services_on_project_id", using: :btree
+ add_index "services", ["template"], name: "index_services_on_template", using: :btree
create_table "snippets", force: true do |t|
t.string "title"
diff --git a/spec/benchmarks/services/projects/create_service_spec.rb b/spec/benchmarks/services/projects/create_service_spec.rb
new file mode 100644
index 00000000000..25ed48c34fd
--- /dev/null
+++ b/spec/benchmarks/services/projects/create_service_spec.rb
@@ -0,0 +1,28 @@
+require 'spec_helper'
+
+describe Projects::CreateService, benchmark: true do
+ describe '#execute' do
+ let(:user) { create(:user, :admin) }
+
+ let(:group) do
+ group = create(:group)
+
+ create(:group_member, group: group, user: user)
+
+ group
+ end
+
+ benchmark_subject do
+ name = SecureRandom.hex
+ service = described_class.new(user,
+ name: name,
+ path: name,
+ namespace_id: group.id,
+ visibility_level: Gitlab::VisibilityLevel::PUBLIC)
+
+ service.execute
+ end
+
+ it { is_expected.to iterate_per_second(0.5) }
+ end
+end