Browse Source

Set merge request as non processing if it fails (#2598)

* Set merge request to no longer processing if it fails

* clear last_failed_attempt as soon as we start processing the merge
pull/2617/head
kosiakkatrina 2 years ago committed by Kat
parent
commit
ff01394ca9
  1. 2
      app/controllers/merge_requests_controller.rb
  2. 4
      app/jobs/process_merge_request_job.rb
  3. 10
      spec/jobs/process_merge_request_job_spec.rb

2
app/controllers/merge_requests_controller.rb

@ -62,7 +62,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

4
app/jobs/process_merge_request_job.rb

@ -7,8 +7,8 @@ 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)
merge_request.update!(last_failed_attempt: Time.zone.now, processing: false)
end
end

10
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

Loading…
Cancel
Save