summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-11-30 10:23:25 +0100
committerDmitriy Zaporozhets <dmitriy.zaporozhets@gmail.com>2015-11-30 10:23:25 +0100
commit69e9c4143b0474c4d6863edbbeb6aa1c079c6e43 (patch)
treefd248b5df606db0f67c44c8068e35a9f82e0d414
parentc48518ac21d40df19a56027a561f6fa727423701 (diff)
parent78c1ab40e20f2c412719a2140d9de61ada26d1b8 (diff)
downloadgitlab-ce-69e9c4143b0474c4d6863edbbeb6aa1c079c6e43.tar.gz
Merge branch 'expire-application-settings-startup' of https://gitlab.com/stanhu/gitlab-ce
-rw-r--r--CHANGELOG1
-rw-r--r--app/models/application_setting.rb12
-rw-r--r--app/models/ci/application_setting.rb12
-rw-r--r--config/initializers/1_settings.rb9
4 files changed, 30 insertions, 4 deletions
diff --git a/CHANGELOG b/CHANGELOG
index 2f02b9dc265..090b54f41a4 100644
--- a/CHANGELOG
+++ b/CHANGELOG
@@ -2,6 +2,7 @@ Please view this file on the master branch, on stable branches it's out of date.
v 8.3.0 (unreleased)
- Fix Error 500 when viewing user's personal projects from admin page (Stan Hu)
+ - Ensure cached application settings are refreshed at startup (Stan Hu)
- Fix: Assignee selector is empty when 'Unassigned' is selected (Jose Corcuera)
- Fix 500 error when update group member permission
- Fix: Raw private snippets access workflow
diff --git a/app/models/application_setting.rb b/app/models/application_setting.rb
index b2d5fe1558f..3df8135acf1 100644
--- a/app/models/application_setting.rb
+++ b/app/models/application_setting.rb
@@ -73,15 +73,23 @@ class ApplicationSetting < ActiveRecord::Base
end
after_commit do
- Rails.cache.write('application_setting.last', self)
+ Rails.cache.write(cache_key, self)
end
def self.current
- Rails.cache.fetch('application_setting.last') do
+ Rails.cache.fetch(cache_key) do
ApplicationSetting.last
end
end
+ def self.expire
+ Rails.cache.delete(cache_key)
+ end
+
+ def self.cache_key
+ 'application_setting.last'
+ end
+
def self.create_from_defaults
create(
default_projects_limit: Settings.gitlab['default_projects_limit'],
diff --git a/app/models/ci/application_setting.rb b/app/models/ci/application_setting.rb
index 1307fa0b472..4e512d290ee 100644
--- a/app/models/ci/application_setting.rb
+++ b/app/models/ci/application_setting.rb
@@ -14,11 +14,15 @@ module Ci
extend Ci::Model
after_commit do
- Rails.cache.write('ci_application_setting.last', self)
+ Rails.cache.write(cache_key, self)
+ end
+
+ def self.expire
+ Rails.cache.delete(cache_key)
end
def self.current
- Rails.cache.fetch('ci_application_setting.last') do
+ Rails.cache.fetch(cache_key) do
Ci::ApplicationSetting.last
end
end
@@ -29,5 +33,9 @@ module Ci
add_pusher: Settings.gitlab_ci['add_pusher'],
)
end
+
+ def self.cache_key
+ 'ci_application_setting.last'
+ end
end
end
diff --git a/config/initializers/1_settings.rb b/config/initializers/1_settings.rb
index b162b8a83fc..444e91109df 100644
--- a/config/initializers/1_settings.rb
+++ b/config/initializers/1_settings.rb
@@ -293,3 +293,12 @@ if Rails.env.test?
Settings.gitlab['default_can_create_group'] = true
Settings.gitlab['default_can_create_team'] = false
end
+
+# Force a refresh of application settings at startup
+begin
+ ApplicationSetting.expire
+ Ci::ApplicationSetting.expire
+rescue
+ # Gracefully handle when Redis is not available. For example,
+ # omnibus may fail here during assets:precompile.
+end