From e610f9604ecd186ae37862894a4f4b7c706d0ce5 Mon Sep 17 00:00:00 2001 From: Tiago Botelho Date: Tue, 3 Oct 2017 15:39:04 +0100 Subject: Adds scheduled import jobs to the stuck import jobs detection worker. --- app/workers/stuck_import_jobs_worker.rb | 16 ++++++++-------- .../unreleased-ee/mark-scheduled-mirrors-as-stuck.yml | 5 +++++ spec/workers/stuck_import_jobs_worker_spec.rb | 16 +++++++++++++--- 3 files changed, 26 insertions(+), 11 deletions(-) create mode 100644 changelogs/unreleased-ee/mark-scheduled-mirrors-as-stuck.yml diff --git a/app/workers/stuck_import_jobs_worker.rb b/app/workers/stuck_import_jobs_worker.rb index e0e6d1418de..4fbcfeae69c 100644 --- a/app/workers/stuck_import_jobs_worker.rb +++ b/app/workers/stuck_import_jobs_worker.rb @@ -16,7 +16,7 @@ class StuckImportJobsWorker private def mark_projects_without_jid_as_failed! - started_projects_without_jid.each do |project| + enqueued_projects_without_jid.each do |project| project.mark_import_as_failed(error_message) end.count end @@ -24,7 +24,7 @@ class StuckImportJobsWorker def mark_projects_with_jid_as_failed! completed_jids_count = 0 - started_projects_with_jid.find_in_batches(batch_size: 500) do |group| + enqueued_projects_with_jid.find_in_batches(batch_size: 500) do |group| jids = group.map(&:import_jid) # Find the jobs that aren't currently running or that exceeded the threshold. @@ -43,16 +43,16 @@ class StuckImportJobsWorker completed_jids_count end - def started_projects - Project.with_import_status(:started) + def enqueued_projects + Project.with_import_status(:scheduled, :started) end - def started_projects_with_jid - started_projects.where.not(import_jid: nil) + def enqueued_projects_with_jid + enqueued_projects.where.not(import_jid: nil) end - def started_projects_without_jid - started_projects.where(import_jid: nil) + def enqueued_projects_without_jid + enqueued_projects.where(import_jid: nil) end def error_message diff --git a/changelogs/unreleased-ee/mark-scheduled-mirrors-as-stuck.yml b/changelogs/unreleased-ee/mark-scheduled-mirrors-as-stuck.yml new file mode 100644 index 00000000000..414943d8a0f --- /dev/null +++ b/changelogs/unreleased-ee/mark-scheduled-mirrors-as-stuck.yml @@ -0,0 +1,5 @@ +--- +title: Find stuck scheduled import jobs and also mark them as failed. +merge_request: 3055 +author: +type: fixed diff --git a/spec/workers/stuck_import_jobs_worker_spec.rb b/spec/workers/stuck_import_jobs_worker_spec.rb index a82eb54ffe4..ae24a3f65ac 100644 --- a/spec/workers/stuck_import_jobs_worker_spec.rb +++ b/spec/workers/stuck_import_jobs_worker_spec.rb @@ -8,9 +8,7 @@ describe StuckImportJobsWorker do allow_any_instance_of(Gitlab::ExclusiveLease).to receive(:try_obtain).and_return(exclusive_lease_uuid) end - describe 'with started import_status' do - let(:project) { create(:project, :import_started, import_jid: '123') } - + shared_examples 'project import job detection' do describe 'long running import' do it 'marks the project as failed' do allow(Gitlab::SidekiqStatus).to receive(:completed_jids).and_return(['123']) @@ -33,4 +31,16 @@ describe StuckImportJobsWorker do end end end + + describe 'with scheduled import_status' do + it_behaves_like 'project import job detection' do + let(:project) { create(:project, :import_scheduled, import_jid: '123') } + end + end + + describe 'with started import_status' do + it_behaves_like 'project import job detection' do + let(:project) { create(:project, :import_started, import_jid: '123') } + end + end end -- cgit v1.2.3