diff options
author | Matija Čupić <matteeyah@gmail.com> | 2017-12-16 04:21:13 +0100 |
---|---|---|
committer | Matija Čupić <matteeyah@gmail.com> | 2017-12-16 04:21:13 +0100 |
commit | 99043d244c4d579f27382f003df9e3243287df2a (patch) | |
tree | 308942dbf446e84e8449dcf773d90107ef62b2af /app/workers | |
parent | 78f85f3fd3a6743948f044c332cd1243547ef0a4 (diff) | |
download | gitlab-ce-99043d244c4d579f27382f003df9e3243287df2a.tar.gz |
Add lease to CheckGcpProjectBillingWorker
Diffstat (limited to 'app/workers')
-rw-r--r-- | app/workers/check_gcp_project_billing_worker.rb | 11 |
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 |