diff options
author | Sean McGivern <sean@mcgivern.me.uk> | 2017-04-06 14:02:13 +0300 |
---|---|---|
committer | Sean McGivern <sean@mcgivern.me.uk> | 2017-04-06 14:02:13 +0300 |
commit | 618542949573ddf1636f6e28a72866105d5dbd37 (patch) | |
tree | 1ab6438f86a2dd427e79ee4ad1c42acadf9d247c /lib | |
parent | dc20dd1b3d69bfcd503f4dfe1b89f49bf7083844 (diff) | |
parent | 94716c279f35c787d5b41ed626ad9bfc1acf83aa (diff) |
Merge branch 'fix/gh-import-status-check' into 'master'
Periodically mark projects that are stuck in importing as failed
Closes #17709
See merge request !10207
Diffstat (limited to 'lib')
-rw-r--r-- | lib/gitlab/sidekiq_status.rb | 13 | ||||
-rw-r--r-- | lib/gitlab/sidekiq_status/client_middleware.rb | 4 |
2 files changed, 16 insertions, 1 deletions
diff --git a/lib/gitlab/sidekiq_status.rb b/lib/gitlab/sidekiq_status.rb index 11e5f1b645c..ca8d3271541 100644 --- a/lib/gitlab/sidekiq_status.rb +++ b/lib/gitlab/sidekiq_status.rb @@ -72,6 +72,8 @@ module Gitlab # job_ids - The Sidekiq job IDs to check. # # Returns an array of true or false indicating job completion. + # true = job is still running + # false = job completed def self.job_status(job_ids) keys = job_ids.map { |jid| key_for(jid) } @@ -82,6 +84,17 @@ module Gitlab end end + # Returns the JIDs that are completed + # + # job_ids - The Sidekiq job IDs to check. + # + # Returns an array of completed JIDs + def self.completed_jids(job_ids) + Sidekiq.redis do |redis| + job_ids.reject { |jid| redis.exists(key_for(jid)) } + end + end + def self.key_for(jid) STATUS_KEY % jid end diff --git a/lib/gitlab/sidekiq_status/client_middleware.rb b/lib/gitlab/sidekiq_status/client_middleware.rb index d47609f490d..00983b3284a 100644 --- a/lib/gitlab/sidekiq_status/client_middleware.rb +++ b/lib/gitlab/sidekiq_status/client_middleware.rb @@ -2,7 +2,9 @@ module Gitlab module SidekiqStatus class ClientMiddleware def call(_, job, _, _) - Gitlab::SidekiqStatus.set(job['jid']) + status_expiration = job['status_expiration'] || Gitlab::SidekiqStatus::DEFAULT_EXPIRATION + + Gitlab::SidekiqStatus.set(job['jid'], status_expiration) yield end end |