diff options
author | Stan Hu <stanhu@gmail.com> | 2018-11-05 18:53:22 +0000 |
---|---|---|
committer | Stan Hu <stanhu@gmail.com> | 2018-11-05 18:53:22 +0000 |
commit | d33dad88a143e7f0dc495cb5bff45a558d5d81d9 (patch) | |
tree | a6c0dbb33237963e35f119363cfd3ff4694af892 | |
parent | c6d4449f33b57a90d78b3f739ccecc5ab8588e96 (diff) | |
parent | b47e666026c30dbfaa0012655bb01eb18d1c3a63 (diff) | |
download | gitlab-ce-d33dad88a143e7f0dc495cb5bff45a558d5d81d9.tar.gz |
Merge branch '48239-performance-info-ref' into 'master'
Performance tuning on Projects::GitHttpController#info_refs
Closes #48239
See merge request gitlab-org/gitlab-ce!22013
-rw-r--r-- | app/models/deploy_token.rb | 5 | ||||
-rw-r--r-- | app/models/project.rb | 12 | ||||
-rw-r--r-- | db/migrate/20180927073410_add_index_to_project_deploy_tokens_deploy_token_id.rb | 18 | ||||
-rw-r--r-- | db/schema.rb | 1 |
4 files changed, 26 insertions, 10 deletions
diff --git a/app/models/deploy_token.rb b/app/models/deploy_token.rb index 0b2eedf3631..e3524305346 100644 --- a/app/models/deploy_token.rb +++ b/app/models/deploy_token.rb @@ -4,6 +4,7 @@ class DeployToken < ActiveRecord::Base include Expirable include TokenAuthenticatable include PolicyActor + include Gitlab::Utils::StrongMemoize add_authentication_token_field :token AVAILABLE_SCOPES = %i(read_repository read_registry).freeze @@ -49,7 +50,9 @@ class DeployToken < ActiveRecord::Base # to a single project, later we're going to extend # that to be for multiple projects and namespaces. def project - projects.first + strong_memoize(:project) do + projects.first + end end def expires_at diff --git a/app/models/project.rb b/app/models/project.rb index 872bea46e7c..d3b148d0ac0 100644 --- a/app/models/project.rb +++ b/app/models/project.rb @@ -95,8 +95,7 @@ class Project < ActiveRecord::Base unless: :ci_cd_settings, if: proc { ProjectCiCdSetting.available? } - after_create :set_last_activity_at - after_create :set_last_repository_updated_at + after_create :set_timestamps_for_create after_update :update_forks_visibility_level before_destroy :remove_private_deploy_keys @@ -2103,13 +2102,8 @@ class Project < ActiveRecord::Base gitlab_shell.exists?(repository_storage, "#{disk_path}.git") end - # set last_activity_at to the same as created_at - def set_last_activity_at - update_column(:last_activity_at, self.created_at) - end - - def set_last_repository_updated_at - update_column(:last_repository_updated_at, self.created_at) + def set_timestamps_for_create + update_columns(last_activity_at: self.created_at, last_repository_updated_at: self.created_at) end def cross_namespace_reference?(from) diff --git a/db/migrate/20180927073410_add_index_to_project_deploy_tokens_deploy_token_id.rb b/db/migrate/20180927073410_add_index_to_project_deploy_tokens_deploy_token_id.rb new file mode 100644 index 00000000000..61d32fe16eb --- /dev/null +++ b/db/migrate/20180927073410_add_index_to_project_deploy_tokens_deploy_token_id.rb @@ -0,0 +1,18 @@ +# frozen_string_literal: true + +class AddIndexToProjectDeployTokensDeployTokenId < ActiveRecord::Migration + include Gitlab::Database::MigrationHelpers + + DOWNTIME = false + + disable_ddl_transaction! + + def up + # MySQL already has index inserted + add_concurrent_index :project_deploy_tokens, :deploy_token_id if Gitlab::Database.postgresql? + end + + def down + remove_concurrent_index(:project_deploy_tokens, :deploy_token_id) if Gitlab::Database.postgresql? + end +end diff --git a/db/schema.rb b/db/schema.rb index 5ad8fb7c5a4..32d10e87e87 100644 --- a/db/schema.rb +++ b/db/schema.rb @@ -1589,6 +1589,7 @@ ActiveRecord::Schema.define(version: 20181101144347) do t.datetime_with_timezone "created_at", null: false end + add_index "project_deploy_tokens", ["deploy_token_id"], name: "index_project_deploy_tokens_on_deploy_token_id", using: :btree add_index "project_deploy_tokens", ["project_id", "deploy_token_id"], name: "index_project_deploy_tokens_on_project_id_and_deploy_token_id", unique: true, using: :btree create_table "project_features", force: :cascade do |t| |