Merge branch 'sh-improve-merge-service-logging' into 'master'

Improve error logging of MergeService

Relates to #23505

See merge request !6975
This commit is contained in:
Robert Speicher 2016-10-19 10:07:56 +00:00
commit 72af0e7383
2 changed files with 18 additions and 6 deletions

View file

@ -11,14 +11,14 @@ module MergeRequests
def execute(merge_request)
@merge_request = merge_request
return error('Merge request is not mergeable') unless @merge_request.mergeable?
return log_merge_error('Merge request is not mergeable', true) unless @merge_request.mergeable?
merge_request.in_locked_state do
if commit
after_merge
success
else
error('Can not merge changes')
log_merge_error('Can not merge changes', true)
end
end
end
@ -46,8 +46,8 @@ module MergeRequests
merge_request.update(merge_error: e.message)
false
rescue StandardError => e
merge_request.update(merge_error: "Something went wrong during merge")
Rails.logger.error(e.message)
merge_request.update(merge_error: "Something went wrong during merge: #{e.message}")
log_merge_error(e.message)
false
ensure
merge_request.update(in_progress_merge_commit_sha: nil)
@ -65,5 +65,17 @@ module MergeRequests
def branch_deletion_user
@merge_request.force_remove_source_branch? ? @merge_request.author : current_user
end
def log_merge_error(message, http_error = false)
Rails.logger.error("MergeService ERROR: #{merge_request_info} - #{message}")
error(message) if http_error
end
def merge_request_info
project = merge_request.project
"#{project.to_reference}#{merge_request.to_reference}"
end
end
end

View file

@ -120,13 +120,13 @@ describe MergeRequests::MergeService, services: true do
let(:service) { MergeRequests::MergeService.new(project, user, commit_message: 'Awesome message') }
it 'saves error if there is an exception' do
allow(service).to receive(:repository).and_raise("error")
allow(service).to receive(:repository).and_raise("error message")
allow(service).to receive(:execute_hooks)
service.execute(merge_request)
expect(merge_request.merge_error).to eq("Something went wrong during merge")
expect(merge_request.merge_error).to eq("Something went wrong during merge: error message")
end
it 'saves error if there is an PreReceiveError exception' do