Welcome to mirror list, hosted at ThFree Co, Russian Federation.

gitlab.com/gitlab-org/gitlab-foss.git - Unnamed repository; edit this file 'description' to name the repository.
summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorTiago Botelho <tiagonbotelho@hotmail.com>2017-10-03 17:39:04 +0300
committerDouwe Maan <douwe@selenight.nl>2018-02-23 18:17:48 +0300
commite610f9604ecd186ae37862894a4f4b7c706d0ce5 (patch)
tree868f1f81c5bb490d78943193bfe885de56e09b0e
parent58a312f5097b30a93100de93d06427402d514b48 (diff)
Adds scheduled import jobs to the stuck import jobs detection worker.
-rw-r--r--app/workers/stuck_import_jobs_worker.rb16
-rw-r--r--changelogs/unreleased-ee/mark-scheduled-mirrors-as-stuck.yml5
-rw-r--r--spec/workers/stuck_import_jobs_worker_spec.rb16
3 files changed, 26 insertions, 11 deletions
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