Skip to content
GitLab
Menu
Projects
Groups
Snippets
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
heptapod
heptapod
Commits
f3eea4fba0a7
Commit
79a15a52
authored
Mar 18, 2019
by
Rémy Coutable
Browse files
Fix race cond. in ApplicationSettingImplementation.create_from_defaults
Signed-off-by:
Rémy Coutable
<
remy@rymai.me
>
parent
2b75fa08ff17
Changes
6
Hide whitespace changes
Inline
Side-by-side
app/models/application_setting.rb
View file @
f3eea4fb
...
...
@@ -223,4 +223,11 @@ class ApplicationSetting < ApplicationRecord
reset_memoized_terms
end
after_commit
:expire_performance_bar_allowed_user_ids_cache
,
if:
->
{
previous_changes
.
key?
(
'performance_bar_allowed_group_id'
)
}
def
self
.
create_from_defaults
super
rescue
ActiveRecord
::
RecordNotUnique
# We already have an ApplicationSetting record, so just return it.
current_without_cache
end
end
db/fixtures/development/02_application_settings.rb
0 → 100644
View file @
f3eea4fb
# frozen_string_literal: true
puts
"Creating the default ApplicationSetting record."
.
color
(
:green
)
Gitlab
::
CurrentSettings
.
current_application_settings
# Details https://gitlab.com/gitlab-org/gitlab-ce/issues/46241
puts
"Enable hashed storage for every new projects."
.
color
(
:green
)
ApplicationSetting
.
current_without_cache
.
update!
(
hashed_storage_enabled:
true
)
print
'.'
db/fixtures/development/02_settings.rb
deleted
100644 → 0
View file @
2b75fa08
# frozen_string_literal: true
# Enable hashed storage, in development mode, for all projects by default.
Gitlab
::
Seeder
.
quiet
do
ApplicationSetting
.
create_from_defaults
unless
ApplicationSetting
.
current_without_cache
ApplicationSetting
.
current_without_cache
.
update!
(
hashed_storage_enabled:
true
)
print
'.'
end
db/fixtures/development/08_settings.rb
deleted
100644 → 0
View file @
2b75fa08
# We want to enable hashed storage for every new project in development
# Details https://gitlab.com/gitlab-org/gitlab-ce/issues/46241
Gitlab
::
Seeder
.
quiet
do
ApplicationSetting
.
create_from_defaults
unless
ApplicationSetting
.
current_without_cache
ApplicationSetting
.
current_without_cache
.
update!
(
hashed_storage_enabled:
true
)
print
'.'
end
db/fixtures/production/001_application_settings.rb
View file @
f3eea4fb
# frozen_string_literal: true
puts
"Creating the default ApplicationSetting record."
.
color
(
:green
)
Gitlab
::
CurrentSettings
.
current_application_settings
spec/models/application_setting_spec.rb
View file @
f3eea4fb
...
...
@@ -6,6 +6,7 @@
let
(
:setting
)
{
described_class
.
create_from_defaults
}
it
{
include
(
CacheableAttributes
)
}
it
{
include
(
ApplicationSettingImplementation
)
}
it
{
expect
(
described_class
.
current_without_cache
).
to
eq
(
described_class
.
last
)
}
it
{
expect
(
setting
).
to
be_valid
}
...
...
@@ -286,12 +287,10 @@ def expect_invalid
end
context
'restrict creating duplicates'
do
before
do
described_class
.
create_from_defaults
end
let!
(
:current_settings
)
{
described_class
.
create_from_defaults
}
it
'r
aises an record creation violation if already created
'
do
expect
{
described_class
.
create_from_defaults
}
.
to
raise_error
(
ActiveRecord
::
RecordNotUnique
)
it
'r
eturns the current settings
'
do
expect
(
described_class
.
create_from_defaults
)
.
to
eq
(
current_settings
)
end
end
...
...
Write
Preview
Markdown
is supported
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment