summaryrefslogtreecommitdiff
path: root/app/workers
diff options
context:
space:
mode:
authorJacob Vosmaer <contact@jacobvosmaer.nl>2016-04-12 17:07:54 +0200
committerJacob Vosmaer <contact@jacobvosmaer.nl>2016-04-12 17:07:54 +0200
commit97f4ffff1e7b5da94e18edc20c009ffb46784187 (patch)
tree5d49026f25bfacb529dafc9142250681f4263cfb /app/workers
parentb37d3b9423991763ad03fca791a1daf473dafed1 (diff)
downloadgitlab-ce-97f4ffff1e7b5da94e18edc20c009ffb46784187.tar.gz
Add a 'circuit breaker' for repo checks
Diffstat (limited to 'app/workers')
-rw-r--r--app/workers/repository_check_worker.rb8
1 files changed, 8 insertions, 0 deletions
diff --git a/app/workers/repository_check_worker.rb b/app/workers/repository_check_worker.rb
index afdc6a4c63a..017f49de08c 100644
--- a/app/workers/repository_check_worker.rb
+++ b/app/workers/repository_check_worker.rb
@@ -15,6 +15,7 @@ class RepositoryCheckWorker
# check, only one (or two) will be checked at a time.
project_ids.each do |project_id|
break if Time.now - start >= RUN_TIME
+ break unless current_settings.repository_checks_enabled
next if !try_obtain_lease(project_id)
@@ -45,4 +46,11 @@ class RepositoryCheckWorker
)
lease.try_obtain
end
+
+ def current_settings
+ # No caching of the settings! If we cache them and an admin disables
+ # this feature, an active RepositoryCheckWorker would keep going for up
+ # to 1 hour after the feature was disabled.
+ ApplicationSetting.current || Gitlab::CurrentSettings.fake_application_settings
+ end
end