From 87471cbe882b05bae9957701de0317cde5895d6e Mon Sep 17 00:00:00 2001 From: Toon Claes <toon@gitlab.com> Date: Wed, 25 Sep 2019 11:13:41 +0200 Subject: [PATCH] Do not care about the order jobs are scheduled Just make sure each registry is only scheduled once and the registries the failed repos should be skipped. Closes https://gitlab.com/gitlab-org/gitlab/issues/12455 Very similar to https://gitlab.com/gitlab-org/gitlab/merge_requests/5605 --- .../secondary/shard_worker_spec.rb | 42 ++++++------------- 1 file changed, 12 insertions(+), 30 deletions(-) diff --git a/ee/spec/workers/geo/repository_verification/secondary/shard_worker_spec.rb b/ee/spec/workers/geo/repository_verification/secondary/shard_worker_spec.rb index 5e0c7cd66bbf6..f5e67ebaad13e 100644 --- a/ee/spec/workers/geo/repository_verification/secondary/shard_worker_spec.rb +++ b/ee/spec/workers/geo/repository_verification/secondary/shard_worker_spec.rb @@ -95,23 +95,18 @@ let(:project5_both_verified) { create(:repository_state, :repository_verified, :wiki_verified).project } let(:project6_both_verified) { create(:repository_state, :repository_verified, :wiki_verified).project } - # https://gitlab.com/gitlab-org/gitlab/issues/12455 it 'handles multiple batches of projects needing verification' do reg1 = create(:geo_project_registry, :synced, :repository_verification_outdated, project: project1_repo_verified) reg2 = create(:geo_project_registry, :synced, :repository_verification_outdated, project: project2_repo_verified) - expect(secondary_single_worker).to receive(:perform_async).with(reg1.id).once + expect(secondary_single_worker).to receive(:perform_async).with(reg1.id).once.and_call_original + expect(secondary_single_worker).to receive(:perform_async).with(reg2.id).once.and_call_original - subject.perform(shard_name) - - reg1.update!(repository_verification_checksum_sha: project1_repo_verified.repository_state.repository_verification_checksum) - - expect(secondary_single_worker).to receive(:perform_async).with(reg2.id).once - - subject.perform(shard_name) + 3.times do + Sidekiq::Testing.inline! { subject.perform(shard_name) } + end end - # https://gitlab.com/gitlab-org/gitlab/issues/12455 it 'handles multiple batches of projects needing verification, skipping failed repos' do reg1 = create(:geo_project_registry, :synced, :repository_verification_outdated, project: project1_repo_verified) reg2 = create(:geo_project_registry, :synced, :repository_verification_outdated, project: project2_repo_verified) @@ -120,27 +115,14 @@ create(:geo_project_registry, :synced, :repository_verification_failed, :wiki_verification_failed, project: project5_both_verified) reg6 = create(:geo_project_registry, :synced, project: project6_both_verified) - expect(secondary_single_worker).to receive(:perform_async).with(reg1.id).once - - subject.perform(shard_name) - - reg1.update!(repository_verification_checksum_sha: project1_repo_verified.repository_state.repository_verification_checksum) - - expect(secondary_single_worker).to receive(:perform_async).with(reg2.id).once + expect(secondary_single_worker).to receive(:perform_async).with(reg1.id).once.and_call_original + expect(secondary_single_worker).to receive(:perform_async).with(reg2.id).once.and_call_original + expect(secondary_single_worker).to receive(:perform_async).with(reg4.id).once.and_call_original + expect(secondary_single_worker).to receive(:perform_async).with(reg6.id).once.and_call_original - subject.perform(shard_name) - - reg2.update!(repository_verification_checksum_sha: project2_repo_verified.repository_state.repository_verification_checksum) - - expect(secondary_single_worker).to receive(:perform_async).with(reg4.id).once - - subject.perform(shard_name) - - reg4.update!(last_wiki_verification_failure: 'Failed!') - - expect(secondary_single_worker).to receive(:perform_async).with(reg6.id).once - - subject.perform(shard_name) + 7.times do + Sidekiq::Testing.inline! { subject.perform(shard_name) } + end end end -- GitLab