Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorMatija Čupić <matteeyah@gmail.com>2017-12-16 06:21:13 +0300
committerMatija Čupić <matteeyah@gmail.com>2017-12-16 06:21:13 +0300
commit99043d244c4d579f27382f003df9e3243287df2a (patch)
tree308942dbf446e84e8449dcf773d90107ef62b2af /app/workers
parent78f85f3fd3a6743948f044c332cd1243547ef0a4 (diff)
Add lease to CheckGcpProjectBillingWorker
Diffstat (limited to 'app/workers')
-rw-r--r--app/workers/check_gcp_project_billing_worker.rb11
1 files changed, 11 insertions, 0 deletions
diff --git a/app/workers/check_gcp_project_billing_worker.rb b/app/workers/check_gcp_project_billing_worker.rb
index 97638f65e8d..254b0959063 100644
--- a/app/workers/check_gcp_project_billing_worker.rb
+++ b/app/workers/check_gcp_project_billing_worker.rb
@@ -1,16 +1,27 @@
class CheckGcpProjectBillingWorker
include ApplicationWorker
+ LEASE_TIMEOUT = 1.minute.to_i
+
def self.redis_shared_state_key_for(token)
"gitlab:gcp:#{token}:billing_enabled"
end
def perform(token)
return unless token
+ return unless try_obtain_lease_for(token)
billing_enabled = CheckGcpProjectBillingService.new.execute(token)
Gitlab::Redis::SharedState.with do |redis|
redis.set(self.class.redis_shared_state_key_for(token), billing_enabled)
end
end
+
+ private
+
+ def try_obtain_lease_for(token)
+ Gitlab::ExclusiveLease
+ .new("check_gcp_project_billing_worker:#{token}", timeout: LEASE_TIMEOUT)
+ .try_obtain
+ end
end