Commit 824af79d authored by Shinya Maeda's avatar Shinya Maeda

Fix rake task to use corrrect SQL

parent 91117452
...@@ -8,17 +8,16 @@ namespace :gitlab do ...@@ -8,17 +8,16 @@ namespace :gitlab do
logger = Logger.new(STDOUT) logger = Logger.new(STDOUT)
logger.info('Archiving legacy traces') logger.info('Archiving legacy traces')
Ci::Build.joins('RIGHT JOIN ci_job_artifacts ON ci_job_artifacts.job_id = ci_builds.id') Ci::Build.finished
.finished .where('NOT EXISTS (?)',
.where('ci_job_artifacts.file_type <> 3') Ci::JobArtifact.select(1).trace.where('ci_builds.id = ci_job_artifacts.job_id'))
.group('ci_builds.id')
.order(id: :asc) .order(id: :asc)
.find_in_batches(batch_size: 1000) do |jobs| .find_in_batches(batch_size: 1000) do |jobs|
job_ids = jobs.map { |job| [job.id] } job_ids = jobs.map { |job| [job.id] }
ArchiveLegacyTraceWorker.bulk_perform_async(job_ids) ArchiveLegacyTraceWorker.bulk_perform_async(job_ids)
logger.info("Scheduled #{job_ids.count} jobs. From #{job_ids.min} #{job_ids.max}") logger.info("Scheduled #{job_ids.count} jobs. From #{job_ids.min} to #{job_ids.max}")
end end
end end
end end
......
require 'rake_helper'
describe 'gitlab:traces rake tasks' do
before do
Rake.application.rake_require 'tasks/gitlab/traces'
end
shared_examples 'passes the job id to worker' do
it do
expect(ArchiveLegacyTraceWorker).to receive(:bulk_perform_async).with([[job.id]])
run_rake_task('gitlab:traces:archive')
end
end
shared_examples 'does not pass the job id to worker' do
it do
expect(ArchiveLegacyTraceWorker).not_to receive(:bulk_perform_async)
run_rake_task('gitlab:traces:archive')
end
end
context 'when trace file stored in default path' do
let!(:job) { create(:ci_build, :success, :trace_live) }
it_behaves_like 'passes the job id to worker'
end
context 'when trace is stored in database' do
let!(:job) { create(:ci_build, :success) }
before do
job.update_column(:trace, 'trace in db')
end
it_behaves_like 'passes the job id to worker'
end
context 'when job has trace artifact' do
let!(:job) { create(:ci_build, :success) }
before do
create(:ci_job_artifact, :trace, job: job)
end
it_behaves_like 'does not pass the job id to worker'
end
context 'when job is not finished yet' do
let!(:build) { create(:ci_build, :running, :trace_live) }
it_behaves_like 'does not pass the job id to worker'
end
end
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment