Commit c048422f authored by Stan Hu's avatar Stan Hu

Merge branch 'update-rubocop' into 'master'

Update rubocop target ruby version

See merge request gitlab-org/gitlab-ce!24804
parents 42b7f53b 9f05e97a
...@@ -8,6 +8,7 @@ require: ...@@ -8,6 +8,7 @@ require:
- rubocop-rspec - rubocop-rspec
AllCops: AllCops:
TargetRubyVersion: 2.5
TargetRailsVersion: 5.0 TargetRailsVersion: 5.0
Exclude: Exclude:
- 'vendor/**/*' - 'vendor/**/*'
...@@ -184,3 +185,8 @@ Cop/InjectEnterpriseEditionModule: ...@@ -184,3 +185,8 @@ Cop/InjectEnterpriseEditionModule:
Style/ReturnNil: Style/ReturnNil:
Enabled: true Enabled: true
# It isn't always safe to replace `=~` with `.match?`, especially when there are
# nil values on the left hand side
Performance/RegexpMatch:
Enabled: false
...@@ -286,13 +286,11 @@ class MergeRequestDiff < ActiveRecord::Base ...@@ -286,13 +286,11 @@ class MergeRequestDiff < ActiveRecord::Base
return yield(@external_diff_file) if @external_diff_file return yield(@external_diff_file) if @external_diff_file
external_diff.open do |file| external_diff.open do |file|
begin @external_diff_file = file
@external_diff_file = file
yield(@external_diff_file) yield(@external_diff_file)
ensure ensure
@external_diff_file = nil @external_diff_file = nil
end
end end
end end
......
...@@ -23,6 +23,6 @@ class MergeRequestDiffFile < ActiveRecord::Base ...@@ -23,6 +23,6 @@ class MergeRequestDiffFile < ActiveRecord::Base
super super
end end
binary? ? content.unpack('m0').first : content binary? ? content.unpack1('m0') : content
end end
end end
...@@ -1209,11 +1209,9 @@ class Project < ActiveRecord::Base ...@@ -1209,11 +1209,9 @@ class Project < ActiveRecord::Base
def repo_exists? def repo_exists?
strong_memoize(:repo_exists) do strong_memoize(:repo_exists) do
begin repository.exists?
repository.exists? rescue
rescue false
false
end
end end
end end
......
...@@ -205,12 +205,10 @@ class JiraService < IssueTrackerService ...@@ -205,12 +205,10 @@ class JiraService < IssueTrackerService
# if any transition fails it will log the error message and stop the transition sequence # if any transition fails it will log the error message and stop the transition sequence
def transition_issue(issue) def transition_issue(issue)
jira_issue_transition_id.scan(Gitlab::Regex.jira_transition_id_regex).each do |transition_id| jira_issue_transition_id.scan(Gitlab::Regex.jira_transition_id_regex).each do |transition_id|
begin issue.transitions.build.save!(transition: { id: transition_id })
issue.transitions.build.save!(transition: { id: transition_id }) rescue => error
rescue => error log_error("Issue transition failed", error: error.message, client_url: client_url)
log_error("Issue transition failed", error: error.message, client_url: client_url) return false
return false
end
end end
end end
......
...@@ -265,16 +265,14 @@ class Repository ...@@ -265,16 +265,14 @@ class Repository
# to avoid unnecessary syncing. # to avoid unnecessary syncing.
def keep_around(*shas) def keep_around(*shas)
shas.each do |sha| shas.each do |sha|
begin next unless sha.present? && commit_by(oid: sha)
next unless sha.present? && commit_by(oid: sha)
next if kept_around?(sha) next if kept_around?(sha)
# This will still fail if the file is corrupted (e.g. 0 bytes) # This will still fail if the file is corrupted (e.g. 0 bytes)
raw_repository.write_ref(keep_around_ref_name(sha), sha) raw_repository.write_ref(keep_around_ref_name(sha), sha)
rescue Gitlab::Git::CommandError => ex rescue Gitlab::Git::CommandError => ex
Rails.logger.error "Unable to create keep-around reference for repository #{disk_path}: #{ex}" Rails.logger.error "Unable to create keep-around reference for repository #{disk_path}: #{ex}"
end
end end
end end
......
...@@ -26,16 +26,14 @@ class UserInteractedProject < ActiveRecord::Base ...@@ -26,16 +26,14 @@ class UserInteractedProject < ActiveRecord::Base
cached_exists?(attributes) do cached_exists?(attributes) do
transaction(requires_new: true) do transaction(requires_new: true) do
begin where(attributes).select(1).first || create!(attributes)
where(attributes).select(1).first || create!(attributes) true # not caching the whole record here for now
true # not caching the whole record here for now rescue ActiveRecord::RecordNotUnique
rescue ActiveRecord::RecordNotUnique # Note, above queries are not atomic and prone
# Note, above queries are not atomic and prone # to race conditions (similar like #find_or_create!).
# to race conditions (similar like #find_or_create!). # In the case where we hit this, the record we want
# In the case where we hit this, the record we want # already exists - shortcut and return.
# already exists - shortcut and return. true
true
end
end end
end end
end end
......
...@@ -9,16 +9,14 @@ class DetailedStatusEntity < Grape::Entity ...@@ -9,16 +9,14 @@ class DetailedStatusEntity < Grape::Entity
expose :details_path expose :details_path
expose :illustration do |status| expose :illustration do |status|
begin illustration = {
illustration = { image: ActionController::Base.helpers.image_path(status.illustration[:image])
image: ActionController::Base.helpers.image_path(status.illustration[:image]) }
} illustration = status.illustration.merge(illustration)
illustration = status.illustration.merge(illustration)
illustration illustration
rescue NotImplementedError rescue NotImplementedError
# ignored # ignored
end
end end
expose :favicon do |status| expose :favicon do |status|
......
...@@ -42,17 +42,15 @@ module Projects ...@@ -42,17 +42,15 @@ module Projects
def parse_response_links(objects_response) def parse_response_links(objects_response)
objects_response.each_with_object([]) do |entry, link_list| objects_response.each_with_object([]) do |entry, link_list|
begin link = entry.dig('actions', DOWNLOAD_ACTION, 'href')
link = entry.dig('actions', DOWNLOAD_ACTION, 'href')
raise DownloadLinkNotFound unless link raise DownloadLinkNotFound unless link
link_list << LfsDownloadObject.new(oid: entry['oid'], link_list << LfsDownloadObject.new(oid: entry['oid'],
size: entry['size'], size: entry['size'],
link: add_credentials(link)) link: add_credentials(link))
rescue DownloadLinkNotFound, Addressable::URI::InvalidURIError rescue DownloadLinkNotFound, Addressable::URI::InvalidURIError
log_error("Link for Lfs Object with oid #{entry['oid']} not found or invalid.") log_error("Link for Lfs Object with oid #{entry['oid']} not found or invalid.")
end
end end
end end
......
...@@ -75,17 +75,15 @@ module Projects ...@@ -75,17 +75,15 @@ module Projects
create_tmp_storage_dir create_tmp_storage_dir
File.open(tmp_filename, 'wb') do |file| File.open(tmp_filename, 'wb') do |file|
begin yield file
yield file rescue StandardError => e
rescue StandardError => e # If the lfs file is successfully downloaded it will be removed
# If the lfs file is successfully downloaded it will be removed # when it is added to the project's lfs files.
# when it is added to the project's lfs files. # Nevertheless if any excetion raises the file would remain
# Nevertheless if any excetion raises the file would remain # in the file system. Here we ensure to remove it
# in the file system. Here we ensure to remove it File.unlink(file) if File.exist?(file)
File.unlink(file) if File.exist?(file)
raise e
raise e
end
end end
end end
......
...@@ -25,11 +25,9 @@ module WaitableWorker ...@@ -25,11 +25,9 @@ module WaitableWorker
failed = [] failed = []
args_list.each do |args| args_list.each do |args|
begin new.perform(*args)
new.perform(*args) rescue
rescue failed << args
failed << args
end
end end
bulk_perform_async(failed) if failed.present? bulk_perform_async(failed) if failed.present?
......
...@@ -20,11 +20,9 @@ class CreateGpgSignatureWorker ...@@ -20,11 +20,9 @@ class CreateGpgSignatureWorker
# This calculates and caches the signature in the database # This calculates and caches the signature in the database
commits.each do |commit| commits.each do |commit|
begin Gitlab::Gpg::Commit.new(commit).signature
Gitlab::Gpg::Commit.new(commit).signature rescue => e
rescue => e Rails.logger.error("Failed to create signature for commit #{commit.id}. Error: #{e.message}")
Rails.logger.error("Failed to create signature for commit #{commit.id}. Error: #{e.message}")
end
end end
end end
# rubocop: enable CodeReuse/ActiveRecord # rubocop: enable CodeReuse/ActiveRecord
......
...@@ -52,24 +52,22 @@ class EmailsOnPushWorker ...@@ -52,24 +52,22 @@ class EmailsOnPushWorker
end end
valid_recipients(recipients).each do |recipient| valid_recipients(recipients).each do |recipient|
begin send_email(
send_email( recipient,
recipient, project_id,
project_id, author_id: author_id,
author_id: author_id, ref: ref,
ref: ref, action: action,
action: action, compare: compare,
compare: compare, reverse_compare: reverse_compare,
reverse_compare: reverse_compare, diff_refs: diff_refs,
diff_refs: diff_refs, send_from_committer_email: send_from_committer_email,
send_from_committer_email: send_from_committer_email, disable_diffs: disable_diffs
disable_diffs: disable_diffs )
)
# These are input errors and won't be corrected even if Sidekiq retries
# These are input errors and won't be corrected even if Sidekiq retries rescue Net::SMTPFatalError, Net::SMTPSyntaxError => e
rescue Net::SMTPFatalError, Net::SMTPSyntaxError => e logger.info("Failed to send e-mail for project '#{project.full_name}' to #{recipient}: #{e}")
logger.info("Failed to send e-mail for project '#{project.full_name}' to #{recipient}: #{e}")
end
end end
ensure ensure
@email = nil @email = nil
......
...@@ -126,11 +126,9 @@ module ObjectStorage ...@@ -126,11 +126,9 @@ module ObjectStorage
def process_uploader(uploader) def process_uploader(uploader)
MigrationResult.new(uploader.upload).tap do |result| MigrationResult.new(uploader.upload).tap do |result|
begin uploader.migrate!(@to_store)
uploader.migrate!(@to_store) rescue => e
rescue => e result.error = e
result.error = e
end
end end
end end
end end
......
...@@ -8,16 +8,15 @@ class PipelineScheduleWorker ...@@ -8,16 +8,15 @@ class PipelineScheduleWorker
def perform def perform
Ci::PipelineSchedule.active.where("next_run_at < ?", Time.now) Ci::PipelineSchedule.active.where("next_run_at < ?", Time.now)
.preload(:owner, :project).find_each do |schedule| .preload(:owner, :project).find_each do |schedule|
begin
Ci::CreatePipelineService.new(schedule.project, Ci::CreatePipelineService.new(schedule.project,
schedule.owner, schedule.owner,
ref: schedule.ref) ref: schedule.ref)
.execute!(:schedule, ignore_skip_ci: true, save_on_errors: true, schedule: schedule) .execute!(:schedule, ignore_skip_ci: true, save_on_errors: true, schedule: schedule)
rescue => e rescue => e
error(schedule, e) error(schedule, e)
ensure ensure
schedule.schedule_next_run! schedule.schedule_next_run!
end
end end
end end
# rubocop: enable CodeReuse/ActiveRecord # rubocop: enable CodeReuse/ActiveRecord
......
...@@ -6,11 +6,9 @@ class RemoveExpiredMembersWorker ...@@ -6,11 +6,9 @@ class RemoveExpiredMembersWorker
def perform def perform
Member.expired.find_each do |member| Member.expired.find_each do |member|
begin Members::DestroyService.new.execute(member, skip_authorization: true)
Members::DestroyService.new.execute(member, skip_authorization: true) rescue => ex
rescue => ex logger.error("Expired Member ID=#{member.id} cannot be removed - #{ex}")
logger.error("Expired Member ID=#{member.id} cannot be removed - #{ex}")
end
end end
end end
end end
...@@ -14,10 +14,8 @@ module Rack ...@@ -14,10 +14,8 @@ module Rack
end end
gitlab_trusted_proxies = Array(Gitlab.config.gitlab.trusted_proxies).map do |proxy| gitlab_trusted_proxies = Array(Gitlab.config.gitlab.trusted_proxies).map do |proxy|
begin IPAddr.new(proxy)
IPAddr.new(proxy) rescue IPAddr::InvalidAddressError
rescue IPAddr::InvalidAddressError
end
end.compact end.compact
Rails.application.config.action_dispatch.trusted_proxies = ( Rails.application.config.action_dispatch.trusted_proxies = (
......
...@@ -126,11 +126,10 @@ class ProjectForeignKeysWithCascadingDeletes < ActiveRecord::Migration[4.2] ...@@ -126,11 +126,10 @@ class ProjectForeignKeysWithCascadingDeletes < ActiveRecord::Migration[4.2]
queues.each do |queue| queues.each do |queue|
# Stealing is racy so it's possible a pop might be called on an # Stealing is racy so it's possible a pop might be called on an
# already-empty queue. # already-empty queue.
begin
remove_orphans(*queue.pop(true)) remove_orphans(*queue.pop(true))
stolen = true stolen = true
rescue ThreadError rescue ThreadError
end
end end
break unless stolen break unless stolen
......
...@@ -103,17 +103,15 @@ module API ...@@ -103,17 +103,15 @@ module API
detail 'This feature was introduced in GitLab 11.9' detail 'This feature was introduced in GitLab 11.9'
end end
post ':id/milestones/:milestone_id/promote' do post ':id/milestones/:milestone_id/promote' do
begin authorize! :admin_milestone, user_project
authorize! :admin_milestone, user_project authorize! :admin_milestone, user_project.group
authorize! :admin_milestone, user_project.group
milestone = user_project.milestones.find(params[:milestone_id]) milestone = user_project.milestones.find(params[:milestone_id])
Milestones::PromoteService.new(user_project, current_user).execute(milestone) Milestones::PromoteService.new(user_project, current_user).execute(milestone)
status(200) status(200)
rescue Milestones::PromoteService::PromoteMilestoneError => error rescue Milestones::PromoteService::PromoteMilestoneError => error
render_api_error!(error.message, 400) render_api_error!(error.message, 400)
end
end end
end end
end end
......
...@@ -89,11 +89,9 @@ module API ...@@ -89,11 +89,9 @@ module API
optional :format, type: String, desc: 'The archive format' optional :format, type: String, desc: 'The archive format'
end end
get ':id/repository/archive', requirements: { format: Gitlab::PathRegex.archive_formats_regex } do get ':id/repository/archive', requirements: { format: Gitlab::PathRegex.archive_formats_regex } do
begin send_git_archive user_project.repository, ref: params[:sha], format: params[:format], append_sha: true
send_git_archive user_project.repository, ref: params[:sha], format: params[:format], append_sha: true rescue
rescue not_found!('File')
not_found!('File')
end
end end
desc 'Compare two branches, tags, or commits' do desc 'Compare two branches, tags, or commits' do
...@@ -118,12 +116,10 @@ module API ...@@ -118,12 +116,10 @@ module API
optional :sort, type: String, values: %w[asc desc], default: 'asc', desc: 'Sort by asc (ascending) or desc (descending)' optional :sort, type: String, values: %w[asc desc], default: 'asc', desc: 'Sort by asc (ascending) or desc (descending)'
end end
get ':id/repository/contributors' do get ':id/repository/contributors' do
begin contributors = ::Kaminari.paginate_array(user_project.repository.contributors(order_by: params[:order_by], sort: params[:sort]))
contributors = ::Kaminari.paginate_array(user_project.repository.contributors(order_by: params[:order_by], sort: params[:sort])) present paginate(contributors), with: Entities::Contributor
present paginate(contributors), with: Entities::Contributor rescue
rescue not_found!
not_found!
end
end end
desc 'Get the common ancestor between commits' do desc 'Get the common ancestor between commits' do
......
...@@ -11,11 +11,10 @@ module Gitlab ...@@ -11,11 +11,10 @@ module Gitlab
# So we chose a way to use ::Ci::Build directly and we don't change the `archive!` method until 11.1 # So we chose a way to use ::Ci::Build directly and we don't change the `archive!` method until 11.1
::Ci::Build.finished.without_archived_trace ::Ci::Build.finished.without_archived_trace
.where(id: start_id..stop_id).find_each do |build| .where(id: start_id..stop_id).find_each do |build|
begin
build.trace.archive! build.trace.archive!
rescue => e rescue => e
Rails.logger.error "Failed to archive live trace. id: #{build.id} message: #{e.message}" Rails.logger.error "Failed to archive live trace. id: #{build.id} message: #{e.message}"
end
end end
end end
end end
......
...@@ -302,14 +302,12 @@ module Gitlab ...@@ -302,14 +302,12 @@ module Gitlab
ldap_identities = Identity.where("provider like 'ldap%'").where(id: start_id..end_id) ldap_identities = Identity.where("provider like 'ldap%'").where(id: start_id..end_id)
ldap_identities.each do |identity| ldap_identities.each do |identity|
begin identity.extern_uid = Gitlab::Auth::LDAP::DN.new(identity.extern_uid).to_normalized_s
identity.extern_uid = Gitlab::Auth::LDAP::DN.new(identity.extern_uid).to_normalized_s unless identity.save
unless identity.save Rails.logger.info "Unable to normalize \"#{identity.extern_uid}\". Skipping."
Rails.logger.info "Unable to normalize \"#{identity.extern_uid}\". Skipping."
end
rescue Gitlab::Auth::LDAP::DN::FormatError => e
Rails.logger.info "Unable to normalize \"#{identity.extern_uid}\" due to \"#{e.message}\". Skipping."
end end
rescue Gitlab::Auth::LDAP::DN::FormatError => e
Rails.logger.info "Unable to normalize \"#{identity.extern_uid}\" due to \"#{e.message}\". Skipping."
end end
end end
......
...@@ -34,18 +34,16 @@ module Gitlab ...@@ -34,18 +34,16 @@ module Gitlab
def filter_error_files(files) def filter_error_files(files)
files.partition do |file| files.partition do |file|
begin file.to_h
file.to_h true
true rescue => e
rescue => e msg = <<~MSG
msg = <<~MSG
Error parsing path "#{file.path}": Error parsing path "#{file.path}":
#{e.message} #{e.message}
#{e.backtrace.join("\n ")} #{e.backtrace.join("\n ")}
MSG MSG
Rails.logger.error(msg) Rails.logger.error(msg)
false false
end
end end
end end
......
...@@ -79,31 +79,29 @@ module Gitlab ...@@ -79,31 +79,29 @@ module Gitlab
create_labels create_labels
client.issues(repo).each do |issue| client.issues(repo).each do |issue|
begin description = ''
description = '' description += @formatter.author_line(issue.author) unless find_user_id(issue.author)
description += @formatter.author_line(issue.author) unless find_user_id(issue.author) description += issue.description
description += issue.description
label_name = issue.kind
label_name = issue.kind milestone = issue.milestone ? project.milestones.find_or_create_by(title: issue.milestone) : nil
milestone = issue.milestone ? project.milestones.find_or_create_by(title: issue.milestone) : nil
gitlab_issue = project.issues.create!(
gitlab_issue = project.issues.create!( iid: issue.iid,
iid: issue.iid, title: issue.title,
title: issue.title, description: description,
description: description, state: issue.state,
state: issue.state, author_id: gitlab_user_id(project, issue.author),
author_id: gitlab_user_id(project, issue.author), milestone: milestone,
milestone: milestone, created_at: issue.created_at,
created_at: issue.created_at, updated_at: issue.updated_at
updated_at: issue.updated_at )
)
gitlab_issue.labels << @labels[label_name]
gitlab_issue.labels << @labels[label_name]
import_issue_comments(issue, gitlab_issue) if gitlab_issue.persisted?
import_issue_comments(issue, gitlab_issue) if gitlab_issue.persisted? rescue StandardError => e
rescue StandardError => e errors << { type: :issue, iid: issue.iid, errors: e.message }
errors << { type: :issue, iid: issue.iid, errors: e.message }
end
end end
end end
# rubocop: enable CodeReuse/ActiveRecord # rubocop: enable CodeReuse/ActiveRecord
...@@ -150,37 +148,35 @@ module Gitlab ...@@ -150,37 +148,35 @@ module Gitlab
pull_requests = client.pull_requests(repo) pull_requests = client.pull_requests(repo)
pull_requests.each do |pull_request| pull_requests.each do |pull_request|
begin description = ''
description = '' description += @formatter.author_line(pull_request.author) unless find_user_id(pull_request.author)
description += @formatter.author_line(pull_request.author) unless find_user_id(pull_request.author) description += pull_request.description
description += pull_request.description
source_branch_sha = pull_request.source_branch_sha
source_branch_sha = pull_request.source_branch_sha target_branch_sha = pull_request.target_branch_sha
target_branch_sha = pull_request.target_branch_sha source_branch_sha = project.repository.commit(source_branch_sha)&.sha || source_branch_sha
source_branch_sha = project.repository.commit(source_branch_sha)&.sha || source_branch_sha target_branch_sha = project.repository.commit(target_branch_sha)&.sha || target_branch_sha
target_branch_sha = project.repository.commit(target_branch_sha)&.sha || target_branch_sha
merge_request = project.merge_requests.create!(
merge_request = project.merge_requests.create!( iid: pull_request.iid,
iid: pull_request.iid, title: pull_request.title,
title: pull_request.title, description: description,
description: description, source_project: project,
source_project: project, source_branch: pull_request.source_branch_name,
source_branch: pull_request.source_branch_name, source_branch_sha: source_branch_sha,
source_branch_sha: source_branch_sha, target_project: project,
target_project: project, target_branch: pull_request.target_branch_name,
target_branch: pull_request.target_branch_name, target_branch_sha: target_branch_sha,
target_branch_sha: target_branch_sha, state: pull_request.state,
state: pull_request.state, author_id: gitlab_user_id(project, pull_request.author),
author_id: gitlab_user_id(project, pull_request.author), assignee_id: nil,
assignee_id: nil, created_at: pull_request.created_at,
created_at: pull_request.created_at, updated_at: pull_request.updated_at
updated_at: pull_request.updated_at )
)
import_pull_request_comments(pull_request, merge_request) if merge_request.persisted?
import_pull_request_comments(pull_request, merge_request) if merge_request.persisted? rescue StandardError => e
rescue StandardError => e errors << { type: :pull_request, iid: pull_request.iid, errors: e.message, trace: e.backtrace.join("\n"), raw_response: pull_request.raw }
errors << { type: :pull_request, iid: pull_request.iid, errors: e.message, trace: e.backtrace.join("\n"), raw_response: pull_request.raw }
end
end end
end end
...@@ -211,23 +207,21 @@ module Gitlab ...@@ -211,23 +207,21 @@ module Gitlab
end end
inline_comments.each do |comment| inline_comments.each do |comment|
begin attributes = pull_request_comment_attributes(comment)
attributes = pull_request_comment_attributes(comment) attributes[:discussion_id] = discussion_map[comment.parent_id] if comment.has_parent?
attributes[:discussion_id] = discussion_map[comment.parent_id] if comment.has_parent?
attributes.merge!( attributes.merge!(
position: position_map[comment.iid], position: position_map[comment.iid],
type: 'DiffNote') type: 'DiffNote')
note = merge_request.notes.create!(attributes) note = merge_request.notes.create!(attributes)
# We can't store a discussion ID until a note is created, so if # We can't store a discussion ID until a note is created, so if
# replies are created before the parent the discussion ID won't be # replies are created before the parent the discussion ID won't be
# linked properly. # linked properly.
discussion_map[comment.iid] = note.discussion_id discussion_map[comment.iid] = note.discussion_id
rescue StandardError => e rescue StandardError => e
errors << { type: :pull_request, iid: comment.iid, errors: e.message } errors << { type: :pull_request, iid: comment.iid, errors: e.message }
end
end end
end end
...@@ -245,11 +239,9 @@ module Gitlab ...@@ -245,11 +239,9 @@ module Gitlab
def import_standalone_pr_comments(pr_comments, merge_request) def import_standalone_pr_comments(pr_comments, merge_request)
pr_comments.each do |comment| pr_comments.each do |comment|
begin merge_request.notes.create!(pull_request_comment_attributes(comment))
merge_request.notes.create!(pull_request_comment_attributes(comment)) rescue StandardError => e
rescue StandardError => e errors << { type: :pull_request, iid: comment.iid, errors: e.message }
errors << { type: :pull_request, iid: comment.iid, errors: e.message }
end
end end
end end
......
...@@ -162,27 +162,23 @@ module Gitlab ...@@ -162,27 +162,23 @@ module Gitlab
restore_branches(batch) if recover_missing_commits restore_branches(batch) if recover_missing_commits
batch.each do |pull_request| batch.each do |pull_request|
begin import_bitbucket_pull_request(pull_request)
import_bitbucket_pull_request(pull_request) rescue StandardError => e
rescue StandardError => e backtrace = Gitlab::Profiler.clean_backtrace(e.backtrace)
backtrace = Gitlab::Profiler.clean_backtrace(e.backtrace) log_error(stage: 'import_pull_requests', iid: pull_request.iid, error: e.message, backtrace: backtrace)
log_error(stage: 'import_pull_requests', iid: pull_request.iid, error: e.message, backtrace: backtrace)
errors << { type: :pull_request, iid: pull_request.iid, errors: e.message, backtrace: backtrace.join("\n"), raw_response: pull_request.raw }
errors << { type: :pull_request, iid: pull_request.iid, errors: e.message, backtrace: backtrace.join("\n"), raw_response: pull_request.raw }
end
end end
end end
end end
def delete_temp_branches def delete_temp_branches
@temp_branches.each do |branch| @temp_branches.each do |branch|
begin client.delete_branch(project_key, repository_slug, branch.name, branch.sha)
client.delete_branch(project_key, repository_slug, branch.name, branch.sha) project.repository.delete_branch(branch.name)
project.repository.delete_branch(branch.name) rescue BitbucketServer::Connection::ConnectionError => e
rescue BitbucketServer::Connection::ConnectionError => e log_error(stage: 'delete_temp_branches', branch: branch.name, error: e.message)
log_error(stage: 'delete_temp_branches', branch: branch.name, error: e.message) @errors << { type: :delete_temp_branches, branch_name: branch.name, errors: e.message }
@errors << { type: :delete_temp_branches, branch_name: branch.name, errors: e.message }
end
end end
end end
...@@ -323,16 +319,14 @@ module Gitlab ...@@ -323,16 +319,14 @@ module Gitlab
def import_standalone_pr_comments(pr_comments, merge_request) def import_standalone_pr_comments(pr_comments, merge_request)
pr_comments.each do |comment| pr_comments.each do |comment|
begin merge_request.notes.create!(pull_request_comment_attributes(comment))
merge_request.notes.create!(pull_request_comment_attributes(comment))
comment.comments.each do |replies| comment.comments.each do |replies|
merge_request.notes.create!(pull_request_comment_attributes(replies)) merge_request.notes.create!(pull_request_comment_attributes(replies))
end
rescue StandardError => e
log_error(stage: 'import_standalone_pr_comments', merge_request_id: merge_request.id, comment_id: comment.id, error: e.message)
errors << { type: :pull_request, comment_id: comment.id, errors: e.message }
end end
rescue StandardError => e
log_error(stage: 'import_standalone_pr_comments', merge_request_id: merge_request.id, comment_id: comment.id, error: e.message)
errors << { type: :pull_request, comment_id: comment.id, errors: e.message }
end end
end end
......
...@@ -98,7 +98,7 @@ module Gitlab ...@@ -98,7 +98,7 @@ module Gitlab
def read_uint32(gz) def read_uint32(gz)
binary = gz.read(4) binary = gz.read(4)
binary.unpack('L>')[0] if binary binary.unpack1('L>') if binary
end end
def read_string(gz) def read_string(gz)
......
...@@ -35,12 +35,10 @@ module Gitlab ...@@ -35,12 +35,10 @@ module Gitlab
threads = Array.new(thread_count) do threads = Array.new(thread_count) do
Thread.new do Thread.new do
pool.with_connection do |connection| pool.with_connection do |connection|
begin Thread.current[MULTI_THREAD_AR_CONNECTION] = connection
Thread.current[MULTI_THREAD_AR_CONNECTION] = connection yield
yield ensure
ensure Thread.current[MULTI_THREAD_AR_CONNECTION] = nil
Thread.current[MULTI_THREAD_AR_CONNECTION] = nil
end
end end
end end
end end
......
...@@ -22,7 +22,7 @@ module Gitlab ...@@ -22,7 +22,7 @@ module Gitlab
# Casts binary data to a SHA1 in hexadecimal. # Casts binary data to a SHA1 in hexadecimal.
def deserialize(value) def deserialize(value)
value = super(value) value = super(value)
value ? value.unpack(PACK_FORMAT)[0] : nil value ? value.unpack1(PACK_FORMAT) : nil
end end
# Casts a SHA1 in hexadecimal to the proper binary format. # Casts a SHA1 in hexadecimal to the proper binary format.
......
...@@ -75,13 +75,11 @@ module Gitlab ...@@ -75,13 +75,11 @@ module Gitlab
@certs = stub_cert_paths.flat_map do |cert_file| @certs = stub_cert_paths.flat_map do |cert_file|
File.read(cert_file).scan(PEM_REGEX).map do |cert| File.read(cert_file).scan(PEM_REGEX).map do |cert|
begin OpenSSL::X509::Certificate.new(cert).to_pem
OpenSSL::X509::Certificate.new(cert).to_pem rescue OpenSSL::OpenSSLError => e
rescue OpenSSL::OpenSSLError => e Rails.logger.error "Could not load certificate #{cert_file} #{e}"
Rails.logger.error "Could not load certificate #{cert_file} #{e}" Gitlab::Sentry.track_exception(e, extra: { cert_file: cert_file })
Gitlab::Sentry.track_exception(e, extra: { cert_file: cert_file }) nil
nil
end
end.compact end.compact
end.uniq.join("\n") end.uniq.join("\n")
end end
......
...@@ -13,17 +13,15 @@ module Gitlab ...@@ -13,17 +13,15 @@ module Gitlab
current_blob_data = nil current_blob_data = nil
@rpc_response.each do |msg| @rpc_response.each do |msg|
begin if msg.oid.blank? && msg.data.blank?
if msg.oid.blank? && msg.data.blank? next
next elsif msg.oid.present?
elsif msg.oid.present? yield new_blob(current_blob_data) if current_blob_data
yield new_blob(current_blob_data) if current_blob_data
current_blob_data = msg.to_h.slice(:oid, :path, :size, :revision, :mode)
current_blob_data = msg.to_h.slice(:oid, :path, :size, :revision, :mode) current_blob_data[:data] = msg.data.dup
current_blob_data[:data] = msg.data.dup else
else current_blob_data[:data] << msg.data
current_blob_data[:data] << msg.data
end
end end
end end
......
...@@ -89,12 +89,10 @@ module Gitlab ...@@ -89,12 +89,10 @@ module Gitlab
def import_labels def import_labels
fetch_resources(:labels, repo, per_page: 100) do |labels| fetch_resources(:labels, repo, per_page: 100) do |labels|
labels.each do |raw| labels.each do |raw|
begin gh_label = LabelFormatter.new(project, raw)
gh_label = LabelFormatter.new(project, raw) gh_label.create!
gh_label.create! rescue => e
rescue => e errors << { type: :label, url: Gitlab::UrlSanitizer.sanitize(gh_label.url), errors: e.message }
errors << { type: :label, url: Gitlab::UrlSanitizer.sanitize(gh_label.url), errors: e.message }
end
end end
end end
...@@ -104,12 +102,10 @@ module Gitlab ...@@ -104,12 +102,10 @@ module Gitlab
def import_milestones def import_milestones
fetch_resources(:milestones, repo, state: :all, per_page: 100) do |milestones| fetch_resources(:milestones, repo, state: :all, per_page: 100) do |milestones|
milestones.each do |raw| milestones.each do |raw|
begin gh_milestone = MilestoneFormatter.new(project, raw)
gh_milestone = MilestoneFormatter.new(project, raw) gh_milestone.create!
gh_milestone.create! rescue => e
rescue => e errors << { type: :milestone, url: Gitlab::UrlSanitizer.sanitize(gh_milestone.url), errors: e.message }
errors << { type: :milestone, url: Gitlab::UrlSanitizer.sanitize(gh_milestone.url), errors: e.message }
end
end end
end end
end end
...@@ -223,24 +219,22 @@ module Gitlab ...@@ -223,24 +219,22 @@ module Gitlab
def create_comments(comments) def create_comments(comments)
ActiveRecord::Base.no_touching do ActiveRecord::Base.no_touching do
comments.each do |raw| comments.each do |raw|
begin comment = CommentFormatter.new(project, raw, client)
comment = CommentFormatter.new(project, raw, client)
# GH does not return info about comment's parent, so we guess it by checking its URL! # GH does not return info about comment's parent, so we guess it by checking its URL!
*_, parent, iid = URI(raw.html_url).path.split('/') *_, parent, iid = URI(raw.html_url).path.split('/')
issuable = if parent == 'issues' issuable = if parent == 'issues'
Issue.find_by(project_id: project.id, iid: iid) Issue.find_by(project_id: project.id, iid: iid)
else else
MergeRequest.find_by(target_project_id: project.id, iid: iid) MergeRequest.find_by(target_project_id: project.id, iid: iid)
end end
next unless issuable next unless issuable
issuable.notes.create!(comment.attributes) issuable.notes.create!(comment.attributes)
rescue => e rescue => e
errors << { type: :comment, url: Gitlab::UrlSanitizer.sanitize(raw.url), errors: e.message } errors << { type: :comment, url: Gitlab::UrlSanitizer.sanitize(raw.url), errors: e.message }
end
end end
end end
end end
...@@ -281,12 +275,10 @@ module Gitlab ...@@ -281,12 +275,10 @@ module Gitlab
def import_releases def import_releases
fetch_resources(:releases, repo, per_page: 100) do |releases| fetch_resources(:releases, repo, per_page: 100) do |releases|
releases.each do |raw| releases.each do |raw|
begin gh_release = ReleaseFormatter.new(project, raw)
gh_release = ReleaseFormatter.new(project, raw) gh_release.create! if gh_release.valid?
gh_release.create! if gh_release.valid? rescue => e
rescue => e errors << { type: :release, url: Gitlab::UrlSanitizer.sanitize(gh_release.url), errors: e.message }
errors << { type: :release, url: Gitlab::UrlSanitizer.sanitize(gh_release.url), errors: e.message }
end
end end
end end
end end
......
...@@ -52,10 +52,8 @@ module Gitlab ...@@ -52,10 +52,8 @@ module Gitlab
pool&.with do |connection| pool&.with do |connection|
prepared.each_slice(settings[:packet_size]) do |slice| prepared.each_slice(settings[:packet_size]) do |slice|
begin connection.write_points(slice)
connection.write_points(slice) rescue StandardError
rescue StandardError
end
end end
end end
rescue Errno::EADDRNOTAVAIL, SocketError => ex rescue Errno::EADDRNOTAVAIL, SocketError => ex
......
...@@ -11,14 +11,13 @@ namespace :gitlab do ...@@ -11,14 +11,13 @@ namespace :gitlab do
Ci::Build.joins(:project) Ci::Build.joins(:project)
.with_artifacts_stored_locally .with_artifacts_stored_locally
.find_each(batch_size: 10) do |build| .find_each(batch_size: 10) do |build|
begin
build.artifacts_file.migrate!(ObjectStorage::Store::REMOTE)
build.artifacts_metadata.migrate!(ObjectStorage::Store::REMOTE)
logger.info("Transferred artifact ID #{build.id} with size #{build.artifacts_size} to object storage") build.artifacts_file.migrate!(ObjectStorage::Store::REMOTE)
rescue => e build.artifacts_metadata.migrate!(ObjectStorage::Store::REMOTE)
logger.error("Failed to transfer artifacts of #{build.id} with error: #{e.message}")
end logger.info("Transferred artifact ID #{build.id} with size #{build.artifacts_size} to object storage")
rescue => e
logger.error("Failed to transfer artifacts of #{build.id} with error: #{e.message}")
end end
end end
end end
......
...@@ -9,13 +9,12 @@ namespace :gitlab do ...@@ -9,13 +9,12 @@ namespace :gitlab do
LfsObject.with_files_stored_locally LfsObject.with_files_stored_locally
.find_each(batch_size: 10) do |lfs_object| .find_each(batch_size: 10) do |lfs_object|
begin
lfs_object.file.migrate!(LfsObjectUploader::Store::REMOTE)
logger.info("Transferred LFS object #{lfs_object.oid} of size #{lfs_object.size.to_i.bytes} to object storage") lfs_object.file.migrate!(LfsObjectUploader::Store::REMOTE)
rescue => e
logger.error("Failed to transfer LFS object #{lfs_object.oid} with error: #{e.message}") logger.info("Transferred LFS object #{lfs_object.oid} of size #{lfs_object.size.to_i.bytes} to object storage")
end rescue => e
logger.error("Failed to transfer LFS object #{lfs_object.oid} with error: #{e.message}")
end end
end end
end end
......
...@@ -26,13 +26,12 @@ namespace :gitlab do ...@@ -26,13 +26,12 @@ namespace :gitlab do
Ci::Build.joins(:project) Ci::Build.joins(:project)
.with_archived_trace_stored_locally .with_archived_trace_stored_locally
.find_each(batch_size: 10) do |build| .find_each(batch_size: 10) do |build|
begin
build.job_artifacts_trace.file.migrate!(ObjectStorage::Store::REMOTE)
logger.info("Transferred job trace of #{build.id} to object storage") build.job_artifacts_trace.file.migrate!(ObjectStorage::Store::REMOTE)
rescue => e
logger.error("Failed to transfer artifacts of #{build.id} with error: #{e.message}") logger.info("Transferred job trace of #{build.id} to object storage")
end rescue => e
logger.error("Failed to transfer artifacts of #{build.id} with error: #{e.message}")
end end
end end
end end
......
...@@ -19,11 +19,9 @@ unless Rails.env.production? ...@@ -19,11 +19,9 @@ unless Rails.env.production?
desc "GitLab | lint | Lint HAML files" desc "GitLab | lint | Lint HAML files"
task :haml do task :haml do
begin Rake::Task['haml_lint'].invoke
Rake::Task['haml_lint'].invoke rescue RuntimeError # The haml_lint tasks raise a RuntimeError
rescue RuntimeError # The haml_lint tasks raise a RuntimeError exit(1)
exit(1)
end
end end
desc "GitLab | lint | Run several lint checks" desc "GitLab | lint | Run several lint checks"
......
...@@ -2,49 +2,43 @@ desc "GitLab | Build internal ids for issues and merge requests" ...@@ -2,49 +2,43 @@ desc "GitLab | Build internal ids for issues and merge requests"
task migrate_iids: :environment do task migrate_iids: :environment do
puts 'Issues'.color(:yellow) puts 'Issues'.color(:yellow)
Issue.where(iid: nil).find_each(batch_size: 100) do |issue| Issue.where(iid: nil).find_each(batch_size: 100) do |issue|
begin issue.set_iid
issue.set_iid
if issue.update_attribute(:iid, issue.iid) if issue.update_attribute(:iid, issue.iid)
print '.' print '.'
else else
print 'F'
end
rescue
print 'F' print 'F'
end end
rescue
print 'F'
end end
puts 'done' puts 'done'
puts 'Merge Requests'.color(:yellow) puts 'Merge Requests'.color(:yellow)
MergeRequest.where(iid: nil).find_each(batch_size: 100) do |mr| MergeRequest.where(iid: nil).find_each(batch_size: 100) do |mr|
begin mr.set_iid
mr.set_iid
if mr.update_attribute(:iid, mr.iid) if mr.update_attribute(:iid, mr.iid)
print '.' print '.'
else else
print 'F'
end
rescue
print 'F' print 'F'
end end
rescue
print 'F'
end end
puts 'done' puts 'done'
puts 'Milestones'.color(:yellow) puts 'Milestones'.color(:yellow)
Milestone.where(iid: nil).find_each(batch_size: 100) do |m| Milestone.where(iid: nil).find_each(batch_size: 100) do |m|
begin m.set_iid
m.set_iid
if m.update_attribute(:iid, m.iid) if m.update_attribute(:iid, m.iid)
print '.' print '.'
else else
print 'F'
end
rescue
print 'F' print 'F'
end end
rescue
print 'F'
end end
puts 'done' puts 'done'
......
...@@ -43,11 +43,9 @@ module QA ...@@ -43,11 +43,9 @@ module QA
def create_new_file_from_template(file_name, template) def create_new_file_from_template(file_name, template)
click_element :new_file click_element :new_file
within_element(:template_list) do within_element(:template_list) do
begin click_on file_name
click_on file_name rescue Capybara::ElementNotFound
rescue Capybara::ElementNotFound raise ElementNotFound, %Q(Couldn't find file template named "#{file_name}". Please confirm that it is a valid option.)
raise ElementNotFound, %Q(Couldn't find file template named "#{file_name}". Please confirm that it is a valid option.)
end
end end
wait(reload: false) do wait(reload: false) do
......
...@@ -79,15 +79,13 @@ module GitalyTest ...@@ -79,15 +79,13 @@ module GitalyTest
socket = read_socket_path socket = read_socket_path
Integer(timeout / delay).times do Integer(timeout / delay).times do
begin UNIXSocket.new(socket)
UNIXSocket.new(socket) puts ' OK'
puts ' OK'
return
return rescue Errno::ENOENT, Errno::ECONNREFUSED
rescue Errno::ENOENT, Errno::ECONNREFUSED print '.'
print '.' sleep delay
sleep delay
end
end end
puts ' FAILED' puts ' FAILED'
......
...@@ -12,11 +12,9 @@ module SimpleCov ...@@ -12,11 +12,9 @@ module SimpleCov
def resultset_hashes def resultset_hashes
resultset_files.map do |path| resultset_files.map do |path|
begin JSON.parse(File.read(path))
JSON.parse(File.read(path)) rescue
rescue {}
{}
end
end end
end end
......
...@@ -172,10 +172,8 @@ describe Gitlab::BackgroundMigration::DeserializeMergeRequestDiffsAndCommits, :m ...@@ -172,10 +172,8 @@ describe Gitlab::BackgroundMigration::DeserializeMergeRequestDiffsAndCommits, :m
let(:exception) { ActiveRecord::RecordNotFound } let(:exception) { ActiveRecord::RecordNotFound }
let(:perform_ignoring_exceptions) do let(:perform_ignoring_exceptions) do
begin subject.perform(start_id, stop_id)
subject.perform(start_id, stop_id) rescue described_class::Error
rescue described_class::Error
end
end end
before do before do
......
...@@ -37,14 +37,12 @@ describe Gitlab::Git::RepositoryCleaner do ...@@ -37,14 +37,12 @@ describe Gitlab::Git::RepositoryCleaner do
let(:object_map) { Gitlab::HttpIO.new(url, object_map_data.size) } let(:object_map) { Gitlab::HttpIO.new(url, object_map_data.size) }
around do |example| around do |example|
begin tempfile.write(object_map_data)
tempfile.write(object_map_data) tempfile.close
tempfile.close
example.run example.run
ensure ensure
tempfile.unlink tempfile.unlink
end
end end
it 'removes internal references' do it 'removes internal references' do
......
...@@ -44,11 +44,9 @@ describe 'Puma' do ...@@ -44,11 +44,9 @@ describe 'Puma' do
end end
after(:all) do after(:all) do
begin WebMock.disable_net_connect!(allow_localhost: true)
WebMock.disable_net_connect!(allow_localhost: true) Process.kill('TERM', @puma_master_pid)
Process.kill('TERM', @puma_master_pid) rescue Errno::ESRCH
rescue Errno::ESRCH
end
end end
def wait_puma_boot!(master_pid, ready_file) def wait_puma_boot!(master_pid, ready_file)
......
...@@ -128,10 +128,8 @@ describe Projects::DestroyService do ...@@ -128,10 +128,8 @@ describe Projects::DestroyService do
it 'keeps project team intact upon an error' do it 'keeps project team intact upon an error' do
perform_enqueued_jobs do perform_enqueued_jobs do
begin destroy_project(project, user, {})
destroy_project(project, user, {}) rescue ::Redis::CannotConnectError
rescue ::Redis::CannotConnectError
end
end end
expect(project.team.members.count).to eq 2 expect(project.team.members.count).to eq 2
......
...@@ -18,12 +18,10 @@ module GraphqlHelpers ...@@ -18,12 +18,10 @@ module GraphqlHelpers
# Runs a block inside a BatchLoader::Executor wrapper # Runs a block inside a BatchLoader::Executor wrapper
def batch(max_queries: nil, &blk) def batch(max_queries: nil, &blk)
wrapper = proc do wrapper = proc do
begin BatchLoader::Executor.ensure_current
BatchLoader::Executor.ensure_current yield
yield ensure
ensure BatchLoader::Executor.clear_current
BatchLoader::Executor.clear_current
end
end end
if max_queries if max_queries
......
...@@ -23,15 +23,13 @@ module StubObjectStorage ...@@ -23,15 +23,13 @@ module StubObjectStorage
Fog.mock! Fog.mock!
::Fog::Storage.new(connection_params).tap do |connection| ::Fog::Storage.new(connection_params).tap do |connection|
begin connection.directories.create(key: remote_directory)
connection.directories.create(key: remote_directory)
# Cleanup remaining files # Cleanup remaining files
connection.directories.each do |directory| connection.directories.each do |directory|
directory.files.map(&:destroy) directory.files.map(&:destroy)
end
rescue Excon::Error::Conflict
end end
rescue Excon::Error::Conflict
end end
end end
......
...@@ -202,12 +202,10 @@ module TestEnv ...@@ -202,12 +202,10 @@ module TestEnv
socket = Gitlab::GitalyClient.address('default').sub('unix:', '') socket = Gitlab::GitalyClient.address('default').sub('unix:', '')
Integer(sleep_time / sleep_interval).times do Integer(sleep_time / sleep_interval).times do
begin Socket.unix(socket)
Socket.unix(socket) return
return rescue
rescue sleep sleep_interval
sleep sleep_interval
end
end end
raise "could not connect to gitaly at #{socket.inspect} after #{sleep_time} seconds" raise "could not connect to gitaly at #{socket.inspect} after #{sleep_time} seconds"
......
Markdown is supported
0%
or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment