summaryrefslogtreecommitdiff
path: root/app/workers/expire_build_artifacts_worker.rb
diff options
context:
space:
mode:
authorPaco Guzman <pacoguzmanp@gmail.com>2016-10-07 11:11:02 +0200
committerPaco Guzman <pacoguzmanp@gmail.com>2016-10-07 15:33:58 +0200
commit9afb2dac5c9f49f9f7943053b50a3808a99fdf6b (patch)
tree0e583ce91adc1af29c327c2bebe856640dfdbcda /app/workers/expire_build_artifacts_worker.rb
parentc2cf1dd6c771ee3a181fa9704da593daa825c58a (diff)
downloadgitlab-ce-9afb2dac5c9f49f9f7943053b50a3808a99fdf6b.tar.gz
ExpireBuildArtifactsWorker query builds table without ordering enqueuing one job per build to cleanup23096-expire-artifacts-per-job
We use Sidekiq::Client.push_bulk to avoid Redis round trips
Diffstat (limited to 'app/workers/expire_build_artifacts_worker.rb')
-rw-r--r--app/workers/expire_build_artifacts_worker.rb11
1 files changed, 5 insertions, 6 deletions
diff --git a/app/workers/expire_build_artifacts_worker.rb b/app/workers/expire_build_artifacts_worker.rb
index c64ea108d52..174eabff9fd 100644
--- a/app/workers/expire_build_artifacts_worker.rb
+++ b/app/workers/expire_build_artifacts_worker.rb
@@ -2,12 +2,11 @@ class ExpireBuildArtifactsWorker
include Sidekiq::Worker
def perform
- Rails.logger.info 'Cleaning old build artifacts'
+ Rails.logger.info 'Scheduling removal of build artifacts'
- builds = Ci::Build.with_expired_artifacts
- builds.find_each(batch_size: 50).each do |build|
- Rails.logger.debug "Removing artifacts build #{build.id}..."
- build.erase_artifacts!
- end
+ build_ids = Ci::Build.with_expired_artifacts.pluck(:id)
+ build_ids = build_ids.map { |build_id| [build_id] }
+
+ Sidekiq::Client.push_bulk('class' => ExpireBuildInstanceArtifactsWorker, 'args' => build_ids )
end
end