From 03ed59d951b076f5bcf83634e33426945114a38e Mon Sep 17 00:00:00 2001 From: Kat Date: Wed, 21 Aug 2024 16:39:19 +0100 Subject: [PATCH] clear last_failed_attempt as soon as we start processing the merge --- app/controllers/merge_requests_controller.rb | 2 +- app/jobs/process_merge_request_job.rb | 2 +- spec/jobs/process_merge_request_job_spec.rb | 10 ++-------- 3 files changed, 4 insertions(+), 10 deletions(-) diff --git a/app/controllers/merge_requests_controller.rb b/app/controllers/merge_requests_controller.rb index 5860c34a4..2f9eeee81 100644 --- a/app/controllers/merge_requests_controller.rb +++ b/app/controllers/merge_requests_controller.rb @@ -61,7 +61,7 @@ class MergeRequestsController < ApplicationController def start_merge if @merge_request.status == "ready_to_merge" - @merge_request.update!(processing: true) + @merge_request.update!(processing: true, last_failed_attempt: nil) ProcessMergeRequestJob.perform_later(merge_request: @merge_request) end diff --git a/app/jobs/process_merge_request_job.rb b/app/jobs/process_merge_request_job.rb index 5146878bf..2f763d00c 100644 --- a/app/jobs/process_merge_request_job.rb +++ b/app/jobs/process_merge_request_job.rb @@ -7,7 +7,7 @@ class ProcessMergeRequestJob < ApplicationJob merge_date = merge_request.merge_date Merge::MergeOrganisationsService.new(absorbing_organisation_id:, merging_organisation_ids:, merge_date:).call - merge_request.update!(request_merged: true, last_failed_attempt: nil) + merge_request.update!(request_merged: true) rescue StandardError merge_request.update!(last_failed_attempt: Time.zone.now, processing: false) end diff --git a/spec/jobs/process_merge_request_job_spec.rb b/spec/jobs/process_merge_request_job_spec.rb index 0c4ae30f1..071285c55 100644 --- a/spec/jobs/process_merge_request_job_spec.rb +++ b/spec/jobs/process_merge_request_job_spec.rb @@ -27,14 +27,7 @@ describe ProcessMergeRequestJob do expect(merge_request.reload.status).to eq("request_merged") end - it "clears last_failed_attempt value" do - merge_request.update!(last_failed_attempt: Time.zone.now) - job.perform(merge_request:) - - expect(merge_request.reload.last_failed_attempt).to be_nil - end - - it "sets last_failed_attempt value if there's an error" do + it "sets last_failed_attempt value if there's an error and sets processing to false" do allow(merge_organisations_service).to receive(:call).and_raise(ActiveRecord::Rollback) expect(merge_request.last_failed_attempt).to be_nil @@ -42,6 +35,7 @@ describe ProcessMergeRequestJob do merge_request.reload expect(merge_request.last_failed_attempt).to be_within(10.seconds).of(Time.zone.now) + expect(merge_request.processing).to eq(false) end end end