summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorRémy Coutable <remy@rymai.me>2019-04-10 12:03:37 +0200
committerRémy Coutable <remy@rymai.me>2019-04-10 15:56:46 +0200
commit22c1c9805b00ebc3bbb48fabba49cf2ba3e696e0 (patch)
tree642b04ecba8c0880ae8b36c99c95280ac9ff011f
parent6c8a13da33e5ff11210122f7863d36f989b99630 (diff)
downloadgitlab-ce-60278-fix-development-seed.tar.gz
Fix ApplicationSetting development seed60278-fix-development-seed
It could happen that there's a cached (in Redis) ApplicationSetting record, and calling `Gitlab::CurrentSettings.current_application_settings` only returns it instead of creating a new DB record, which makes the `ApplicationSetting.current_without_cache.update!` call fail. Signed-off-by: Rémy Coutable <remy@rymai.me>
-rw-r--r--app/models/application_setting.rb4
-rw-r--r--app/services/projects/create_service.rb4
-rw-r--r--db/fixtures/development/02_application_settings.rb2
3 files changed, 6 insertions, 4 deletions
diff --git a/app/models/application_setting.rb b/app/models/application_setting.rb
index d28a12413bf..ee598812176 100644
--- a/app/models/application_setting.rb
+++ b/app/models/application_setting.rb
@@ -259,7 +259,9 @@ class ApplicationSetting < ApplicationRecord
after_commit :expire_performance_bar_allowed_user_ids_cache, if: -> { previous_changes.key?('performance_bar_allowed_group_id') }
def self.create_from_defaults
- super
+ transaction(requires_new: true) do
+ super
+ end
rescue ActiveRecord::RecordNotUnique
# We already have an ApplicationSetting record, so just return it.
current_without_cache
diff --git a/app/services/projects/create_service.rb b/app/services/projects/create_service.rb
index 3723c5ef7d7..4ea40e3c8ce 100644
--- a/app/services/projects/create_service.rb
+++ b/app/services/projects/create_service.rb
@@ -159,8 +159,8 @@ module Projects
log_message << " Project ID: #{@project.id}" if @project&.id
Rails.logger.error(log_message)
- if @project
- @project.import_state.mark_as_failed(message) if @project.persisted? && @project.import?
+ if @project && @project.persisted? && @project.import_state
+ @project.import_state.mark_as_failed(message)
end
@project
diff --git a/db/fixtures/development/02_application_settings.rb b/db/fixtures/development/02_application_settings.rb
index d604f0be3cd..7cdc8e40b69 100644
--- a/db/fixtures/development/02_application_settings.rb
+++ b/db/fixtures/development/02_application_settings.rb
@@ -1,7 +1,7 @@
# frozen_string_literal: true
puts "Creating the default ApplicationSetting record.".color(:green)
-Gitlab::CurrentSettings.current_application_settings
+ApplicationSetting.create_from_defaults
# Details https://gitlab.com/gitlab-org/gitlab-ce/issues/46241
puts "Enable hashed storage for every new projects.".color(:green)