summaryrefslogtreecommitdiff
path: root/lib
diff options
context:
space:
mode:
authorYorick Peterse <yorickpeterse@gmail.com>2018-03-16 12:39:04 +0000
committerYorick Peterse <yorickpeterse@gmail.com>2018-03-16 12:39:04 +0000
commitfd4bb1e3142bb1e9309f7b0c93cd8e8002ef8192 (patch)
tree9e314bfda26ad165fb363a3735bf9dfec8b1cf71 /lib
parentbfaf3d695553531a5b88747aa320371ba22ce641 (diff)
parent272783be20927148d86b05a7e22f88b291c6dd93 (diff)
downloadgitlab-ce-fd4bb1e3142bb1e9309f7b0c93cd8e8002ef8192.tar.gz
Merge branch 'sh-cache-table-exists' into 'master'
Cache table_exists?('application_settings') to reduce repeated schema reloads Closes #43355 See merge request gitlab-org/gitlab-ce!17781
Diffstat (limited to 'lib')
-rw-r--r--lib/gitlab/current_settings.rb2
-rw-r--r--lib/gitlab/database.rb5
2 files changed, 6 insertions, 1 deletions
diff --git a/lib/gitlab/current_settings.rb b/lib/gitlab/current_settings.rb
index b7c596a973d..e392a015b91 100644
--- a/lib/gitlab/current_settings.rb
+++ b/lib/gitlab/current_settings.rb
@@ -70,7 +70,7 @@ module Gitlab
active_db_connection = ActiveRecord::Base.connection.active? rescue false
active_db_connection &&
- ActiveRecord::Base.connection.table_exists?('application_settings')
+ Gitlab::Database.cached_table_exists?('application_settings')
rescue ActiveRecord::NoDatabaseError
false
end
diff --git a/lib/gitlab/database.rb b/lib/gitlab/database.rb
index d4fc69cb173..76501dd50e8 100644
--- a/lib/gitlab/database.rb
+++ b/lib/gitlab/database.rb
@@ -187,6 +187,11 @@ module Gitlab
connection.schema_cache.columns_hash(table_name).has_key?(column_name.to_s)
end
+ def self.cached_table_exists?(table_name)
+ # Rails 5 uses data_source_exists? instead of table_exists?
+ connection.schema_cache.table_exists?(table_name)
+ end
+
private_class_method :connection
def self.database_version