Skip to content

Commit

Permalink
Pass details to record_unknown_error
Browse files Browse the repository at this point in the history
  • Loading branch information
Nishnha committed Jul 7, 2023
1 parent b4aaa20 commit b7e69cb
Show file tree
Hide file tree
Showing 6 changed files with 46 additions and 4 deletions.
17 changes: 17 additions & 0 deletions updater/lib/dependabot/api_client.rb
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,23 @@ def record_update_job_error(error_type:, error_details:)
sleep(rand(3.0..10.0)) && retry
end

def record_unknown_error(error_details:)
api_url = "#{base_url}/update_jobs/#{job_id}/record_unknown_error"
body = {
data: {
"error-details": error_details
}
}
response = http_client.post(api_url, json: body)
raise ApiError, response.body if response.code >= 400
rescue HTTP::ConnectionError, OpenSSL::SSL::SSLError
retry_count ||= 0
retry_count += 1
raise if retry_count > 3

sleep(rand(3.0..10.0)) && retry
end

def mark_job_as_processed(base_commit_sha)
api_url = "#{base_url}/update_jobs/#{job_id}/mark_as_processed"
body = { data: { "base-commit-sha": base_commit_sha } }
Expand Down
2 changes: 1 addition & 1 deletion updater/lib/dependabot/base_command.rb
Original file line number Diff line number Diff line change
Expand Up @@ -65,7 +65,7 @@ def handle_exception(err)
err.backtrace.each { |line| Dependabot.logger.error(line) }

service.capture_exception(error: err, job: job)
service.record_update_job_error(error_type: "unknown_error", error_details: { message: err.message })
service.record_unknown_error(error_details: error_details)
service.increment_metric("updater.unknown_error", tags: {
package_manager: job.package_manager,
class_name: err.class.name,
Expand Down
1 change: 1 addition & 0 deletions updater/lib/dependabot/file_fetcher_command.rb
Original file line number Diff line number Diff line change
Expand Up @@ -177,6 +177,7 @@ def handle_file_fetcher_error(error)
Dependabot.logger.error(error.message)
error.backtrace.each { |line| Dependabot.logger.error line }

service.record_unknown_error(error_details: { "error": error })
service.capture_exception(error: error, job: job)
{ "error-type": "unknown_error" }
end
Expand Down
5 changes: 5 additions & 0 deletions updater/lib/dependabot/service.rb
Original file line number Diff line number Diff line change
Expand Up @@ -48,6 +48,11 @@ def record_update_job_error(error_type:, error_details:, dependency: nil)
client.record_update_job_error(error_type: error_type, error_details: error_details)
end

def record_unknown_error(error_details:, dependency: nil)
@errors << ["unknown_error", dependency]
client.record_unknown_error(error_details: error_details)
end

def update_dependency_list(dependency_snapshot:)
dependency_payload = dependency_snapshot.dependencies.map do |dep|
{
Expand Down
7 changes: 7 additions & 0 deletions updater/lib/dependabot/update_files_command.rb
Original file line number Diff line number Diff line change
Expand Up @@ -131,6 +131,13 @@ def handle_parser_error(error)
Dependabot.logger.error error.message
error.backtrace.each { |line| Dependabot.logger.error line }

service.record_unknown_error(error_details: {
"error": error,
"error-class": error.class.to_s,
"error-backtrace": error.backtrace,
"package-manager": job.package_manager,
"message": error.message,
})
service.capture_exception(error: error, job: job)

# Set an unknown error type to be added to the job
Expand Down
18 changes: 15 additions & 3 deletions updater/lib/dependabot/updater/error_handler.rb
Original file line number Diff line number Diff line change
Expand Up @@ -61,7 +61,7 @@ def handle_dependency_error(error:, dependency:, dependency_group: nil)
def log_dependency_error(dependency:, error:, error_type:, error_detail: nil)
if error_type == "unknown_error"
Dependabot.logger.error "Error processing #{dependency.name} (#{error.class.name})"
log_unknown_error_with_backtrace(error)
log_unknown_error_with_backtrace(error, error_detail, dependency)
else
Dependabot.logger.info(
"Handled error whilst updating #{dependency.name}: #{error_type} #{error_detail}"
Expand Down Expand Up @@ -92,7 +92,7 @@ def handle_job_error(error:, dependency_group: nil)
def log_job_error(error:, error_type:, error_detail: nil)
if error_type == "unknown_error"
Dependabot.logger.error "Error processing job (#{error.class.name})"
log_unknown_error_with_backtrace(error)
log_unknown_error_with_backtrace(error, error_detail)
else
Dependabot.logger.info(
"Handled error whilst processing job: #{error_type} #{error_detail}"
Expand Down Expand Up @@ -201,9 +201,21 @@ def error_details_for(error, dependency: nil, dependency_group: nil) # rubocop:d
end
end

def log_unknown_error_with_backtrace(error)
def log_unknown_error_with_backtrace(error, error_detail, dependency = nil)
Dependabot.logger.error error.message
error.backtrace.each { |line| Dependabot.logger.error line }

details = {
"error": error,
"error-detail": error_detail,
"error-class": error.class.name,
"error-backtrace": error.backtrace,
"package-manager": job.package_manager,
"message": error.message,
"dependency": dependency if dependency
}

service.record_unknown_error(error_details: details, dependency: dependency)
service.increment_metric("updater.unknown_error", tags: {
package_manager: job.package_manager,
class_name: error.class.name,
Expand Down

0 comments on commit b7e69cb

Please sign in to comment.