diff options
author | Mayra Cabrera <mcabrera@gitlab.com> | 2018-06-04 23:24:57 +0000 |
---|---|---|
committer | Mayra Cabrera <mcabrera@gitlab.com> | 2018-06-04 23:24:57 +0000 |
commit | da535fae06954dd59c16d942de68db80e22e8ce4 (patch) | |
tree | c01651de1e25571286ead5cb930c849575b0d763 /lib/gitlab/temporarily_allow.rb | |
parent | 1841da16abe864b3dae19636fee9e9bbe9a01b56 (diff) | |
parent | 0888eb11ee082e0dc30c23325b9c321c8b3d4322 (diff) | |
download | gitlab-ce-da535fae06954dd59c16d942de68db80e22e8ce4.tar.gz |
Merge branch '11-0-stable-prepare-rc2' into '11-0-stable'
Prepare 11.0 RC2 release
See merge request gitlab-org/gitlab-ce!19364
Diffstat (limited to 'lib/gitlab/temporarily_allow.rb')
-rw-r--r-- | lib/gitlab/temporarily_allow.rb | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/lib/gitlab/temporarily_allow.rb b/lib/gitlab/temporarily_allow.rb new file mode 100644 index 00000000000..880e55f71df --- /dev/null +++ b/lib/gitlab/temporarily_allow.rb @@ -0,0 +1,42 @@ +module Gitlab + module TemporarilyAllow + TEMPORARILY_ALLOW_MUTEX = Mutex.new + + def temporarily_allow(key) + temporarily_allow_add(key, 1) + yield + ensure + temporarily_allow_add(key, -1) + end + + def temporarily_allowed?(key) + if RequestStore.active? + temporarily_allow_request_store[key] > 0 + else + TEMPORARILY_ALLOW_MUTEX.synchronize do + temporarily_allow_ivar[key] > 0 + end + end + end + + private + + def temporarily_allow_ivar + @temporarily_allow ||= Hash.new(0) + end + + def temporarily_allow_request_store + RequestStore[:temporarily_allow] ||= Hash.new(0) + end + + def temporarily_allow_add(key, value) + if RequestStore.active? + temporarily_allow_request_store[key] += value + else + TEMPORARILY_ALLOW_MUTEX.synchronize do + temporarily_allow_ivar[key] += value + end + end + end + end +end |