diff --git a/updater/lib/dependabot/api_client.rb b/updater/lib/dependabot/api_client.rb index ca5c0b34c61..e84c47cc74f 100644 --- a/updater/lib/dependabot/api_client.rb +++ b/updater/lib/dependabot/api_client.rb @@ -88,11 +88,12 @@ def record_update_job_error(error_type:, error_details:) sleep(rand(3.0..10.0)) && retry end - def record_unknown_error(error_details:) + def record_unknown_error(error_type: "unknown", error_details:) api_url = "#{base_url}/update_jobs/#{job_id}/record_unknown_error" body = { data: { - "error-details": error_details + "error-type": error_type, + "error-details": error_details, } } response = http_client.post(api_url, json: body) diff --git a/updater/lib/dependabot/base_command.rb b/updater/lib/dependabot/base_command.rb index 95b7375fab7..952654ff1de 100644 --- a/updater/lib/dependabot/base_command.rb +++ b/updater/lib/dependabot/base_command.rb @@ -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_unknown_error(error_details: error_details) + service.record_unknown_error(error_type: "updater_error", error_details: error_details) service.increment_metric("updater.unknown_error", tags: { package_manager: job.package_manager, class_name: err.class.name diff --git a/updater/lib/dependabot/file_fetcher_command.rb b/updater/lib/dependabot/file_fetcher_command.rb index b4385636eb4..c32bf75fcb5 100644 --- a/updater/lib/dependabot/file_fetcher_command.rb +++ b/updater/lib/dependabot/file_fetcher_command.rb @@ -174,7 +174,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.record_unknown_error(error_type: "file_fetcher_error", error_details: { error: error }) service.capture_exception(error: error, job: job) { "error-type": "unknown_error" } end diff --git a/updater/lib/dependabot/service.rb b/updater/lib/dependabot/service.rb index 16e242c3f29..6dee41087ec 100644 --- a/updater/lib/dependabot/service.rb +++ b/updater/lib/dependabot/service.rb @@ -48,9 +48,9 @@ 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) + def record_unknown_error(error_type:, error_details:, dependency: nil) + @errors << [error_type.to_s, dependency] + client.record_unknown_error(error_type: error_type, error_details: error_details) end def update_dependency_list(dependency_snapshot:) diff --git a/updater/lib/dependabot/update_files_command.rb b/updater/lib/dependabot/update_files_command.rb index 444d39b8582..7fbefaf9cac 100644 --- a/updater/lib/dependabot/update_files_command.rb +++ b/updater/lib/dependabot/update_files_command.rb @@ -132,13 +132,16 @@ 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.record_unknown_error( + error_type: "update_files_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 diff --git a/updater/lib/dependabot/updater/error_handler.rb b/updater/lib/dependabot/updater/error_handler.rb index e63bab3ce9a..a4ed72044d4 100644 --- a/updater/lib/dependabot/updater/error_handler.rb +++ b/updater/lib/dependabot/updater/error_handler.rb @@ -59,7 +59,7 @@ def handle_dependency_error(error:, dependency:, dependency_group: nil) # Provides logging for errors that occur when processing a dependency def log_dependency_error(dependency:, error:, error_type:, error_detail: nil) - if error_type == "unknown_error" + if error_type == "unknown_error" && !Dependabot.enterprise? Dependabot.logger.error "Error processing #{dependency.name} (#{error.class.name})" log_unknown_error_with_backtrace(error, error_detail, dependency) else @@ -90,7 +90,7 @@ def handle_job_error(error:, dependency_group: nil) # Provides logging for errors that occur outside of a dependency context def log_job_error(error:, error_type:, error_detail: nil) - if error_type == "unknown_error" + if error_type == "unknown_error" && !Dependabot.enterprise? Dependabot.logger.error "Error processing job (#{error.class.name})" log_unknown_error_with_backtrace(error, error_detail) else @@ -215,7 +215,7 @@ def log_unknown_error_with_backtrace(error, error_detail, dependency = nil) dependency: dependency }.compact - service.record_unknown_error(error_details: details, dependency: dependency) + service.record_unknown_error(error_type: "unknown_error", error_details: details, dependency: dependency) service.increment_metric("updater.unknown_error", tags: { package_manager: job.package_manager, class_name: error.class.name