From d9ab72d6080f594d0b3cae15f14b3ef2c6c638cb Mon Sep 17 00:00:00 2001 From: GitLab Bot Date: Wed, 20 Oct 2021 08:43:02 +0000 Subject: Add latest changes from gitlab-org/gitlab@14-4-stable-ee --- app/workers/ci/build_finished_worker.rb | 10 +++---- .../ci/create_downstream_pipeline_worker.rb | 19 ++++++++++++ app/workers/ci/delete_unit_tests_worker.rb | 2 +- .../pipeline_artifacts/expire_artifacts_worker.rb | 2 +- app/workers/ci/stuck_builds/drop_running_worker.rb | 34 ++++++++++++++++++++++ .../ci/stuck_builds/drop_scheduled_worker.rb | 34 ++++++++++++++++++++++ 6 files changed, 94 insertions(+), 7 deletions(-) create mode 100644 app/workers/ci/create_downstream_pipeline_worker.rb create mode 100644 app/workers/ci/stuck_builds/drop_running_worker.rb create mode 100644 app/workers/ci/stuck_builds/drop_scheduled_worker.rb (limited to 'app/workers/ci') diff --git a/app/workers/ci/build_finished_worker.rb b/app/workers/ci/build_finished_worker.rb index 3bca3015988..f047ba8fde5 100644 --- a/app/workers/ci/build_finished_worker.rb +++ b/app/workers/ci/build_finished_worker.rb @@ -15,13 +15,13 @@ module Ci ARCHIVE_TRACES_IN = 2.minutes.freeze - # rubocop: disable CodeReuse/ActiveRecord def perform(build_id) - Ci::Build.find_by(id: build_id).try do |build| - process_build(build) - end + return unless build = Ci::Build.find_by(id: build_id) # rubocop: disable CodeReuse/ActiveRecord + return unless build.project + return if build.project.pending_delete? + + process_build(build) end - # rubocop: enable CodeReuse/ActiveRecord private diff --git a/app/workers/ci/create_downstream_pipeline_worker.rb b/app/workers/ci/create_downstream_pipeline_worker.rb new file mode 100644 index 00000000000..6d4cd2539c1 --- /dev/null +++ b/app/workers/ci/create_downstream_pipeline_worker.rb @@ -0,0 +1,19 @@ +# frozen_string_literal: true + +module Ci + class CreateDownstreamPipelineWorker # rubocop:disable Scalability/IdempotentWorker + include ::ApplicationWorker + include ::PipelineQueue + + sidekiq_options retry: 3 + worker_resource_boundary :cpu + + def perform(bridge_id) + ::Ci::Bridge.find_by_id(bridge_id).try do |bridge| + ::Ci::CreateDownstreamPipelineService + .new(bridge.project, bridge.user) + .execute(bridge) + end + end + end +end diff --git a/app/workers/ci/delete_unit_tests_worker.rb b/app/workers/ci/delete_unit_tests_worker.rb index d5bb72ce80c..01d909773d2 100644 --- a/app/workers/ci/delete_unit_tests_worker.rb +++ b/app/workers/ci/delete_unit_tests_worker.rb @@ -10,7 +10,7 @@ module Ci include CronjobQueue # rubocop:enable Scalability/CronWorkerContext - feature_category :continuous_integration + feature_category :code_testing idempotent! def perform diff --git a/app/workers/ci/pipeline_artifacts/expire_artifacts_worker.rb b/app/workers/ci/pipeline_artifacts/expire_artifacts_worker.rb index 2af07cf6f93..cde3d71286e 100644 --- a/app/workers/ci/pipeline_artifacts/expire_artifacts_worker.rb +++ b/app/workers/ci/pipeline_artifacts/expire_artifacts_worker.rb @@ -14,7 +14,7 @@ module Ci deduplicate :until_executed, including_scheduled: true idempotent! - feature_category :continuous_integration + feature_category :build_artifacts def perform service = ::Ci::PipelineArtifacts::DestroyAllExpiredService.new diff --git a/app/workers/ci/stuck_builds/drop_running_worker.rb b/app/workers/ci/stuck_builds/drop_running_worker.rb new file mode 100644 index 00000000000..db571fdc38d --- /dev/null +++ b/app/workers/ci/stuck_builds/drop_running_worker.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +module Ci + module StuckBuilds + class DropRunningWorker + include ApplicationWorker + include ExclusiveLeaseGuard + + idempotent! + + # rubocop:disable Scalability/CronWorkerContext + # This is an instance-wide cleanup query, so there's no meaningful + # scope to consider this in the context of. + include CronjobQueue + # rubocop:enable Scalability/CronWorkerContext + + data_consistency :always + + feature_category :continuous_integration + + def perform + try_obtain_lease do + Ci::StuckBuilds::DropRunningService.new.execute + end + end + + private + + def lease_timeout + 30.minutes + end + end + end +end diff --git a/app/workers/ci/stuck_builds/drop_scheduled_worker.rb b/app/workers/ci/stuck_builds/drop_scheduled_worker.rb new file mode 100644 index 00000000000..923841771cf --- /dev/null +++ b/app/workers/ci/stuck_builds/drop_scheduled_worker.rb @@ -0,0 +1,34 @@ +# frozen_string_literal: true + +module Ci + module StuckBuilds + class DropScheduledWorker + include ApplicationWorker + include ExclusiveLeaseGuard + + idempotent! + + # rubocop:disable Scalability/CronWorkerContext + # This is an instance-wide cleanup query, so there's no meaningful + # scope to consider this in the context of. + include CronjobQueue + # rubocop:enable Scalability/CronWorkerContext + + data_consistency :always + + feature_category :continuous_integration + + def perform + try_obtain_lease do + Ci::StuckBuilds::DropScheduledService.new.execute + end + end + + private + + def lease_timeout + 30.minutes + end + end + end +end -- cgit v1.2.3