diff options
author | Mike Greiling <mike@pixelcog.com> | 2017-10-24 16:25:04 +0300 |
---|---|---|
committer | Mike Greiling <mike@pixelcog.com> | 2017-10-24 16:25:04 +0300 |
commit | f44665c893a1d54dd7f69d559e404b285e25b611 (patch) | |
tree | 89d9b3b18e1ebc4880e2cceb98e64ad447888892 /lib/gitlab/testing | |
parent | 9e538fd0129a08ba1b45ce3babfdf7a20198137f (diff) | |
download | gitlab-ce-f44665c893a1d54dd7f69d559e404b285e25b611.tar.gz |
slow down requests for dropzone uploads to avoid race conditions
Diffstat (limited to 'lib/gitlab/testing')
-rw-r--r-- | lib/gitlab/testing/request_blocker_middleware.rb | 12 |
1 files changed, 12 insertions, 0 deletions
diff --git a/lib/gitlab/testing/request_blocker_middleware.rb b/lib/gitlab/testing/request_blocker_middleware.rb index aa67fa08577..4a8e3c2eee0 100644 --- a/lib/gitlab/testing/request_blocker_middleware.rb +++ b/lib/gitlab/testing/request_blocker_middleware.rb @@ -7,6 +7,7 @@ module Gitlab class RequestBlockerMiddleware @@num_active_requests = Concurrent::AtomicFixnum.new(0) @@block_requests = Concurrent::AtomicBoolean.new(false) + @@slow_requests = Concurrent::AtomicBoolean.new(false) # Returns the number of requests the server is currently processing. def self.num_active_requests @@ -19,9 +20,15 @@ module Gitlab @@block_requests.value = true end + # Slows down incoming requests (useful for race conditions). + def self.slow_requests! + @@slow_requests.value = true + end + # Allows the server to accept requests again. def self.allow_requests! @@block_requests.value = false + @@slow_requests.value = false end def initialize(app) @@ -33,6 +40,7 @@ module Gitlab if block_requests? block_request(env) else + sleep 0.2 if slow_requests? @app.call(env) end ensure @@ -45,6 +53,10 @@ module Gitlab @@block_requests.true? end + def slow_requests? + @@slow_requests.true? + end + def block_request(env) [503, {}, []] end |