summaryrefslogtreecommitdiff
path: root/app/services
diff options
context:
space:
mode:
authorOswaldo Ferreira <oswaldo@gitlab.com>2017-09-27 17:38:23 -0300
committerOswaldo Ferreira <oswaldo@gitlab.com>2017-09-27 17:56:51 -0300
commite38dc10c09ac6e6d7752d2bb9eeb0c3feab9765a (patch)
treef7dc3283615bb00dc81c5b12196d2cf3512a7fec /app/services
parent38a848be1c1ea5cba3112def8b3d64a2af056f0e (diff)
downloadgitlab-ce-e38dc10c09ac6e6d7752d2bb9eeb0c3feab9765a.tar.gz
Clean merge_jid whenever necessary on the merge process38476-improve-merge-jid-cleanup-on-merge-process
MergeRequest#merge_jid should be cleaned up whenever we hit a known error on MergeService#execute. This way we can keep track if the MR is really "ongoing" or "stuck"
Diffstat (limited to 'app/services')
-rw-r--r--app/services/merge_requests/merge_service.rb19
1 files changed, 12 insertions, 7 deletions
diff --git a/app/services/merge_requests/merge_service.rb b/app/services/merge_requests/merge_service.rb
index 07cbd8f92a9..bf26859dd6d 100644
--- a/app/services/merge_requests/merge_service.rb
+++ b/app/services/merge_requests/merge_service.rb
@@ -14,13 +14,13 @@ module MergeRequests
@merge_request = merge_request
unless @merge_request.mergeable?
- return log_merge_error('Merge request is not mergeable', save_message_on_model: true)
+ return handle_merge_error(log_message: 'Merge request is not mergeable', save_message_on_model: true)
end
@source = find_merge_source
unless @source
- return log_merge_error('No source for merge', save_message_on_model: true)
+ return handle_merge_error(log_message: 'No source for merge', save_message_on_model: true)
end
merge_request.in_locked_state do
@@ -31,8 +31,7 @@ module MergeRequests
end
end
rescue MergeError => e
- clean_merge_jid
- log_merge_error(e.message, save_message_on_model: true)
+ handle_merge_error(log_message: e.message, save_message_on_model: true)
end
private
@@ -74,10 +73,16 @@ module MergeRequests
@merge_request.force_remove_source_branch? ? @merge_request.author : current_user
end
- def log_merge_error(message, save_message_on_model: false)
- Rails.logger.error("MergeService ERROR: #{merge_request_info} - #{message}")
+ # Logs merge error message and cleans `MergeRequest#merge_jid`.
+ #
+ def handle_merge_error(log_message:, save_message_on_model: false)
+ Rails.logger.error("MergeService ERROR: #{merge_request_info} - #{log_message}")
- @merge_request.update(merge_error: message) if save_message_on_model
+ if save_message_on_model
+ @merge_request.update(merge_error: log_message, merge_jid: nil)
+ else
+ clean_merge_jid
+ end
end
def merge_request_info