From 22c1c9805b00ebc3bbb48fabba49cf2ba3e696e0 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?R=C3=A9my=20Coutable?= Date: Wed, 10 Apr 2019 12:03:37 +0200 Subject: Fix ApplicationSetting development seed MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 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 --- app/models/application_setting.rb | 4 +++- app/services/projects/create_service.rb | 4 ++-- db/fixtures/development/02_application_settings.rb | 2 +- 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) -- cgit v1.2.1