diff --git a/app/services/ci/pipeline_processing/atomic_processing_service.rb b/app/services/ci/pipeline_processing/atomic_processing_service.rb index 8211507fb9560369d7a2d325e4131519f561776d..750272c3ecb0984e8c542a43d8215dbe2b10d634 100644 --- a/app/services/ci/pipeline_processing/atomic_processing_service.rb +++ b/app/services/ci/pipeline_processing/atomic_processing_service.rb @@ -144,6 +144,10 @@ def lease_timeout DEFAULT_LEASE_TIMEOUT end + def lease_taken_log_level + :info + end + def log_running_reset_skipped_jobs_service(jobs) Gitlab::AppJsonLogger.info( class: self.class.name.to_s, diff --git a/spec/services/ci/pipeline_processing/atomic_processing_service_spec.rb b/spec/services/ci/pipeline_processing/atomic_processing_service_spec.rb index 15f2cc0990c6f5c5bf1b861ae9a2c4379a54a791..93dc9481bf0b22e53ddd70c3cfc315332cdc1cdd 100644 --- a/spec/services/ci/pipeline_processing/atomic_processing_service_spec.rb +++ b/spec/services/ci/pipeline_processing/atomic_processing_service_spec.rb @@ -4,6 +4,7 @@ RSpec.describe Ci::PipelineProcessing::AtomicProcessingService, feature_category: :continuous_integration do include RepoHelpers + include ExclusiveLeaseHelpers describe 'Pipeline Processing Service Tests With Yaml' do let_it_be(:project) { create(:project, :repository) } @@ -1233,6 +1234,19 @@ def event_on_pipeline(event) end end + context 'when the exclusive lease is taken' do + let(:lease_key) { "ci/pipeline_processing/atomic_processing_service::pipeline_id:#{pipeline.id}" } + + it 'skips pipeline processing' do + create_build('linux', stage_idx: 0) + + stub_exclusive_lease_taken(lease_key) + + expect(Gitlab::AppJsonLogger).to receive(:info).with(a_hash_including(message: /^Cannot obtain an exclusive lease/)) + expect(process_pipeline).to be_falsy + end + end + private def all_builds