Avoid exception in Gitea project comments import due to undefined `:url`
What does this MR do and why?
Fix an import failure during gitea project imports, that happens on some comments creation and stop the full import process. This failure seems to happens on comments containing a link in the text, but I'm not 100% certain of this assertion. However, the patch fix the issue and solve the problem, allowing a full project import
Details
Avoid exception in Gitea project comments import due to undefined :url
use :html_url
instead of :url
as :url
is not defined
"meta.root_caller_id": "Import::GiteaController#create",
"exception.class": "NoMethodError",
"exception.message": "undefined method `gsub' for nil:NilClass\n\n content.gsub(URI_REGEXP) do |url|\n ^^^^^",
"exception.backtrace": [
"lib/gitlab/url_sanitizer.rb:37:in `sanitize'",
"lib/gitlab/legacy_github_import/importer.rb:257:in `rescue in block (2 levels) in create_comments'",
"lib/gitlab/legacy_github_import/importer.rb:239:in `block (2 levels) in create_comments'",
"lib/gitlab/legacy_github_import/importer.rb:238:in `each'",
"lib/gitlab/legacy_github_import/importer.rb:238:in `block in create_comments'",
"lib/gitlab/legacy_github_import/importer.rb:237:in `create_comments'",
"lib/gitlab/legacy_github_import/importer.rb:230:in `block in import_comments'",
"lib/gitlab/legacy_github_import/importer.rb:317:in `block in fetch_resources'",
Exception log
{
"severity": "ERROR",
"time": "2024-02-19T16:57:22.867Z",
"correlation_id": "01HQ14S6DA5Z1YRSJJP2GZSC4Z",
"meta.caller_id": "RepositoryImportWorker",
"meta.remote_ip": "xx.xxx.xx.xxx",
"meta.feature_category": "importers",
"meta.user": "root",
"meta.user_id": 1,
"meta.project": "root/test-bigup",
"meta.root_namespace": "root",
"meta.client_id": "user/1",
"meta.root_caller_id": "Import::GiteaController#create",
"exception.class": "NoMethodError",
"exception.message": "undefined method `gsub' for nil:NilClass\n\n content.gsub(URI_REGEXP) do |url|\n ^^^^^",
"exception.backtrace": [
"lib/gitlab/url_sanitizer.rb:37:in `sanitize'",
"lib/gitlab/legacy_github_import/importer.rb:257:in `rescue in block (2 levels) in create_comments'",
"lib/gitlab/legacy_github_import/importer.rb:239:in `block (2 levels) in create_comments'",
"lib/gitlab/legacy_github_import/importer.rb:238:in `each'",
"lib/gitlab/legacy_github_import/importer.rb:238:in `block in create_comments'",
"lib/gitlab/legacy_github_import/importer.rb:237:in `create_comments'",
"lib/gitlab/legacy_github_import/importer.rb:230:in `block in import_comments'",
"lib/gitlab/legacy_github_import/importer.rb:317:in `block in fetch_resources'",
"lib/gitlab/legacy_github_import/client.rb:155:in `request'",
"lib/gitlab/legacy_github_import/client.rb:66:in `method_missing'",
"lib/gitlab/legacy_github_import/importer.rb:316:in `public_send'",
"lib/gitlab/legacy_github_import/importer.rb:316:in `fetch_resources'",
"lib/gitlab/legacy_github_import/importer.rb:224:in `import_comments'",
"lib/gitlab/legacy_github_import/importer.rb:55:in `execute'",
"app/services/projects/import_service.rb:143:in `import_data'",
"app/services/projects/import_service.rb:27:in `execute'",
"app/workers/repository_import_worker.rb:24:in `perform'",
"lib/gitlab/sidekiq_middleware/skip_jobs.rb:49:in `call'",
"lib/gitlab/database/load_balancing/sidekiq_server_middleware.rb:29:in `call'",
"lib/gitlab/sidekiq_middleware/duplicate_jobs/strategies/until_executing.rb:16:in `perform'",
"lib/gitlab/sidekiq_middleware/duplicate_jobs/duplicate_job.rb:44:in `perform'",
"lib/gitlab/sidekiq_middleware/duplicate_jobs/server.rb:8:in `call'",
"lib/click_house/migration_support/sidekiq_middleware.rb:7:in `call'",
"lib/gitlab/sidekiq_middleware/pause_control/strategies/base.rb:31:in `perform'",
"lib/gitlab/sidekiq_middleware/pause_control/strategy_handler.rb:22:in `perform'",
"lib/gitlab/sidekiq_middleware/pause_control/server.rb:8:in `call'",
"lib/gitlab/sidekiq_middleware/worker_context.rb:9:in `wrap_in_optional_context'",
"lib/gitlab/sidekiq_middleware/worker_context/server.rb:19:in `block in call'",
"lib/gitlab/application_context.rb:130:in `block in use'",
"lib/gitlab/application_context.rb:130:in `use'",
"lib/gitlab/application_context.rb:64:in `with_context'",
"lib/gitlab/sidekiq_middleware/worker_context/server.rb:17:in `call'",
"lib/gitlab/sidekiq_status/server_middleware.rb:7:in `call'",
"lib/gitlab/sidekiq_versioning/middleware.rb:9:in `call'",
"lib/gitlab/sidekiq_middleware/query_analyzer.rb:7:in `block in call'",
"lib/gitlab/database/query_analyzer.rb:37:in `within'",
"lib/gitlab/sidekiq_middleware/query_analyzer.rb:7:in `call'",
"lib/gitlab/sidekiq_middleware/admin_mode/server.rb:14:in `call'",
"lib/gitlab/sidekiq_middleware/instrumentation_logger.rb:9:in `call'",
"lib/gitlab/sidekiq_middleware/batch_loader.rb:7:in `call'",
"lib/gitlab/sidekiq_middleware/extra_done_log_metadata.rb:7:in `call'",
"lib/gitlab/sidekiq_middleware/request_store_middleware.rb:8:in `block in call'",
"lib/gitlab/sidekiq_middleware/request_store_middleware.rb:7:in `call'",
"lib/gitlab/sidekiq_middleware/server_metrics.rb:105:in `block in call'",
"lib/gitlab/sidekiq_middleware/server_metrics.rb:133:in `block in instrument'",
"lib/gitlab/metrics/background_transaction.rb:33:in `run'",
"lib/gitlab/sidekiq_middleware/server_metrics.rb:133:in `instrument'",
"lib/gitlab/sidekiq_middleware/server_metrics.rb:104:in `call'",
"lib/gitlab/sidekiq_middleware/monitor.rb:10:in `block in call'",
"lib/gitlab/sidekiq_daemon/monitor.rb:46:in `within_job'",
"lib/gitlab/sidekiq_middleware/monitor.rb:9:in `call'",
"lib/gitlab/sidekiq_middleware/size_limiter/server.rb:13:in `call'",
"lib/gitlab/sidekiq_logging/structured_logger.rb:21:in `call'"
],
"exception.cause_class": "ActiveRecord::RecordInvalid",
"user.username": "root",
"tags.program": "sidekiq",
"tags.locale": "en",
"tags.feature_category": "importers",
"tags.correlation_id": "01HQ14S6DA5Z1YRSJJP2GZSC4Z",
"extra.sidekiq": {
"retry": false,
"queue": "default",
"version": 0,
"backtrace": 5,
"dead": false,
"status_expiration": 86400,
"args": [
"1613"
],
"class": "RepositoryImportWorker",
"jid": "50efe5d9b146a3e54da63583",
"created_at": 1708361817.7725816,
"correlation_id": "01HQ14S6DA5Z1YRSJJP2GZSC4Z",
"meta.caller_id": "Import::GiteaController#create",
"meta.remote_ip": "xx.xxx.xx.xxx",
"meta.feature_category": "importers",
"meta.user": "root",
"meta.user_id": 1,
"meta.project": "root/test-bigup",
"meta.root_namespace": "root",
"meta.client_id": "user/1",
"meta.root_caller_id": "Import::GiteaController#create",
"worker_data_consistency": "always",
"idempotency_key": "resque:gitlab:duplicate:default:6b96d2313655d4e96326b54af901ed4b18528db1e1e6e8d631546f5e7590ae6d",
"size_limiter": "validated",
"enqueued_at": 1708361817.7768738
},
"extra.import_type": "gitea",
"extra.project_id": 1613,
"extra.source": "Projects::ImportService",
"extra.external_identifiers": {}
}