Merge branch 'rails5-autoload' into 'master'

[Rails5] Permit concurrent loads

Closes #48263

See merge request gitlab-org/gitlab-ce!20473
This commit is contained in:
Sean McGivern 2018-07-11 08:36:26 +00:00
commit e68a547bc7
1 changed files with 11 additions and 1 deletions

View File

@ -21,7 +21,17 @@ module DeclarativePolicy
cache = opts[:cache] || {}
key = Cache.policy_key(user, subject)
cache[key] ||= class_for(subject).new(user, subject, opts)
cache[key] ||=
if Gitlab.rails5?
# to avoid deadlocks in multi-threaded environment when
# autoloading is enabled, we allow concurrent loads,
# https://gitlab.com/gitlab-org/gitlab-ce/issues/48263
ActiveSupport::Dependencies.interlock.permit_concurrent_loads do
class_for(subject).new(user, subject, opts)
end
else
class_for(subject).new(user, subject, opts)
end
end
def class_for(subject)