diff options
Diffstat (limited to 'app/workers/ci/refs/unlock_previous_pipelines_worker.rb')
-rw-r--r-- | app/workers/ci/refs/unlock_previous_pipelines_worker.rb | 26 |
1 files changed, 26 insertions, 0 deletions
diff --git a/app/workers/ci/refs/unlock_previous_pipelines_worker.rb b/app/workers/ci/refs/unlock_previous_pipelines_worker.rb new file mode 100644 index 00000000000..bf595590cb1 --- /dev/null +++ b/app/workers/ci/refs/unlock_previous_pipelines_worker.rb @@ -0,0 +1,26 @@ +# frozen_string_literal: true + +module Ci + module Refs + class UnlockPreviousPipelinesWorker + include ApplicationWorker + + data_consistency :always # rubocop:disable SidekiqLoadBalancing/WorkerDataConsistency + + sidekiq_options retry: 3 + include PipelineBackgroundQueue + + idempotent! + + def perform(ref_id) + ::Ci::Ref.find_by_id(ref_id).try do |ref| + pipeline = ref.last_finished_pipeline + result = ::Ci::Refs::EnqueuePipelinesToUnlockService.new.execute(ref, before_pipeline: pipeline) + + log_extra_metadata_on_done(:total_pending_entries, result[:total_pending_entries]) + log_extra_metadata_on_done(:total_new_entries, result[:total_new_entries]) + end + end + end + end +end |