diff options
author | Douwe Maan <douwe@gitlab.com> | 2017-08-17 13:53:39 +0000 |
---|---|---|
committer | Douwe Maan <douwe@gitlab.com> | 2017-08-17 13:53:39 +0000 |
commit | 91d3e6d9011edd19f980a8a0864ff0f673513011 (patch) | |
tree | 35e4828a2672de216c21beb98536ce3e270a97b9 /lib | |
parent | 2c528aad8667ec8cafd0040eb2f33594eec693e7 (diff) | |
parent | f865b1b459b7c53eb57580246d8e20c4fd45f7fe (diff) | |
download | gitlab-ce-91d3e6d9011edd19f980a8a0864ff0f673513011.tar.gz |
Merge branch 'ee-2628-backport-to-ce' into 'master'
Backports EE mirror stuck handling featureā¦
See merge request !13627
Diffstat (limited to 'lib')
-rw-r--r-- | lib/after_commit_queue.rb | 30 | ||||
-rw-r--r-- | lib/gitlab/sidekiq_status.rb | 9 |
2 files changed, 37 insertions, 2 deletions
diff --git a/lib/after_commit_queue.rb b/lib/after_commit_queue.rb new file mode 100644 index 00000000000..b67575a3ac2 --- /dev/null +++ b/lib/after_commit_queue.rb @@ -0,0 +1,30 @@ +module AfterCommitQueue + extend ActiveSupport::Concern + + included do + after_commit :_run_after_commit_queue + after_rollback :_clear_after_commit_queue + end + + def run_after_commit(method = nil, &block) + _after_commit_queue << proc { self.send(method) } if method + _after_commit_queue << block if block + true + end + + protected + + def _run_after_commit_queue + while action = _after_commit_queue.pop + self.instance_eval(&action) + end + end + + def _after_commit_queue + @after_commit_queue ||= [] + end + + def _clear_after_commit_queue + _after_commit_queue.clear + end +end diff --git a/lib/gitlab/sidekiq_status.rb b/lib/gitlab/sidekiq_status.rb index ca8d3271541..a0a2769cf9e 100644 --- a/lib/gitlab/sidekiq_status.rb +++ b/lib/gitlab/sidekiq_status.rb @@ -90,9 +90,14 @@ module Gitlab # # 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)) } + statuses = job_status(job_ids) + + completed = [] + job_ids.zip(statuses).each do |job_id, status| + completed << job_id unless status end + + completed end def self.key_for(jid) |